git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1563 331e1502-861f-0410-8da2-ba01fb791d7f

This commit is contained in:
jhumeau 2009-03-19 16:24:28 +00:00
commit b4232bbce0
4 changed files with 63 additions and 57 deletions

View file

@ -91,7 +91,7 @@ private:
_dest.back().flag(0);
}
}
while (nextMove(move, _src) && (comparator( _src.objectiveVector(),objVec)));
while (nextMove(move, _src) && (!comparator( _src.objectiveVector(),objVec)));
if(!nextMove(move, _src))
_src.flag(1);
}

View file

@ -132,3 +132,37 @@ public :
return objVec;
}
} ;
class testMoveIncrEval4 : public moMoveIncrEval <testMove, ObjectiveVector>
{
public :
testMoveIncrEval4(unsigned int _counter=0):counter(_counter){};
ObjectiveVector operator () (const testMove & _move, const Solution & _solution)
{
ObjectiveVector objVec= _solution.objectiveVector();
switch (counter){
case 0:
objVec[0]++;
objVec[1]++;
break;
case 1:
objVec[0]++;
objVec[1]--;
break;
case 2:
objVec[0]--;
objVec[1]++;
break;
default:
objVec[0]--;
objVec[1]--;
break;
}
counter++;
return objVec;
}
private:
unsigned int counter;
} ;

View file

@ -53,80 +53,52 @@
int main()
{
std::cout << "[moeoSubNeighborhoodExplorer]\n\n";
std::cout << "[moeoFirstImprovingNeighborhoodExplorer] => ";
// objective vectors
ObjectiveVector obj0, obj1;
obj0[0]=0;
obj0[1]=1;
obj1[0]=10;
obj1[1]=11;
ObjectiveVector obj0;
obj0[0]=10;
obj0[1]=10;
eoPop < Solution > src;
eoPop < Solution > dest;
std::vector < unsigned int > select;
src.resize(5);
src[2].objectiveVector(obj0);
src[4].objectiveVector(obj1);
src.resize(1);
src[0].objectiveVector(obj0);
src[0].flag(0);
src[1].flag(0);
src[2].flag(0);
src[3].flag(0);
src[4].flag(0);
dest.resize(0);
select.resize(2);
select[0]=2;
select[1]=4;
select.resize(1);
select[0]=0;
testMoveInit init;
testMoveNext next;
testMoveIncrEval incr;
testMoveIncrEval4 incr;
testMoveIncrEval3 incr2;
moeoFirstImprovingNeighborhoodExplorer < testMove > explorer(init, next, incr);
explorer(src, select, dest);
assert(dest.size()==10);
assert(dest.size()==3);
assert(src[0].flag()==0);
assert(src[1].flag()==0);
assert(src[2].flag()==1);
assert(src[3].flag()==0);
assert(src[4].flag()==1);
for(int i=0 ; i< 10 ; i++)
for(int i=0 ; i< 3 ; i++)
assert(dest[i].flag()==0);
assert(dest[0].objectiveVector()[0]==2);
assert(dest[1].objectiveVector()[1]==3);
assert(dest[2].objectiveVector()[0]==2);
assert(dest[3].objectiveVector()[1]==3);
assert(dest[4].objectiveVector()[0]==2);
assert(dest[0].objectiveVector()[0]==11);
assert(dest[0].objectiveVector()[1]==9);
assert(dest[1].objectiveVector()[0]==9);
assert(dest[1].objectiveVector()[1]==11);
assert(dest[2].objectiveVector()[0]==9);
assert(dest[2].objectiveVector()[1]==9);
assert(dest[5].objectiveVector()[0]==12);
assert(dest[6].objectiveVector()[1]==13);
assert(dest[7].objectiveVector()[0]==12);
assert(dest[8].objectiveVector()[1]==13);
assert(dest[9].objectiveVector()[0]==12);
src[2].flag(0);
src[4].flag(0);
moeoFirstImprovingNeighborhoodExplorer < testMove > explorer2(init, next, incr2);
dest.resize(0);
moeoFirstImprovingNeighborhoodExplorer < testMove > explorer2(init, next, incr);
explorer2(src, select, dest);
assert(dest.size()==6);
assert(src[0].flag()==0);
assert(src[1].flag()==0);
assert(src[2].flag()==0);
assert(src[3].flag()==0);
assert(src[4].flag()==0);
for(int i=0 ; i< 6 ; i++)
assert(dest.size()==5);
assert(src[0].flag()==1);
for(int i=0 ; i< 5 ; i++){
assert(dest[i].flag()==0);
assert(dest[0].objectiveVector()[0]==2);
assert(dest[1].objectiveVector()[1]==3);
assert(dest[2].objectiveVector()[0]==2);
assert(dest[3].objectiveVector()[0]==12);
assert(dest[4].objectiveVector()[1]==13);
assert(dest[5].objectiveVector()[0]==12);
assert(dest[i].objectiveVector()[0]==9);
assert(dest[i].objectiveVector()[1]==11);
}
std::cout << "OK" << std::endl;
return EXIT_SUCCESS;

View file

@ -54,7 +54,7 @@
int main()
{
std::cout << "[moeoSubNeighborhoodExplorer]\n\n";
std::cout << "[moeoSimpleSubNeighborhoodExplorer]\n\n";
// objective vectors
ObjectiveVector obj0, obj1;