Kpid = chromosome.get_params() pid.set_params(Kpid) for c in range(chromosome.get_count()): pid.clear() pendulum.reset(upper=np.pi / 4) response = [] for k in range(Iteration): th = pendulum.get('th') response.append(th) pid.run(th, k) cout = pid.get_control_out() cout = np.clip(cout, -max_torque, max_torque) pendulum.apply(cout) temp_fitness = genetics.calc_fitness(response) chromosome.add_fitness(temp_fitness) genetics.update_genscore(chromosome.get_fitness()) if chromosome.get_fitness() > genetics.get_local_best_fitness(): genetics.set_local_best(chromosome) if chromosome.get_fitness() > genetics.get_global_best_fitness(): genetics.set_global_best(chromosome) genetics.update_averages() genetics.natural_selection() genetics.generate()