def next_generation(self, mut_rate=<NUM_LIT:0>, max_mut_amt=<NUM_LIT:0>, log_base=<NUM_LIT:10>):
if self.__num_processes > <NUM_LIT:1>:<EOL><INDENT>process_pool = Pool(processes=self.__num_processes)<EOL>members = [m.get() for m in self.__members]<EOL><DEDENT>else:<EOL><INDENT>members = self.__members<EOL><DEDENT>if len(members) == <NUM_LIT:0>:<EOL><INDENT>raise Exception(<EOL>'<STR_LIT>'<EOL>)<EOL><DEDENT>selected_members = self.__select_fn(members)<EOL>reproduction_probs = list(reversed(logspace(<NUM_LIT:0.0>, <NUM_LIT:1.0>,<EOL>num=len(selected_members), base=log_base)))<EOL>reproduction_probs = reproduction_probs / sum(reproduction_probs)<EOL>self.__members = []<EOL>for _ in range(self.__pop_size):<EOL><INDENT>parent_1 = nrandom.choice(selected_members, p=reproduction_probs)<EOL>parent_2 = nrandom.choice(selected_members, p=reproduction_probs)<EOL>feed_dict = {}<EOL>for param in self.__parameters:<EOL><INDENT>which_parent = uniform(<NUM_LIT:0>, <NUM_LIT:1>)<EOL>if which_parent < <NUM_LIT:0.5>:<EOL><INDENT>feed_dict[param.name] = parent_1.parameters[param.name]<EOL><DEDENT>else:<EOL><INDENT>feed_dict[param.name] = parent_2.parameters[param.name]<EOL><DEDENT>feed_dict[param.name] = self.__mutate_parameter(<EOL>feed_dict[param.name], param, mut_rate, max_mut_amt<EOL>)<EOL><DEDENT>if self.__num_processes > <NUM_LIT:1>:<EOL><INDENT>self.__members.append(process_pool.apply_async(<EOL>self._start_process,<EOL>[self.__cost_fn, feed_dict, self.__cost_fn_args])<EOL>)<EOL><DEDENT>else:<EOL><INDENT>self.__members.append(<EOL>Member(<EOL>feed_dict,<EOL>self.__cost_fn(feed_dict, self.__cost_fn_args)<EOL>)<EOL>)<EOL><DEDENT><DEDENT>if self.__num_processes > <NUM_LIT:1>:<EOL><INDENT>process_pool.close()<EOL>process_pool.join()<EOL><DEDENT>self.__determine_best_member()<EOL>
Generates the next population from a previously evaluated generation

        Args:
            mut_rate (float): mutation rate for new members (0.0 - 1.0)
            max_mut_amt (float): how much the member is allowed to mutate
                (0.0 - 1.0, proportion change of mutated parameter)
            log_base (int): the higher this number, the more likely the first
                Members (chosen with supplied selection function) are chosen
                as parents for the next generation