git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@1746 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
315ad014ce
commit
7e08ca9892
5 changed files with 175 additions and 8 deletions
|
|
@ -31,10 +31,84 @@ Contact: paradiseo-help@lists.gforge.inria.fr
|
|||
#include <cstdlib>
|
||||
#include <cassert>
|
||||
|
||||
#include <perturb/moRestartPerturb.h>
|
||||
#include <problems/permutation/moShiftNeighbor.h>
|
||||
#include <problems/eval/queenFullEval.h>
|
||||
|
||||
#include <eoInt.h>
|
||||
#include <eoInit.h>
|
||||
|
||||
typedef eoInt<unsigned int> QUEEN;
|
||||
|
||||
class dummyInit : public eoInit<QUEEN>
|
||||
{
|
||||
public:
|
||||
dummyInit(unsigned int _size):size(_size){}
|
||||
|
||||
void operator()(QUEEN& _sol){
|
||||
_sol.resize(0);
|
||||
for(unsigned int i=0; i<size; i++)
|
||||
_sol.push_back(i);
|
||||
_sol.invalidate();
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
unsigned int size;
|
||||
|
||||
};
|
||||
|
||||
int main(){
|
||||
|
||||
std::cout << "[t-moRestartPerturb] => START" << std::endl;
|
||||
|
||||
QUEEN queen;
|
||||
moShiftNeighbor<QUEEN> n;
|
||||
|
||||
dummyInit initializer(4);
|
||||
|
||||
queenFullEval<QUEEN> eval;
|
||||
|
||||
moRestartPerturb<moShiftNeighbor<QUEEN> > test(initializer, eval, 3);
|
||||
|
||||
queen.resize(4);
|
||||
queen[0]=1;
|
||||
queen[1]=2;
|
||||
queen[2]=0;
|
||||
queen[3]=3;
|
||||
|
||||
test.init(queen);
|
||||
|
||||
test(queen);
|
||||
assert(queen[0]==1 && queen[1]==2 && queen[2]==0 && queen[3]==3);
|
||||
test.update(queen,n); //first noMove
|
||||
test(queen);
|
||||
assert(queen[0]==1 && queen[1]==2 && queen[2]==0 && queen[3]==3);
|
||||
test.update(queen,n); //second noMove
|
||||
test(queen);
|
||||
assert(queen[0]==1 && queen[1]==2 && queen[2]==0 && queen[3]==3);
|
||||
test.update(queen,n); //third noMove
|
||||
test(queen);//here the perturb should be called
|
||||
assert(queen[0]==0 && queen[1]==1 && queen[2]==2 && queen[3]==3);
|
||||
|
||||
queen[0]=1;
|
||||
queen[1]=2;
|
||||
queen[2]=0;
|
||||
queen[3]=3;
|
||||
|
||||
//Retry the same test to verify counter is been reinit to 0
|
||||
|
||||
test(queen);
|
||||
assert(queen[0]==1 && queen[1]==2 && queen[2]==0 && queen[3]==3);
|
||||
test.update(queen,n); //first noMove
|
||||
test(queen);
|
||||
assert(queen[0]==1 && queen[1]==2 && queen[2]==0 && queen[3]==3);
|
||||
test.update(queen,n); //second noMove
|
||||
test(queen);
|
||||
assert(queen[0]==1 && queen[1]==2 && queen[2]==0 && queen[3]==3);
|
||||
test.update(queen,n); //third noMove
|
||||
test(queen); //here the perturb should be called
|
||||
assert(queen[0]==0 && queen[1]==1 && queen[2]==2 && queen[3]==3);
|
||||
|
||||
std::cout << "[t-moRestartPerturb] => OK" << std::endl;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue