package vroom.common.heuristics.vls;
import vroom.common.heuristics.IInitialization;
import vroom.common.utilities.optimization.IParameters;
import vroom.common.utilities.optimization.ILocalSearch;
import vroom.common.utilities.optimization.SimpleParameters;
import vroom.common.utilities.params.ClassParameterKey;
import vroom.common.utilities.params.GlobalParameters;
import vroom.common.utilities.params.ParameterKey;
import vroom.common.utilities.params.RequiredParameter;
/**
* <code>VLSGlobalParameters</code> is an specialization of {@link GlobalParameters} for the VLS procedure. It includes
* definition of all the parameters required by the VLS procedure.
* <p>
* Creation date: Apr 26, 2010 - 10:31:05 AM.
*
* @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
*/
@SuppressWarnings("rawtypes")
public class VLSGlobalParameters extends GlobalParameters {
/** The direction of optimization: -1 (default) for minimization, +1 for maximization */
@RequiredParameter
public static final ParameterKey<Integer> OPTIMIZATION_DIRECTION = new ParameterKey<Integer>(
"OPTIMIZATION_DIRECTION",
Integer.class, -1);
/** The random seed to be used in the procedure */
@RequiredParameter
public static final ParameterKey<Long> RANDOM_SEED = new ParameterKey<Long>(
"RANDOM_SEED",
Long.class, 0l);
/** The number of iteration of the GRASP loop */
@RequiredParameter
public static final ParameterKey<Integer> NS = new ParameterKey<Integer>(
"NS",
Integer.class, 0);
/** The number of iteration of the ILS loop */
@RequiredParameter
public static final ParameterKey<Integer> NI = new ParameterKey<Integer>(
"NI",
Integer.class, 0);
/** The number of iteration of the ELS loop */
@RequiredParameter
public static final ParameterKey<Integer> NC = new ParameterKey<Integer>(
"NC",
Integer.class, 0);
/** The maximum overall time for the VLS procedure (in ms) */
@RequiredParameter
public static final ParameterKey<Long> VLS_MAX_TIME = new ParameterKey<Long>(
"VLS_MAX_TIME",
Long.class,
Long.MAX_VALUE);
/** The vls state class */
@RequiredParameter
public static final ClassParameterKey<IVLSState> STATE_CLASS = new ClassParameterKey<IVLSState>(
"STATE_CLASS",
IVLSState.class,
VLSStateBase.class);
/** The acceptance criteria class */
@RequiredParameter
public static final ClassParameterKey<IVLSAcceptanceCriterion> ACCEPTANCE_CRITERIA_CLASS = new ClassParameterKey<IVLSAcceptanceCriterion>(
"ACCEPTANCE_CRITERIA_CLASS",
IVLSAcceptanceCriterion.class,
SimpleAcceptanceCriterion.class);
/** The initialization component class */
public static final ClassParameterKey<IInitialization> INITIALIZATION_CLASS = new ClassParameterKey<IInitialization>(
"INITIALIZATION_CLASS",
IInitialization.class);
/** The local search component class */
@RequiredParameter
public static final ClassParameterKey<ILocalSearch> LOCAL_SEARCH_CLASS = new ClassParameterKey<ILocalSearch>(
"LOCAL_SEARCH_CLASS",
ILocalSearch.class);
/** The local search component class */
@RequiredParameter
public static final ClassParameterKey<IVLSPertubation> PERTUBATION_CLASS = new ClassParameterKey<IVLSPertubation>(
"PERTUBATION_CLASS",
IVLSPertubation.class);
/** The parameters that will be passed to the initialization component */
public static final ParameterKey<IParameters> PARAM_INIT = new ParameterKey<IParameters>(
"PARAM_INIT",
IParameters.class,
SimpleParameters.BEST_IMPROVEMENT);
/** The parameters that will be passed to the perturbation component */
public static final ParameterKey<IParameters> PARAM_PERTUBATION = new ParameterKey<IParameters>(
"PARAM_PERTUBATION",
IParameters.class,
SimpleParameters.PERTURBATION);
/** The parameters that will be passed to the local search component */
public static final ParameterKey<IParameters> PARAM_LOCALSEARCH = new ParameterKey<IParameters>(
"PARAM_LOCALSEARCH",
IParameters.class,
SimpleParameters.BEST_IMPROVEMENT);
/** Defines whether or not callbacks should be enabled (default is <code>false</code>) */
public static final ParameterKey<Boolean> ENABLE_CALLBACKS = new ParameterKey<Boolean>(
"ENABLE_CALLBACKS",
Boolean.class,
Boolean.FALSE);
static {
addRequiredKeysByReflection(VLSGlobalParameters.class);
}
}