/**
*
*/
package vroom.common.heuristics.jcw.kernel;
import java.util.LinkedList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import vroom.common.heuristics.ConstraintHandler;
import vroom.common.heuristics.cw.CWLogging;
import vroom.common.heuristics.cw.CWParameters;
import vroom.common.heuristics.cw.algorithms.RandomizedSavingsHeuristic;
import vroom.common.heuristics.cw.kernel.ClarkeAndWrightHeuristic;
import vroom.common.heuristics.vrp.constraints.CapacityConstraint;
import vroom.common.modeling.dataModel.Fleet;
import vroom.common.modeling.dataModel.IVRPInstance;
import vroom.common.modeling.dataModel.IVRPSolution;
import vroom.common.modeling.dataModel.Node;
import vroom.common.modeling.dataModel.Vehicle;
import vroom.common.modeling.util.CircularInstanceGenerator;
import vroom.common.modeling.util.DefaultSolutionFactory;
import vroom.common.utilities.logging.LoggerHelper;
/**
* <code>ClarkeAndWrightHeuristicTest</code> is a test case for
* {@link ClarkeAndWrightHeuristic}
* <p>
* Creation date: Apr 30, 2010 - 8:54:55 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 ClarkeAndWrightHeuristicTest {
IVRPInstance mInstance;
ClarkeAndWrightHeuristic<IVRPSolution<?>> mCW;
private CWParameters mParameters;
private ConstraintHandler<IVRPSolution<?>> mConstraintHandler;
/**
* @throws java.lang.Exception
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
@Before
public void setUp() throws Exception {
// mInstance = VRPInstanceBuilder.newSimpleDynamicInstance(10, 5, 10,
// 10, 0, false);
List<Node> nodes = new LinkedList<Node>();
mInstance = CircularInstanceGenerator.newCircularInstance(300, nodes,
10);
mInstance.setFleet(Fleet.newUnlimitedFleet(new Vehicle(0, "v", 10)));
mParameters = new CWParameters();
mConstraintHandler = new ConstraintHandler<IVRPSolution<?>>();
mConstraintHandler
.addConstraint(new CapacityConstraint<IVRPSolution<?>>());
mParameters.set(CWParameters.SOLUTION_FACTORY_CLASS,
DefaultSolutionFactory.class);
mCW = new ClarkeAndWrightHeuristic(mParameters,
RandomizedSavingsHeuristic.class, mConstraintHandler);
}
@Test
public void testRun() {
mCW.initialize(mInstance);
mCW.run();
IVRPSolution<?> sol = mCW.getSolution();
CWLogging.getBaseLogger().info("Solution:");
CWLogging.getBaseLogger().info(sol);
}
public static void main(String[] args) {
LoggerHelper.setupRootLogger(LoggerHelper.LEVEL_DEBUG,
LoggerHelper.LEVEL_DEBUG, true);
ClarkeAndWrightHeuristicTest test = new ClarkeAndWrightHeuristicTest();
try {
test.setUp();
} catch (Exception e) {
e.printStackTrace();
}
test.testRun();
}
}