package vroom.common.heuristics.vls; import vroom.common.utilities.optimization.IInstance; import vroom.common.utilities.optimization.ISolution; /** * The Class <code>SimpleAcceptationCriterion</code> implements an {@linkplain IVLSAcceptanceCriterion acceptance * criteria} that only accept solutions that improve the best fitness value. * <p> * Creation date: Apr 26, 2010 - 10:48:41 AM * * @author Victor Pillac * @version 1.0 */ public class SimpleAcceptanceCriterion implements IVLSAcceptanceCriterion { private final boolean mMinimization; /** * Instantiates a new simple acceptance criteria. */ public SimpleAcceptanceCriterion(VLSGlobalParameters params) { mMinimization = params.get(VLSGlobalParameters.OPTIMIZATION_DIRECTION) < 0; } @Override @SuppressWarnings({ "unchecked", "rawtypes" }) public boolean acceptSolution(IVLSState<?> state, IInstance instance, ISolution solution) { ISolution bestSol = state.getBestSolution(state.getCurrentPhase()); if (bestSol == null) { return true; } else if (solution == null) { return false; } else { double comp = ((Comparable) bestSol.getObjective()).compareTo(solution .getObjective()); return mMinimization ? comp >= 0 : comp <= 0; } } @Override public String toString() { return "improv"; } }// end SimpleAcceptationCriteria