本文整理汇总了C++中Chromosome::swapGene方法的典型用法代码示例。如果您正苦于以下问题:C++ Chromosome::swapGene方法的具体用法?C++ Chromosome::swapGene怎么用?C++ Chromosome::swapGene使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Chromosome
的用法示例。
在下文中一共展示了Chromosome::swapGene方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Chromosome
Chromosome *LocalSearch::run ()
{
// Creates a random chromossome
std::vector <double> genes;
for (unsigned k = 0; k < historicalData->openBugList.size(); k++)
genes.push_back (rand_uniform());
// Calculate cost and chromossome size
Chromosome *chromosome = new Chromosome (historicalData, genes);
double costReference = chromosome->getCost();
int evaluations = 1;
// Hill Climbing local search
int size = chromosome->genes.size();
Chromosome *neighbour = chromosome->clone();
while (evaluations <= maxEvaluations)
{
int i = 0, j;
while (i < size && evaluations <= maxEvaluations)
{
for (j = i + 1; j < size && evaluations <= maxEvaluations; j++)
{
neighbour->swapGene(i, j);
neighbour->recalculateSchedule();
evaluations++;
if (neighbour->getCost() < costReference)
{
delete chromosome;
chromosome = neighbour;
costReference = neighbour->getCost();
neighbour = neighbour->clone();
break;
}
else
neighbour->swapGene (j, i);
}
i = j;
}
// Creates new random chromossome
genes.clear();
for (unsigned k = 0; k < historicalData->openBugList.size(); k++)
genes.push_back (rand_uniform());
// Calculate cost and chromossome size
delete neighbour;
neighbour = new Chromosome (historicalData, genes);
evaluations++;
if (neighbour->getCost() < costReference)
{
delete chromosome;
chromosome = neighbour;
costReference = neighbour->getCost();
neighbour = neighbour->clone();
}
}
return chromosome;
}