From 6f6ce7d81a9546a7852cef57cfc281c7d10f7438 Mon Sep 17 00:00:00 2001 From: maartenkeijzer Date: Wed, 21 Mar 2001 11:09:29 +0000 Subject: [PATCH] test paretofitness class --- eo/test/t-eoParetoFitness.cpp | 82 +++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 eo/test/t-eoParetoFitness.cpp diff --git a/eo/test/t-eoParetoFitness.cpp b/eo/test/t-eoParetoFitness.cpp new file mode 100644 index 00000000..52c9c13e --- /dev/null +++ b/eo/test/t-eoParetoFitness.cpp @@ -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 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); +} \ No newline at end of file