From 6fc4d043e084bbc88392d9224579f858da0c03ae Mon Sep 17 00:00:00 2001 From: liefooga Date: Tue, 25 Jun 2013 16:28:25 +0200 Subject: [PATCH] fast computation of dominance-depth corrected for minimizing objectives --- .../moeoDominanceDepthFitnessAssignment.h | 16 +++++++++++++++- .../t-moeoDominanceDepthFitnessAssignment.cpp | 10 +++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/moeo/src/fitness/moeoDominanceDepthFitnessAssignment.h b/moeo/src/fitness/moeoDominanceDepthFitnessAssignment.h index b07b6b7a1..6aad16fe2 100644 --- a/moeo/src/fitness/moeoDominanceDepthFitnessAssignment.h +++ b/moeo/src/fitness/moeoDominanceDepthFitnessAssignment.h @@ -155,7 +155,10 @@ private: */ bool operator()(const MOEOT & _moeo1, const MOEOT & _moeo2) { - return cmp(_moeo2.objectiveVector(), _moeo1.objectiveVector()); + if (MOEOT::ObjectiveVector::maximizing(0)) + return cmp(_moeo2.objectiveVector(), _moeo1.objectiveVector()); + else + return cmp(_moeo1.objectiveVector(), _moeo2.objectiveVector()); } private: /** the corresponding comparator for objective vectors */ @@ -207,6 +210,17 @@ private: moeoPtrComparator cmp(objComparator); std::sort(sortedptrpop.begin(), sortedptrpop.end(), cmp); + + // + std::cout << std::endl << "sorted pop" << std::endl; + std::cout << "====================" << std::endl; + for(unsigned int i=0; i<_pop.size(); i++) + { + std::cout << i << " : " << (*sortedptrpop[i]) << std::endl; + } + std::cout << "====================" << std::endl; + // + // compute an upper bound on the second objective (1) double max_obj1 = std::numeric_limits::min(); for(unsigned int i=0; i<_pop.size(); i++) diff --git a/moeo/test/t-moeoDominanceDepthFitnessAssignment.cpp b/moeo/test/t-moeoDominanceDepthFitnessAssignment.cpp index 58a636769..71fae12dc 100644 --- a/moeo/test/t-moeoDominanceDepthFitnessAssignment.cpp +++ b/moeo/test/t-moeoDominanceDepthFitnessAssignment.cpp @@ -81,8 +81,8 @@ int main() obj3[1] = 5; obj4[0] = 5; obj4[1] = 1; - obj5[0] = 3; - obj5[1] = 3; + obj5[0] = 4; + obj5[1] = 4; // population eoPop < Solution > pop; @@ -97,6 +97,10 @@ int main() // fitness assignment moeoDominanceDepthFitnessAssignment< Solution > fitnessAssignment; fitnessAssignment(pop); + + for (unsigned int fun=0; fun