Changed the single objective shortcut calculation
This commit is contained in:
parent
0f243e4d92
commit
94f0558d43
1 changed files with 17 additions and 7 deletions
|
|
@ -48,6 +48,11 @@ class eoNDSorting : public eoPerf2WorthCached<EOT, double>
|
||||||
|
|
||||||
/** implements fast nondominated sorting
|
/** implements fast nondominated sorting
|
||||||
*/
|
*/
|
||||||
|
class DummyEO : public EO<typename EOT::Fitness>
|
||||||
|
{
|
||||||
|
public: unsigned index;
|
||||||
|
};
|
||||||
|
|
||||||
void calculate_worths(const eoPop<EOT>& _pop)
|
void calculate_worths(const eoPop<EOT>& _pop)
|
||||||
{
|
{
|
||||||
value().resize(_pop.size());
|
value().resize(_pop.size());
|
||||||
|
|
@ -57,17 +62,23 @@ class eoNDSorting : public eoPerf2WorthCached<EOT, double>
|
||||||
if (traits::nObjectives() == 1)
|
if (traits::nObjectives() == 1)
|
||||||
{ // no need to do difficult sorting,
|
{ // no need to do difficult sorting,
|
||||||
|
|
||||||
|
eoPop<DummyEO> tmp_pop;
|
||||||
|
tmp_pop.resize(_pop.size());
|
||||||
|
|
||||||
|
// copy pop to dummy population (only need the fitnesses)
|
||||||
for (unsigned i = 0; i < _pop.size(); ++i)
|
for (unsigned i = 0; i < _pop.size(); ++i)
|
||||||
{
|
{
|
||||||
value()[i] = _pop[i].fitness()[0];
|
tmp_pop[i].fitness(_pop[i].fitness());
|
||||||
|
tmp_pop[i].index = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!traits::maximizing(0))
|
// sort it
|
||||||
|
tmp_pop.sort();
|
||||||
|
|
||||||
|
//
|
||||||
|
for (unsigned i = 0; i < _pop.size(); ++i)
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; i < value().size(); ++i)
|
value()[tmp_pop[i].index] = _pop.size() - i; // set rank
|
||||||
{
|
|
||||||
value()[i] = exp(-value()[i]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
@ -159,7 +170,6 @@ class eoNDSorting : public eoPerf2WorthCached<EOT, double>
|
||||||
value()[i] = max_fitness - value()[i];
|
value()[i] = max_fitness - value()[i];
|
||||||
assert(n[i] == 0);
|
assert(n[i] == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Reference in a new issue