void DifferentialEvolution::initialize_population(RunManagerAbstract &run_manager, int d) { ostream &fout_restart = file_manager.get_ofstream("rst"); int iter = 0; RestartController::write_start_iteration(fout_restart, solver_type_name, iter, iter); Parameters ctl_pars; for (int i = 0; i < d; ++i) { ctl_pars.clear(); initialize_vector(ctl_pars); par_transform.ctl2model_ip(ctl_pars); run_manager.add_run(ctl_pars); } RestartController::write_upgrade_runs_built(fout_restart); // make innitial population vector model runs cout << endl; cout << " performing initial population model runs... "; cout.flush(); run_manager.run(); gen_1.copy(run_manager.get_runstorage_ref()); // get the best_run to track phi int r_status; int n_par = par_list.size(); best_phi = std::numeric_limits<double>::max(); Parameters tmp_pars; Observations tmp_obs; ModelRun tmp_run(obj_func_ptr); for (int i_run = 0; i_run < d; ++i_run) { bool r_status = gen_1.get_run(i_run, tmp_pars, tmp_obs); if (r_status > 0) { par_transform.model2ctl_ip(tmp_pars); tmp_run.update_ctl(tmp_pars, tmp_obs); double tmp_phi = tmp_run.get_phi(DynamicRegularization::get_unit_reg_instance()); if (tmp_phi < best_phi) { best_phi = tmp_phi; best_run_idx = i_run; } } } }