/**
*
*/
package vroom.trsp.optimization.constructive;
import vroom.common.heuristics.alns.IRepair;
import vroom.common.utilities.optimization.SimpleParameters;
import vroom.trsp.datamodel.TRSPInstance;
import vroom.trsp.datamodel.TRSPSolution;
import vroom.trsp.datamodel.costDelegates.TRSPCostDelegate;
import vroom.trsp.optimization.alns.RepairRegret;
import vroom.trsp.optimization.constraints.TourConstraintHandler;
import vroom.trsp.util.TRSPGlobalParameters;
/**
* <code>TRSPRepairConsHeur</code> is an implementation of {@link TRSPConstructiveHeuristic} based on a {@link IRepair}
* instance
* <p>
* Creation date: Jun 7, 2011 - 11:13:27 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
*/
public class TRSPRepairConsHeur extends TRSPConstructiveHeuristic {
private final IRepair<TRSPSolution> mRepair;
/**
* Creates a new <code>TRSPRepairConsHeur</code>
*
* @param instance
* @param parameters
* @param constraintHandler
* @param costDelegate
* @param repair
*/
public TRSPRepairConsHeur(TRSPInstance instance, TRSPGlobalParameters parameters,
TourConstraintHandler constraintHandler, TRSPCostDelegate costDelegate, IRepair<TRSPSolution> repair) {
super(instance, parameters, constraintHandler, costDelegate);
mRepair = repair;
mRepair.initialize(instance);
}
/**
* Creates a new <code>TRSPRepairConsHeur</code> with a default regret-2 repair heuristic
*
* @param instance
* @param parameters
* @param constraintHandler
* @param costDelegate
*/
public TRSPRepairConsHeur(TRSPInstance instance, TRSPGlobalParameters parameters,
TourConstraintHandler constraintHandler, TRSPCostDelegate costDelegate) {
this(instance, parameters, constraintHandler, costDelegate, new RepairRegret(parameters, constraintHandler, 3,
true));
}
@Override
protected void initializeSolutionInternal(TRSPSolution sol) {
SimpleParameters params = new SimpleParameters(null, Long.MAX_VALUE, Integer.MAX_VALUE, getParameters()
.getInitRndStream());
mRepair.repair(sol, null, params);
}
}