Add the notion of currentNeighbor in the moSimpleHCexplorer

git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@2539 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
verel 2011-12-06 10:55:36 +00:00
commit e06a16213d
3 changed files with 11 additions and 11 deletions

View file

@ -52,6 +52,7 @@ public:
using moNeighborhoodExplorer<Neighbor>::neighborhood;
using moNeighborhoodExplorer<Neighbor>::eval;
using moNeighborhoodExplorer<Neighbor>::currentNeighbor;
/**
* Constructor
@ -62,14 +63,12 @@ public:
*/
moFirstImprHCexplorer(Neighborhood& _neighborhood, moEval<Neighbor>& _eval, moNeighborComparator<Neighbor>& _neighborComparator, moSolNeighborComparator<Neighbor>& _solNeighborComparator) : moNeighborhoodExplorer<Neighbor>(_neighborhood, _eval), neighborComparator(_neighborComparator), solNeighborComparator(_solNeighborComparator) {
isAccept = false;
current=new Neighbor();
}
/**
* Destructor
*/
~moFirstImprHCexplorer() {
delete current;
}
/**

View file

@ -134,7 +134,7 @@ protected:
bool isMoved;
// the current neighbor of the exploration : common features of algorithm
Neighbor currentNeighbor
Neighbor currentNeighbor;
};
#endif

View file

@ -52,6 +52,7 @@ public:
using moNeighborhoodExplorer<Neighbor>::neighborhood;
using moNeighborhoodExplorer<Neighbor>::eval;
using moNeighborhoodExplorer<Neighbor>::currentNeighbor;
/**
* Constructor
@ -96,23 +97,23 @@ public:
//Test if _solution has a Neighbor
if (neighborhood.hasNeighbor(_solution)) {
//init the first neighbor
neighborhood.init(_solution, current);
neighborhood.init(_solution, currentNeighbor);
//eval the _solution moved with the neighbor and stock the result in the neighbor
eval(_solution, current);
eval(_solution, currentNeighbor);
//initialize the best neighbor
best = current;
best = currentNeighbor;
//test all others neighbors
while (neighborhood.cont(_solution)) {
//next neighbor
neighborhood.next(_solution, current);
neighborhood.next(_solution, currentNeighbor);
//eval
eval(_solution, current);
eval(_solution, currentNeighbor);
//if we found a better neighbor, update the best
if (neighborComparator(best, current)) {
best = current;
if (neighborComparator(best, currentNeighbor)) {
best = currentNeighbor;
}
}
@ -172,7 +173,7 @@ private:
// the best and the current neighbor
Neighbor best;
Neighbor current;
// Neighbor current;
// true if the move is accepted
bool isAccept ;