Example #1
0
void CGeneticSystem::stepGeneration(){
	//stepGeneration2();
	//return;
	std::vector<CChromo> newPopulation(m_populationSize*2);
	for(int i = 0; i < m_populationSize*2; i++)
	{
		CChromo p(m_noCitys , m_distMatrix);
		newPopulation[i] = p;
	}
    int newPopulationSize = 0;
    SortPopulation(m_ChromoPopulation,false);
    computeFitness();
    for(int i = 0; i < m_populationSize; i++)
	{
	  for(int j = 0; j < m_noCitys; j++)
		{
			int test = m_ChromoPopulation[i].getGene(j);
            newPopulation[i].setGene(j,test );
        }
        newPopulationSize++;
    }
    while(newPopulationSize < 2*m_populationSize)
	{
        int idx1 =0; //tournamentSelection();
		int idx2 =0; //tournamentSelection();
		while(idx1 == idx2)
		{
			idx2= tournamentSelection();
			idx1= tournamentSelection();
		}
		CChromo &pfather=m_ChromoPopulation[idx2];
		CChromo &pMother=m_ChromoPopulation[idx1];
        CChromo p_offspring1(m_noCitys,m_distMatrix) , p_offspring2(m_noCitys,m_distMatrix);
		pMother.crossover(&pfather, &p_offspring1, &p_offspring2);
		newPopulation[newPopulationSize] = p_offspring1;
        newPopulationSize++;
		if(newPopulationSize >= newPopulation.size())
            break;
        newPopulation[newPopulationSize] = p_offspring2;
        newPopulationSize++;

    }
    mutatePopulation(newPopulation);
    SortPopulation(newPopulation , true);  //ass
    for(int i = 0; i < m_populationSize-2; i++) //keep last best
	{
		m_ChromoPopulation[i] = newPopulation[i];
	}
    SortPopulation(m_ChromoPopulation , true);
    updateBestSoFarPath();
}
Example #2
0
bool MainWindow::Open()
{
    QString tempFileName = QFileDialog::getOpenFileName(this, tr("Open file"));
    if (!tempFileName.isEmpty())
    {
        QFile json(tempFileName);
        if(json.open(QIODevice::ReadOnly))
        {
            QJsonParseError  parseError;
            QJsonDocument jsonDoc = QJsonDocument::fromJson(json.readAll(), &parseError);
            if(parseError.error == QJsonParseError::NoError)
            {
                if(jsonDoc.isObject())
                {
                    m_model->Clear();
                    QJsonObject jsonObject = jsonDoc.object();
                    for (QJsonObject::Iterator iter = jsonObject.begin(); iter != jsonObject.end(); ++iter)
                    {
                        Population newPopulation(iter.key(), iter.value().toInt());
                        m_model->append(newPopulation);
                    }
                    m_fileName = tempFileName;
                    this->setWindowTitle(m_fileName);
                    ui->menuInsert->setEnabled(true);
                    m_isSomethingChanged  = false;
                }
            }else
            {
                json.close();
                return false;
            }
            json.close();
            m_stack->clear();
            return true;

        }else
        {
            return false;
        }
    }
    return true;
}
Example #3
0
std::vector<MMKPSolution> MMKP_BBA::runOneGeneration
(std::vector<MMKPSolution> population){
    
    //init initial parameters
    //init MMKPBatSolution vector
    std::vector<MMKPBatSolution> tempPopulation(population.size());
    for(int i=0;i<population.size();i++){
        tempPopulation[i].solution = population[i];
    }
    MMKP_BBA::quickSort(tempPopulation,0,(population.size()-1));
    MMKP_BBA::initBatParemeters(tempPopulation);
    MMKP_BBA::globalSearch(tempPopulation);
    
    std::vector<MMKPSolution> newPopulation(population.size());
    for(int i=0;i<population.size();i++){
        newPopulation[i] = tempPopulation[i].solution;
    }
    
    return newPopulation;
}
Example #4
0
void CGeneticSystem::stepGeneration2()
{
	std::vector<CChromo> newPopulation(m_populationSize*2);
	for(int i = 0; i < m_populationSize*2; i++)
	{
		CChromo p(m_noCitys , m_distMatrix);
		newPopulation[i] = p;
	}

	int newPopulationSize = 0;
	SortPopulation(m_ChromoPopulation , false);
	computeFitness();

	for(int i = 0; i < m_populationSize; i++)
	{
		for(int j = 0; j < m_noCitys; j++)
		{
			int test = m_ChromoPopulation[i].getGene(j);
			newPopulation[i].setGene(j,test );
		}
		newPopulationSize++;
	}
     

	while (newPopulationSize < 2*m_populationSize) 
	{
		int idx1 = tournamentSelection();
		int idx2 = tournamentSelection();
		CChromo offspring = m_ChromoPopulation[idx1].CrossOver2(&m_ChromoPopulation[idx2]);
		newPopulation[newPopulationSize] = offspring;
		newPopulationSize++;
	}
  	mutatePopulation(newPopulation);
	SortPopulation(newPopulation , true);
	for(int i = 0; i < m_populationSize; i++)
	{
		m_ChromoPopulation[i] = newPopulation[i];
	}
	SortPopulation(m_ChromoPopulation,true);
	updateBestSoFarPath();
}