docs: def calculate_fitness(self):
          """Calculcate your fitness."""
          if self.fitness is not None:
              raise Exception("You are calculating the fitness of agent {}, "
                              .format(self.id) +
                              "but they already have a fitness")
          infos = self.infos()
  
          said_blue = ([i for i in infos if
                        isinstance(i, Meme)][0].contents == "blue")
          proportion = float(
              max(State.query.filter_by(network_id=self.network_id).all(),
                  key=attrgetter('creation_time')).contents)
          self.proportion = proportion
          is_blue = proportion > 0.5
  
          if said_blue is is_blue:
              self.score = 1
          else:
              self.score = 0
  
          is_asocial = [
              i for i in infos if isinstance(i, LearningGene)
          ][0].contents == "asocial"
          e = 2
          b = 1
          c = 0.3 * b
          baseline = c + 0.0001
  
          self.fitness = (baseline + self.score * b - is_asocial * c) ** e