/**
*
*/
package vroom.common.heuristics;
import vroom.common.heuristics.vls.IVLSPertubation;
import vroom.common.heuristics.vls.IVLSState;
import vroom.common.utilities.optimization.IInstance;
import vroom.common.utilities.optimization.ILocalSearch;
import vroom.common.utilities.optimization.IMove;
import vroom.common.utilities.optimization.INeighborhood;
import vroom.common.utilities.optimization.IParameters;
import vroom.common.utilities.optimization.IPerturbation;
import vroom.common.utilities.optimization.ISolution;
/**
* <code>Identity</code> is a identity implementation of {@link ILocalSearch}, {@link IPerturbation} and
* {@link INeighborhood}
* <p>
* Creation date: 11 juil. 2010 - 20:44:22
*
* @author Victor Pillac, <a href="http://uniandes.edu.co">Universidad de Los Andes</a>-<a
* href="http://copa.uniandes.edu.co">Copa</a> <a href="http://www.emn.fr">Ecole des Mines de Nantes</a>-<a
* href="http://www.irccyn.ec-nantes.fr/irccyn/d/en/equipes/Slp">SLP</a>
* @version 1.0
*/
public class Identity<S extends ISolution> implements ILocalSearch<S>, IPerturbation<S>,
INeighborhood<S, Identity.IdentityMove>, IVLSPertubation<S> {
@SuppressWarnings("unchecked")
@Override
public S localSearch(IInstance instance, S solution, IParameters param) {
// Do nothing
return (S) solution.clone();
}
@Override
public void pertub(IInstance instance, S solution, IParameters parameters) {
// Do nothing
}
@Override
public boolean executeMove(S solution, IMove move) {
// Do nothing
return true;
}
@Override
public IdentityMove exploreNeighborhood(S solution, IParameters params) {
// Do nothing
return new IdentityMove();
}
@Override
public boolean localSearch(S solution, IParameters params) {
// Do nothing
return true;
}
/**
* <code>IdentityMove</code> is the move associated with the identity neighborhood.
*/
public static class IdentityMove extends Move {
public IdentityMove() {
super(0);
}
@Override
public String getMoveName() {
return "identity";
}
}
@Override
public void pertub(IVLSState<S> state, IInstance instance, S solution, IParameters params) {
// Do nothing
}
@Override
public String toString() {
return this.getClass().getSimpleName();
}
@Override
public void dispose() {
// Do nothing
}
@Override
public String getShortName() {
return "identity";
}
}