Merge branch 'master' of git+ssh://canape@scm.gforge.inria.fr//gitroot/paradiseo/paradiseo.git
This commit is contained in:
commit
1ceb9d6b7d
3 changed files with 34 additions and 11 deletions
|
|
@ -48,8 +48,9 @@ public:
|
||||||
* Constructor
|
* Constructor
|
||||||
* @param _monOp an eoMonOp (pertubation operator)
|
* @param _monOp an eoMonOp (pertubation operator)
|
||||||
* @param _fullEval a full evaluation function
|
* @param _fullEval a full evaluation function
|
||||||
|
* @param _nbPerturbation number of operator executions for perturbation
|
||||||
*/
|
*/
|
||||||
moMonOpPerturb(eoMonOp<EOT>& _monOp, eoEvalFunc<EOT>& _fullEval):monOp(_monOp), fullEval(_fullEval) {}
|
moMonOpPerturb(eoMonOp<EOT>& _monOp, eoEvalFunc<EOT>& _fullEval, unsigned int _nbPerturbation = 1):monOp(_monOp), fullEval(_fullEval), nbPerturbation(_nbPerturbation) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply monOp on the solution
|
* Apply monOp on the solution
|
||||||
|
|
@ -57,16 +58,22 @@ public:
|
||||||
* @return value of monOp
|
* @return value of monOp
|
||||||
*/
|
*/
|
||||||
bool operator()(EOT& _solution) {
|
bool operator()(EOT& _solution) {
|
||||||
bool res = monOp(_solution);
|
bool res = false;
|
||||||
_solution.invalidate();
|
|
||||||
fullEval(_solution);
|
for(unsigned int i = 0; i < nbPerturbation; i++)
|
||||||
return res;
|
res = res || monOp(_solution);
|
||||||
|
|
||||||
|
_solution.invalidate();
|
||||||
|
fullEval(_solution);
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/** monOp */
|
/** monOp */
|
||||||
eoMonOp<EOT>& monOp;
|
eoMonOp<EOT>& monOp;
|
||||||
eoEvalFunc<EOT>& fullEval;
|
eoEvalFunc<EOT>& fullEval;
|
||||||
|
unsigned int nbPerturbation;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -61,10 +61,10 @@ public:
|
||||||
int d;
|
int d;
|
||||||
int k;
|
int k;
|
||||||
|
|
||||||
unsigned i, j;
|
unsigned i = _neighbor.first();
|
||||||
|
unsigned j = _neighbor.second();
|
||||||
_neighbor.getIndices(n, i, j);
|
|
||||||
|
|
||||||
|
// _neighbor.getIndices(n, i, j);
|
||||||
d = (A[i][i]-A[j][j])*(B[_solution[j]][_solution[j]]-B[_solution[i]][_solution[i]]) +
|
d = (A[i][i]-A[j][j])*(B[_solution[j]][_solution[j]]-B[_solution[i]][_solution[i]]) +
|
||||||
(A[i][j]-A[j][i])*(B[_solution[j]][_solution[i]]-B[_solution[i]][_solution[j]]);
|
(A[i][j]-A[j][i])*(B[_solution[j]][_solution[i]]-B[_solution[i]][_solution[j]]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,22 @@ public:
|
||||||
index( _first + n * (n - 1) / 2 );
|
index( _first + n * (n - 1) / 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter of the firt location
|
||||||
|
* @return first indice
|
||||||
|
*/
|
||||||
|
unsigned int first() {
|
||||||
|
return indices.first;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter of the second location
|
||||||
|
* @return second indice
|
||||||
|
*/
|
||||||
|
unsigned int second() {
|
||||||
|
return indices.second;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::pair<unsigned int, unsigned int> indices;
|
std::pair<unsigned int, unsigned int> indices;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue