void Wrapper::run_single_individual(Individual& I){ Simulator Sim; Neural_Network NN; I.set_individual_params(isize_1, isize_2, imutate_mag_1, imutate_mag_2, imutate_amount_1, imutate_amount_2); // TODO - User inputs all weights. // TODO -Able to change how weights are generated, access to different random functions. I.build_individual(); // TODO - change Sim.initialize_sim(); NN.take_input_limits(Sim.currentstate.state_variables_LowLimit, Sim.currentstate.state_variables_UpLimit); NN.take_output_limits(Sim.currentstate.control_LowLimits, Sim.currentstate.control_UpLimits); NN.take_num_hidden_units(this->hidden_layer_size); /// repeated from initialize, but no harm. NN.take_num_controls(Sim.currentstate.num_of_controls); /// repeated from initialize, but to no harm. NN.take_weights(I.get_individual1(), I.get_individual2()); /// repeated from communication_from_EA, but to no harm. NN.communication_from_EA(I.get_individual1(), I.get_individual2()); while (Sim.t<Sim.tmax || Sim.lander.frame.at(1).s > Sim.lander.frame.at(1).target){ vector<double> action; action = NN.activation_function(Sim.currentstate.translate_function()); Sim.run_sim(action); NN.reset_neural_network(); // Do we want this?? } // fitness function from Sim // I.set_fit_rating( double ); // get phenotypes from Sim // I.set_phenotypes( double , double ); // ME.place_individual_in_map(I); }
//}; // -------------------------------------------------- void Wrapper::fill_MAP(){ int fill_gen = ME.get_fill_generation(); for (int g=0; g<fill_gen; g++){ /// create objects Individual I; Simulator Sim; Neural_Network NN; /// initialize individual I.set_individual_params(isize_1, isize_2, imutate_mag_1, imutate_mag_2, imutate_amount_1, imutate_amount_2); I.build_individual(); /// initialize NN. NN.initialize(this->hidden_layer_size, Sim.currentstate.num_of_controls); NN.communication_from_EA(I.get_individual1(), I.get_individual2()); Sim.initialize_sim(); NN.take_input_limits(Sim.currentstate.state_variables_LowLimit, Sim.currentstate.state_variables_UpLimit); NN.take_output_limits(Sim.currentstate.control_LowLimits, Sim.currentstate.control_UpLimits); NN.take_num_hidden_units(this->hidden_layer_size); /// repeated from initialize, but no harm. NN.take_num_controls(Sim.currentstate.num_of_controls); /// repeated from initialize, but to no harm. NN.take_weights(I.get_individual1(), I.get_individual2()); /// repeated from communication_from_EA, but to no harm. I.display_individual_size1(); I.display_individual_size2(); /// %%% /// %%% BEGIN SIMULATION LOOP %%% /// %%% /// while (Sim.t<Sim.tmax && Sim.lander.frame.at(1).s > Sim.lander.frame.at(1).target){ /// while the simulator still has time left on the clock /// AND /// the craft is above ground level: //NN.communication_from_simulator_deprecated(Sim.currentstate.translate_function(), Sim.currentstate.state_variables_UpLimit, Sim.currentstate.state_variables_LowLimit, hidden_layer_size, Sim.currentstate.num_of_controls, Sim.currentstate.control_UpLimits, Sim.currentstate.control_LowLimits); //vector<double> SPOT(2); // NN.activation_function_deprecated( // Sim.currentstate.translate_function(), // Sim.currentstate.state_variables_UpLimit, // Sim.currentstate.state_variables_LowLimit, // hidden_layer_size, // Sim.currentstate.num_of_controls, // Sim.currentstate.control_UpLimits, // Sim.currentstate.control_LowLimits, // I.get_individual1(), // I.get_individual2(), // SPOT // ); //cout << "Time: " << Sim.t << endl; vector<double> action = NN.activation_function(Sim.currentstate.translate_function()); //vector<double> activation_function(vector<double> state); //void take_input_limits(vector<double> lower, vector<double> upper); //void take_output_limits(vector<double> lower, vector<double> upper); //void take_num_hidden_units(int num_hidden); //void take_num_controls(int num_controls); //void take_weights(vector<double> in_to_hid, vector<double> hid_to_out); Sim.run_sim(action); NN.reset_neural_network(); // Do we want this?? } /// %%% /// %%% END SIMULATION LOOP %%% /// %%% /// // fitness function from Sim // I.set_fit_rating( double ); // get phenotypes from Sim // I.set_phenotypes( double , double ); // ME.place_individual_in_map(I); } }