00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef MOEOPARETOOBJECTIVEVECTORCOMPARATOR_H_
00014 #define MOEOPARETOOBJECTIVEVECTORCOMPARATOR_H_
00015
00016 #include <comparator/moeoObjectiveVectorComparator.h>
00017
00021 template < class ObjectiveVector >
00022 class moeoParetoObjectiveVectorComparator : public moeoObjectiveVectorComparator < ObjectiveVector >
00023 {
00024 public:
00025
00031 const bool operator()(const ObjectiveVector & _objectiveVector1, const ObjectiveVector & _objectiveVector2)
00032 {
00033 bool dom = false;
00034 for (unsigned int i=0; i<ObjectiveVector::nObjectives(); i++)
00035 {
00036
00037 if ( fabs(_objectiveVector1[i] - _objectiveVector2[i]) > ObjectiveVector::Traits::tolerance() )
00038 {
00039
00040 if (ObjectiveVector::minimizing(i))
00041 {
00042 if (_objectiveVector1[i] > _objectiveVector2[i])
00043 {
00044 dom = true;
00045 }
00046 else
00047 {
00048 return false;
00049 }
00050 }
00051
00052 else if (ObjectiveVector::maximizing(i))
00053 {
00054 if (_objectiveVector1[i] > _objectiveVector2[i])
00055 {
00056 dom = true;
00057 }
00058 else
00059 {
00060 return false;
00061 }
00062 }
00063 }
00064 }
00065 return dom;
00066 }
00067
00068 };
00069
00070 #endif