/** * */ package vroom.common.heuristics.vns; import umontreal.iro.lecuyer.rng.RandomStream; import vroom.common.utilities.optimization.IHeuristicParameters; import vroom.common.utilities.optimization.IParameters; import vroom.common.utilities.optimization.IStoppingCriterion; import vroom.common.utilities.optimization.SimpleParameters; import vroom.common.utilities.optimization.SimpleStoppingCriterion; /** * <code>VNSParameters</code> is an extension of {@link SimpleParameters} for * the {@link VariableNeighborhoodSearch} * <p> * Creation date: 11 juil. 2010 - 21:06:06 * * @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 VNSParameters extends SimpleParameters implements IHeuristicParameters { private final IStoppingCriterion mStoppingCriterion; private final IParameters mLSParameters; private final IParameters mShakeParameters; /** * Define new <code>VNSParameters</code> * * @param vnsMaxTime * maximum time (in ms) for the vns * @param vnsMaxIt * maximum number of iterations for the vns * @param rndShake * <code>true</code> if the shake should be randomized * @param shakeMaxTime * maximum time (in ms) for the shake * @param shakeSampleSize * size of the sample when the shake is randomized * @param lsParameters * parameters for the local search * @param rndStream * the random stream that will be used in the VNS */ public VNSParameters(long vnsMaxTime, int vnsMaxIt, boolean rndShake, long shakeMaxTime, int shakeSampleSize, IParameters lsParameters, RandomStream rndStream) { super(vnsMaxTime, vnsMaxIt, true, rndShake, false, rndStream); mStoppingCriterion = new SimpleStoppingCriterion(vnsMaxTime, vnsMaxIt); mLSParameters = lsParameters; mShakeParameters = new SimpleParameters(shakeMaxTime, shakeSampleSize, rndShake, rndShake, false, rndStream); } @Override public IStoppingCriterion getStoppingCriterion() { return mStoppingCriterion; } /** * @return <code>true</code> if the shake should be randomized */ @Override public boolean randomize() { return super.randomize(); } /** * Getter for the local search parameters * * @return the parameters to be used by the local search */ public IParameters getLSParameters() { return mLSParameters; } /** * Getter for the shake parameters * * @return the parameters to be used by the shake */ public IParameters getShakeParameters() { return mShakeParameters; } }