git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1563 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
0662f1cc4e
commit
b4232bbce0
4 changed files with 63 additions and 57 deletions
|
|
@ -91,7 +91,7 @@ private:
|
||||||
_dest.back().flag(0);
|
_dest.back().flag(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (nextMove(move, _src) && (comparator( _src.objectiveVector(),objVec)));
|
while (nextMove(move, _src) && (!comparator( _src.objectiveVector(),objVec)));
|
||||||
if(!nextMove(move, _src))
|
if(!nextMove(move, _src))
|
||||||
_src.flag(1);
|
_src.flag(1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -132,3 +132,37 @@ public :
|
||||||
return objVec;
|
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;
|
||||||
|
} ;
|
||||||
|
|
|
||||||
|
|
@ -53,80 +53,52 @@
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
std::cout << "[moeoSubNeighborhoodExplorer]\n\n";
|
std::cout << "[moeoFirstImprovingNeighborhoodExplorer] => ";
|
||||||
|
|
||||||
// objective vectors
|
// objective vectors
|
||||||
ObjectiveVector obj0, obj1;
|
ObjectiveVector obj0;
|
||||||
obj0[0]=0;
|
obj0[0]=10;
|
||||||
obj0[1]=1;
|
obj0[1]=10;
|
||||||
obj1[0]=10;
|
|
||||||
obj1[1]=11;
|
|
||||||
eoPop < Solution > src;
|
eoPop < Solution > src;
|
||||||
eoPop < Solution > dest;
|
eoPop < Solution > dest;
|
||||||
std::vector < unsigned int > select;
|
std::vector < unsigned int > select;
|
||||||
src.resize(5);
|
src.resize(1);
|
||||||
src[2].objectiveVector(obj0);
|
src[0].objectiveVector(obj0);
|
||||||
src[4].objectiveVector(obj1);
|
|
||||||
src[0].flag(0);
|
src[0].flag(0);
|
||||||
src[1].flag(0);
|
|
||||||
src[2].flag(0);
|
|
||||||
src[3].flag(0);
|
|
||||||
src[4].flag(0);
|
|
||||||
dest.resize(0);
|
dest.resize(0);
|
||||||
select.resize(2);
|
select.resize(1);
|
||||||
select[0]=2;
|
select[0]=0;
|
||||||
select[1]=4;
|
|
||||||
|
|
||||||
testMoveInit init;
|
testMoveInit init;
|
||||||
testMoveNext next;
|
testMoveNext next;
|
||||||
testMoveIncrEval incr;
|
testMoveIncrEval4 incr;
|
||||||
|
testMoveIncrEval3 incr2;
|
||||||
|
|
||||||
moeoFirstImprovingNeighborhoodExplorer < testMove > explorer(init, next, incr);
|
moeoFirstImprovingNeighborhoodExplorer < testMove > explorer(init, next, incr);
|
||||||
|
|
||||||
explorer(src, select, dest);
|
explorer(src, select, dest);
|
||||||
assert(dest.size()==10);
|
|
||||||
|
assert(dest.size()==3);
|
||||||
assert(src[0].flag()==0);
|
assert(src[0].flag()==0);
|
||||||
assert(src[1].flag()==0);
|
for(int i=0 ; i< 3 ; i++)
|
||||||
assert(src[2].flag()==1);
|
|
||||||
assert(src[3].flag()==0);
|
|
||||||
assert(src[4].flag()==1);
|
|
||||||
for(int i=0 ; i< 10 ; i++)
|
|
||||||
assert(dest[i].flag()==0);
|
assert(dest[i].flag()==0);
|
||||||
assert(dest[0].objectiveVector()[0]==2);
|
assert(dest[0].objectiveVector()[0]==11);
|
||||||
assert(dest[1].objectiveVector()[1]==3);
|
assert(dest[0].objectiveVector()[1]==9);
|
||||||
assert(dest[2].objectiveVector()[0]==2);
|
assert(dest[1].objectiveVector()[0]==9);
|
||||||
assert(dest[3].objectiveVector()[1]==3);
|
assert(dest[1].objectiveVector()[1]==11);
|
||||||
assert(dest[4].objectiveVector()[0]==2);
|
assert(dest[2].objectiveVector()[0]==9);
|
||||||
|
assert(dest[2].objectiveVector()[1]==9);
|
||||||
|
|
||||||
assert(dest[5].objectiveVector()[0]==12);
|
moeoFirstImprovingNeighborhoodExplorer < testMove > explorer2(init, next, incr2);
|
||||||
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);
|
|
||||||
dest.resize(0);
|
dest.resize(0);
|
||||||
|
|
||||||
moeoFirstImprovingNeighborhoodExplorer < testMove > explorer2(init, next, incr);
|
|
||||||
|
|
||||||
explorer2(src, select, dest);
|
explorer2(src, select, dest);
|
||||||
assert(dest.size()==6);
|
assert(dest.size()==5);
|
||||||
assert(src[0].flag()==0);
|
assert(src[0].flag()==1);
|
||||||
assert(src[1].flag()==0);
|
for(int i=0 ; i< 5 ; i++){
|
||||||
assert(src[2].flag()==0);
|
|
||||||
assert(src[3].flag()==0);
|
|
||||||
assert(src[4].flag()==0);
|
|
||||||
for(int i=0 ; i< 6 ; i++)
|
|
||||||
assert(dest[i].flag()==0);
|
assert(dest[i].flag()==0);
|
||||||
assert(dest[0].objectiveVector()[0]==2);
|
assert(dest[i].objectiveVector()[0]==9);
|
||||||
assert(dest[1].objectiveVector()[1]==3);
|
assert(dest[i].objectiveVector()[1]==11);
|
||||||
assert(dest[2].objectiveVector()[0]==2);
|
}
|
||||||
|
|
||||||
assert(dest[3].objectiveVector()[0]==12);
|
|
||||||
assert(dest[4].objectiveVector()[1]==13);
|
|
||||||
assert(dest[5].objectiveVector()[0]==12);
|
|
||||||
|
|
||||||
|
|
||||||
std::cout << "OK" << std::endl;
|
std::cout << "OK" << std::endl;
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
std::cout << "[moeoSubNeighborhoodExplorer]\n\n";
|
std::cout << "[moeoSimpleSubNeighborhoodExplorer]\n\n";
|
||||||
|
|
||||||
// objective vectors
|
// objective vectors
|
||||||
ObjectiveVector obj0, obj1;
|
ObjectiveVector obj0, obj1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue