def select_spouse(self, potential_spouses):
     if not potential_spouses:
         return None
     attractions = [
         self.sexual_attraction(spouse) for spouse in potential_spouses
     ]
     return potential_spouses[utils.dist_selection(
         utils.normalize_dist(attractions))]
Beispiel #2
0
 def decide(self, state):
     eps = max(
         ConfigBrain.BASE_EPSILON,
         1 - (self._age /
              (self.learning_frequency() * ConfigBiology.MATURITY_AGE)))
     brain_actions_prob = self.brain().think(state)
     action_prob = utils.normalize_dist(self.fitrah() + brain_actions_prob)
     decision = utils.epsilon_greedy(eps, action_prob)
     return decision
Beispiel #3
0
 def mutate_dna(dna):
     memory_size = max(10, int(dna.memory_size()) + randint(-1, 1))
     learning_rate = max(
         np.random.normal(loc=dna.learning_rate(), scale=0.001), 1e-6)
     brain_structure_param = max(
         2,
         dna.brain_structure_param() + randint(-1, +1))
     learning_frequency = max(dna.learning_frequency() + randint(-1, 1), 1)
     life_expectancy = max(0, dna.life_expectancy() + randint(-10, 10))
     reward_discount = max(
         0.1, min(1, np.random.normal(loc=dna.reward_discount(),
                                      scale=0.1)))
     fitrah = utils.normalize_dist(
         dna.fitrah() +
         np.random.normal(loc=0,
                          scale=ConfigBiology.EVOLUTION_MUTATION_STD,
                          size=dna.fitrah().size))
     return DNA(memory_size, learning_rate, brain_structure_param,
                learning_frequency, life_expectancy, reward_discount,
                fitrah)
Beispiel #4
0
 def race_fitrah():
     return utils.normalize_dist(Human.Fitrah)
Beispiel #5
0
 def race_fitrah():
     return utils.normalize_dist(Zombie.Fitrah)
Beispiel #6
0
 def decide(self, state):
     brain_actions_prob = self._brain.think(state)
     action_prob = utils.normalize_dist(
         brain_actions_prob)  # + self.fitrah()
     decision = utils.epsilon_greedy(0, dist=action_prob)
     return decision
Beispiel #7
0
 def race_fitrah():
     return utils.normalize_dist(Bacterium.Fitrah)