def gather_info(self): """Gather information from all the agents.""" diversity = np.ones(len(self.agents)) exploration = np.ones(len(self.agents)) foraging = np.ones(len(self.agents)) fittest = np.ones(len(self.agents)) for id in range(len(self.agents)): diversity[id] = self.agents[id].diversity_fitness exploration[id] = self.agents[id].exploration_fitness() foraging[id] = self.agents[id].food_collected fittest[id] = self.agents[id].individual[0].fitness beta = self.agents[-1].beta mean = Best( self.pname, self.connect, self.sn, 1, 'MEAN', self.stepcnt, beta, np.mean(fittest), np.mean(diversity), np.mean(exploration), np.mean(foraging), "None" ) mean.save() std = Best( self.pname, self.connect, self.sn, 1, 'STD', self.stepcnt, beta, np.std(fittest), np.std(diversity), np.std(exploration), np.std(foraging), "None" ) std.save() # Compute best agent for each fitness self.best_agents(diversity, beta, "DIVERSE") self.best_agents(exploration, beta, "EXPLORE") self.best_agents(foraging, beta, "FORGE") self.best_agents(fittest, beta, "OVERALL") return np.argmax(foraging)
def best_agents(self, data, beta, header): """Find the best agents in each category.""" idx = np.argmax(data) dfitness = self.agents[idx].diversity_fitness ofitness = self.agents[idx].individual[0].fitness ffitness = self.agents[idx].food_collected efitness = self.agents[idx].exploration_fitness() phenotype = self.agents[idx].individual[0].phenotype best_agent = Best(self.pname, self.connect, self.sn, idx, header, self.stepcnt, beta, ofitness, dfitness, efitness, ffitness, phenotype) best_agent.save()