int gen_dir_files(struct prjt* prj_p) { FILE* fp; gen_dir(prj_p); perror("mkdir"); if((errno != 0)&(errno != 17)) { return errno; } fp = gen_files(prj_p); perror("fopen"); if(fp == NULL) { return errno; } fclose(fp); return 0; }
// extends population size to lambda using mutations based on (lamda/mu) factor void es::create_pop(unsigned int gen) { try { boost::format gen_dir(eap::run_directory+"gen%04d"); boost::format input_path(eap::run_directory + "gen%04d/ind%09d"); boost::filesystem::create_directory(str(gen_dir % gen)); std::vector<individual_ptr> new_pop; if (gen != 0) { for (unsigned int i=0; i<m_mu; ++i) { new_pop.push_back(create_individual(str(input_path % gen % i) + "a%02d.nec", m_pop[i]->m_positions)); } } else if (gen == 0) { for (unsigned int i=0; i<m_mu; ++i) { new_pop.push_back(m_pop[i]); } } for (unsigned int i=0; i<m_mu; ++i) { unsigned int counter = 0; while (counter<m_mulambda_factor) { int id = m_mu + i*m_mulambda_factor + counter; std::vector<position_ptr> placements = mutate_pos_once(m_pop[i]->m_positions); new_pop.push_back(create_individual(str(input_path % gen % id) + "a%02d.nec", placements)); counter++; } } m_pop = new_pop; } catch (...) { throw; } }