/**
*
*/
package vroom.common.heuristics;
import vroom.common.utilities.Constants;
import vroom.common.utilities.optimization.IMove;
/**
* <code>Move</code>
* <p>
* Creation date: Jun 18, 2010 - 1:28:36 PM
*
* @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 abstract class Move implements IMove {
/** the variation in the objective function resulting from this move **/
private double mImprovement;
/* (non-Javadoc)
* @see vroom.common.heuristics.IMove#getImprovement()
*/
@Override
public double getImprovement() {
return mImprovement;
}
/**
* Setter for <code>improvement</code>
*
* @param improvement
* the improvement to set
*/
@Override
public void setImprovement(double improvement) {
mImprovement = improvement;
}
/**
* Creates a new <code>Move</code> with an undefined improvement
*/
public Move() {
this(Double.NaN);
}
/**
* Creates a new <code>Move</code>
*
* @param improvement
* the improvement in the objective function resulting from this move
* @see #getImprovement()
*/
public Move(double improvement) {
mImprovement = improvement;
}
/* (non-Javadoc)
* @see vroom.common.heuristics.IMove#isImproving()
*/
@Override
public boolean isImproving() {
return Constants.isStrictlyPositive(getImprovement());
}
/* (non-Javadoc)
* @see vroom.common.heuristics.IMove#getMoveName()
*/
@Override
public abstract String getMoveName();
@Override
public int compareTo(IMove o) {
if (o == null)
throw new NullPointerException();
return Double.compare(getImprovement(), o.getImprovement());
}
}