/** * */ package vrp2013.util; import vroom.common.modeling.dataModel.IVRPInstance; import vroom.common.modeling.dataModel.IVRPSolution; import vroom.common.modeling.dataModel.ListRoute; import vroom.common.modeling.dataModel.RouteBase; import vroom.common.modeling.dataModel.Vehicle; import vroom.common.modeling.util.ISolutionFactory; /** * <code>SolutionFactories</code> contains different solution factories to illustrate the differences between data * structures * <p> * Creation date: 30/04/2013 - 5:02:02 PM * * @author Victor Pillac, <a href="http://www.nicta.com.au">National ICT Australia</a>, <a * href="http://www.victorpillac.com">www.victorpillac.com</a> * @version 1.0 */ public class SolutionFactories { public static final ISolutionFactory ARRAY_LIST_SOL_FACTORY = new ISolutionFactory() { @Override public VRPSolution newSolution( IVRPInstance instance, Object... params) { return new VRPSolution( instance); } @Override public RouteBase newRoute( IVRPSolution<?> solution, Vehicle vehicle, Object... params) { return new ListRoute.ArrayListRoute( solution, vehicle); } }; public static final ISolutionFactory LINKED_LIST_SOL_FACTORY = new ISolutionFactory() { @Override public VRPSolution newSolution( IVRPInstance instance, Object... params) { return new VRPSolution( instance); } @Override public RouteBase newRoute( IVRPSolution<?> solution, Vehicle vehicle, Object... params) { return new ListRoute.LinkedListRoute( solution, vehicle); } }; // This implmentation is not compatible with repeated depots // public static final ISolutionFactory DOUBLY_LINKED_ROUTE_SOL_FACTORY = new ISolutionFactory() { // @Override // public VRPSolution newSolution( // IVRPInstance instance, // Object... params) { // return new VRPSolution( // instance); // } // // @Override // public RouteBase newRoute( // IVRPSolution<?> solution, // Vehicle vehicle, // Object... params) { // return new DoublyLinkedRoute( // solution, // vehicle); // } // }; }