test paretofitness class
This commit is contained in:
parent
3d82e6cddf
commit
6f6ce7d81a
1 changed files with 82 additions and 0 deletions
82
eo/test/t-eoParetoFitness.cpp
Normal file
82
eo/test/t-eoParetoFitness.cpp
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
#include "eoParetoFitness.h"
|
||||
|
||||
class MinimizingTraits : public eoParetoFitnessTraits
|
||||
{
|
||||
public :
|
||||
|
||||
static bool maximizing(int) { return false; }
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
typedef eoParetoFitness<> MaxFitness;
|
||||
typedef eoParetoFitness<MinimizingTraits> MinFitness;
|
||||
|
||||
MaxFitness f0;
|
||||
f0[0] = 0.0;
|
||||
f0[1] = 1.0;
|
||||
|
||||
MaxFitness f1;
|
||||
f1[0] = 1.0;
|
||||
f1[1] = 0.0;
|
||||
|
||||
MaxFitness f2;
|
||||
f2[0] = 0.0;
|
||||
f2[1] = 0.5;
|
||||
|
||||
// now f0 should dominate f2;
|
||||
|
||||
if (!f0.dominates(f2))
|
||||
{
|
||||
cout << f2 << " not dominated by " << f0;
|
||||
throw;
|
||||
}
|
||||
|
||||
// f0 and f1 should not dominate each other
|
||||
|
||||
if (f0.dominates(f1) || f1.dominates(f0))
|
||||
{
|
||||
cout << f0 << " and " << f1 << " dominate";
|
||||
throw;
|
||||
}
|
||||
|
||||
if (! (f0 == f0))
|
||||
{
|
||||
cout << "f0 == f0 failed" << endl;
|
||||
throw;
|
||||
}
|
||||
|
||||
// test ctors and such
|
||||
MaxFitness f3 = f0;
|
||||
f3[0] += 1e-9;
|
||||
|
||||
// test tolerance
|
||||
assert(f3 == f0);
|
||||
|
||||
MinFitness m0;
|
||||
MinFitness m1;
|
||||
MinFitness m2;
|
||||
MinFitness m3;
|
||||
|
||||
m0[0] = 0.0;
|
||||
m0[1] = 1.0;
|
||||
|
||||
m1[0] = 1.0;
|
||||
m1[1] = 0.0;
|
||||
|
||||
m2[0] = 0.0;
|
||||
m2[1] = 0.5;
|
||||
|
||||
m3[0] = 0.5;
|
||||
m3[1] = 0.5;
|
||||
|
||||
//m2 should dominate m0
|
||||
assert(m2.dominates(m0));
|
||||
|
||||
assert(!m1.dominates(m0));
|
||||
assert(!m0.dominates(m1));
|
||||
assert(!m0.dominates(m2)); // (m2 < m0));
|
||||
assert(m2.dominates(m3)); //m3 < m2);
|
||||
assert(!m3.dominates(m2)); // (m2 < m3));
|
||||
assert(m2.dominates(m3)); //m2 > m3);
|
||||
}
|
||||
Reference in a new issue