Ejemplo n.º 1
0
Archivo: gfile.c Proyecto: Er-Z/hERO
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;
}
Ejemplo n.º 2
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;
    }
}