code: def compute_spawn(adjusted_fitness, previous_sizes, pop_size, min_species_size):
          
          af_sum = sum(adjusted_fitness)
  
          spawn_amounts = []
          for af, ps in zip(adjusted_fitness, previous_sizes):
              if af_sum > 0:
                  s = max(min_species_size, af / af_sum * pop_size)
              else:
                  s = min_species_size
  
              d = (s - ps) * 0.5
              c = int(round(d))
              spawn = ps
              if abs(c) > 0:
                  spawn += c
              elif d > 0:
                  spawn += 1
              elif d < 0:
                  spawn -= 1
  
              spawn_amounts.append(spawn)
  
          # Normalize the spawn amounts so that the next generation is roughly
          # the population size requested by the user.
          total_spawn = sum(spawn_amounts)
          norm = pop_size / total_spawn
          spawn_amounts = [max(min_species_size, int(round(n * norm))) for n in spawn_amounts]
  
          return spawn_amounts
docs: Compute the proper number of offspring per species (proportional to fitness).