Пример #1
0
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);
}
Пример #2
0
//};
// --------------------------------------------------
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);
    }
}