diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/AUTHORS b/contribution/tags/combinatorial/routing/cvrptw-1.0/AUTHORS new file mode 100644 index 000000000..64d8614c4 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/AUTHORS @@ -0,0 +1,3 @@ + +Antonio LaTorre atorre[at]fi.upm.es +Thomas Legrand paradiseo-help[at]lists.gforge.inria.fr diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/CMakeLists.txt b/contribution/tags/combinatorial/routing/cvrptw-1.0/CMakeLists.txt new file mode 100644 index 000000000..bcb837eb6 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/CMakeLists.txt @@ -0,0 +1,45 @@ + +###################################################################################### +### 0) Include the install configuration file where are defined the main variables +###################################################################################### + +INCLUDE(${CMAKE_SOURCE_DIR}/install.cmake) + +###################################################################################### + + +###################################################################################### +### 1) Set your application properties +###################################################################################### + +# Define the project name +PROJECT(CVRP-TW) + +SET(PACKAGE_NAME "CVRP-TW" CACHE STRING "Package name" FORCE) +SET(PACKAGE_VERSION "1.0" CACHE STRING "Package version" FORCE) +###################################################################################### + + +###################################################################################### +### 2) Find the required modukes +###################################################################################### + +# Need to find Doxygen to generate the documentation +INCLUDE(FindDoxygen) + +###################################################################################### + + +###################################################################################### +### 3) Link the librairies for your executable +###################################################################################### + +SUBDIRS(application doc src) + +###################################################################################### + + + + + + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/INSTALL b/contribution/tags/combinatorial/routing/cvrptw-1.0/INSTALL new file mode 100644 index 000000000..965b3beb3 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/INSTALL @@ -0,0 +1,28 @@ + +========================================================================================== + INSTALL THE CVRP-TW PACKAGE +========================================================================================== + +The basic installation procedure goes the following: + +To compile the cvrp-tw package in the default directory, +go to cvrptw/build/ and run: + > cmake ../ + > make + // for an easy-use of the provided lessons + > make install + // optional (if the documentation is not already available) + > make doc + +To clean everything, simply run + > make clean + + +========================================================================================== + CONTACT +========================================================================================== + +For any question or for help, please write us at: paradiseo-help@lists.gforge.inria.fr. + + +========================================================================================== \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/README b/contribution/tags/combinatorial/routing/cvrptw-1.0/README new file mode 100644 index 000000000..039b51dc7 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/README @@ -0,0 +1,92 @@ +========================================================================================== + INFORMATION +========================================================================================== + +PARADISEO (PARallel and DIStributed Evolving Objects) is a white-box object-oriented +framework dedicated to the flexible design of metaheursitics. + +This package contains an implementation of a Genetic Algorithm solving the CVRP-TW problem. + +According to Wikipedia*, we can define the CVRP-TW as: + +"The capacitated vehicle routing problem with time windows or CVRP-TW is a combinatorial +optimization problem seeking to service a number of customers with a fleet of vehicles +where the vehicles have a mimited capacity and the delivery locations have time windows +within which the deliveries (or visits) must be made. Often the context is that of +delivering goods located at a central depot to customers who have placed orders for such +goods. Implicit is the goal of minimizing the cost of distributing the goods. Finding the +global minimum for the cost function, except for the smallest instances, is +computationally complex." + +*For further information, please visit: http://en.wikipedia.org/wiki/Vehicle_routing_problem + +========================================================================================== + RELEASE +========================================================================================== + +The current release of the "CVRP-TW" package is 1.0. + + +========================================================================================== + WEBSITE +========================================================================================== + +Please visit our website at http://paradiseo.gforge.inria.fr. + + +========================================================================================== + BUGS +========================================================================================== + +You can find the ParadisEO's bug tracker at: + + http://gforge.inria.fr/tracker/?atid=663&group_id=145&func=browse + + +========================================================================================== + CONTACT +========================================================================================== + +For any question or for help, please write us at: paradiseo-help@lists.gforge.inria.fr. + + +========================================================================================== + DEPENDENCIES +========================================================================================== + +ParadisEO uses EO, a templates-based, ANSI-C++ compliant evolutionary computation library. +It contains classes for almost any kind of evolutionary computation you might come up to - at +least for the ones we could think of. +EO Website: + http://eodev.sourceforge.net/. +EO is distributed under the GNU Lesser General Public License: + http://www.gnu.org/copyleft/lesser.html + + +========================================================================================== + LICENSE +========================================================================================== + + ParadisEO is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/CMakeLists.txt b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/CMakeLists.txt new file mode 100644 index 000000000..c2584ed48 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/CMakeLists.txt @@ -0,0 +1,68 @@ + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${PARADISEO_EO_SRC_DIR}/src + ${CVRP-TW_SOURCE_DIR}/src) + +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +# Link with the EO library directory +LINK_DIRECTORIES(${PARADISEO_EO_BIN_DIR}/lib) + +###################################################################################### + + + +###################################################################################### +### 3) Define your target: just an executable here +###################################################################################### + +ADD_EXECUTABLE(CVRP-TW CVRP-TW.cpp) + +###################################################################################### + + +###################################################################################### +### 4) Link the librairies for your executable +###################################################################################### + +# Only if you need to link libraries +TARGET_LINK_LIBRARIES(CVRP-TW eo eoutils) + +###################################################################################### + + +###################################################################################### +### 5) Copy the instances and the "param" file in the build path for an easy use. +### +### --> run the "make install" target to copy the parameter file / instances +### in the directory where you build the application +###################################################################################### + +ADD_CUSTOM_TARGET(install DEPENDS ${CVRP-TW_SOURCE_DIR}/application/CVRP-TW.params + ${CVRP-TW_SOURCE_DIR}/application/instances) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${CVRP-TW_SOURCE_DIR}/application/CVRP-TW.params + ${CVRP-TW_BINARY_DIR}/application) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_directory + ${CVRP-TW_SOURCE_DIR}/application/instances + ${CVRP-TW_BINARY_DIR}/application) +###################################################################################### + + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/CVRP-TW.cpp b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/CVRP-TW.cpp new file mode 100644 index 000000000..104f4a19e --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/CVRP-TW.cpp @@ -0,0 +1,634 @@ +/* + * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 + * (C) OPAC Team, LIFL, 2002-2007 + * + * (c) Antonio LaTorre , 2007 + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + * ParadisEO WebSite : http://paradiseo.gforge.inria.fr + * Contact: paradiseo-help@lists.gforge.inria.fr + * + */ + +// Miscellaneous includes and declarations +#include +#include + +// eo general include +#include "eo" +// the real bounds (not yet in general eo include) +#include "utils/eoRealVectorBounds.h" + +// Include here whatever specific files for your representation. +// Basically, this should include at least the following: + +/** definition of representation: + * class eoVRP MUST derive from EO for some fitness + */ +#include "eoVRP.h" + +/** definition of initilizqtion: + * class eoVRPInit MUST derive from eoInit + */ +#include "eoVRPInit.h" + +/** definition of evaluation: + * class eoVRPEvalFunc MUST derive from eoEvalFunc + * and should test for validity before doing any computation + * see tutorial/Templates/evalFunc.tmpl + */ +#include "eoVRPEvalFunc.h" + +/** definitions of operators: write as many classes as types of operators + * and include them here. In this simple example, + * one crossover (2->2) and one mutation (1->1) operators are used + */ +#include "eoVRPQuadCrossover.h" +#include "eoVRPMutation.h" + +/* And (possibly) your personal statistics */ +#include "eoVRPStat.h" + +#include "eoVRPUtils.h" + + +/* ********************************************************************************** + ********************************************************************************** */ + +// Use existing modules to define representation independent routines + +// How to initialize the population +// It IS representation independent if an eoInit is given +#include "do/make_pop.h" + +// The stopping criterion +#include "do/make_continue.h" + +// Output (stats, population dumps, ...) +#include "do/make_checkpoint.h" + +// Simply call to the algo. Stays there for consistency reasons +// No template for that one +#include "do/make_run.h" + +// The instanciating fitnesses +#include + +// Checks for help demand, and writes the status file +// and make_help; in libutils + +void make_help (eoParser& _parser); + + +/* ********************************************************************************** + ********************************************************************************** */ + +/* + * This function builds the algorithm (i.e. selection and replacement) + * from existing continue (or checkpoint) and operators + * + * It uses a parser (to get user parameters) and a state (to store the memory) + * the last argument is an individual, needed for 2 reasons + * it disambiguates the call after instanciations + * some operator might need some private information about the indis + * + * This is why the template is the complete EOT even though only the fitness + * is actually templatized here +*/ + + +eoAlgo& make_algo_scalar_transform (eoParser& _parser, eoState& _state, eoEvalFunc& _eval, eoCheckPoint& _checkpoint, eoTransform& _transform, eoDistance* _dist = NULL) { + + // the selection : help and comment depend on whether or not a distance is passed + std::string comment; + + if (_dist == NULL) + comment = "Selection: DetTour(T), StochTour(t), Roulette, Ranking(p,e) or Sequential(ordered/unordered)"; + else + comment = "Selection: DetTour(T), StochTour(t), Roulette, Ranking(p,e), Sharing(sigma_share) or Sequential(ordered/unordered)"; + + eoValueParam& selectionParam = _parser.createParam (eoParamParamType ("DetTour(2)"), "selection", comment, 'S', "Evolution Engine"); + + eoParamParamType& ppSelect = selectionParam.value (); // std::pair > + + eoSelectOne* selectOne; + + if (ppSelect.first == std::string("DetTour")) { + + unsigned detSize; + + if (!ppSelect.second.size ()) { // no parameter added + + std::cerr << "WARNING, no parameter passed to DetTour, using 2" << std::endl; + detSize = 2; + // put back 2 in parameter for consistency (and status file) + ppSelect.second.push_back (std::string ("2")); + + } + else // parameter passed by user as DetTour(T) + detSize = atoi (ppSelect.second [0].c_str ()); + + selectOne = new eoDetTournamentSelect (detSize); + + } + else if (ppSelect.first == std::string ("Sharing")) { + + double nicheSize; + + if (!ppSelect.second.size ()) { // no parameter added + + std::cerr << "WARNING, no parameter passed to Sharing, using 0.5" << std::endl; + nicheSize = 0.5; + // put back 2 in parameter for consistency (and status file) + ppSelect.second.push_back (std::string ("0.5")); + + } + else // parameter passed by user as DetTour(T) + nicheSize = atof (ppSelect.second [0].c_str ()); + + if (_dist == NULL) // no distance + throw std::runtime_error ("You didn't specify a distance when calling make_algo_scalar and using sharing"); + + selectOne = new eoSharingSelect (nicheSize, *_dist); + + } + else if (ppSelect.first == std::string ("StochTour")) { + + double p; + + if (!ppSelect.second.size ()) { // no parameter added + + std::cerr << "WARNING, no parameter passed to StochTour, using 1" << std::endl; + p = 1; + // put back p in parameter for consistency (and status file) + ppSelect.second.push_back (std::string ("1")); + + } + else // parameter passed by user as DetTour(T) + p = atof (ppSelect.second [0].c_str ()); + + selectOne = new eoStochTournamentSelect (p); + + } + else if (ppSelect.first == std::string ("Ranking")) { + + double p,e; + + if (ppSelect.second.size () == 2) { // 2 parameters: pressure and exponent + + p = atof (ppSelect.second [0].c_str ()); + e = atof (ppSelect.second [1].c_str ()); + + } + else if (ppSelect.second.size () == 1) { // 1 parameter: pressure + + std::cerr << "WARNING, no exponent to Ranking, using 1" << std::endl; + e = 1; + ppSelect.second.push_back (std::string ("1")); + p = atof (ppSelect.second [0].c_str ()); + + } + else { // no parameters ... or garbage + + std::cerr << "WARNING, no parameter to Ranking, using (2,1)" << std::endl; + p = 2; + e = 1; + // put back in parameter for consistency (and status file) + ppSelect.second.resize (2); // just in case + ppSelect.second [0] = (std::string ("2")); + ppSelect.second [1] = (std::string ("1")); + + } + + // check for authorized values + // pressure in (0,1] + if ((p <= 1) || (p > 2)) { + + std::cerr << "WARNING, selective pressure must be in (0,1] in Ranking, using 2\n"; + p = 2; + ppSelect.second [0] = (std::string ("2")); + + } + + // exponent >0 + if (e <= 0) { + + std::cerr << "WARNING, exponent must be positive in Ranking, using 1\n"; + e = 1; + ppSelect.second [1] = (std::string ("1")); + + } + + // now we're OK + eoPerf2Worth& p2w = _state.storeFunctor (new eoRanking (p,e)); + selectOne = new eoRouletteWorthSelect (p2w); + + } + else if (ppSelect.first == std::string ("Sequential")) { // one after the other + + bool b; + + if (ppSelect.second.size () == 0) { // no argument -> default = ordered + + b = true; + // put back in parameter for consistency (and status file) + ppSelect.second.push_back (std::string ("ordered")); + + } + else + b = !(ppSelect.second [0] == std::string ("unordered")); + + selectOne = new eoSequentialSelect (b); + + } + else if (ppSelect.first == std::string ("Roulette")) { // no argument (yet) + + selectOne = new eoProportionalSelect ; + + } + else if (ppSelect.first == std::string ("Random")) { // no argument + + selectOne = new eoRandomSelect; + + } + else { + + std::string stmp = std::string ("Invalid selection: ") + ppSelect.first; + throw std::runtime_error (stmp.c_str ()); + + } + + _state.storeFunctor (selectOne); + + // Modified from original + eoSelectPerc* select = new eoSelectPerc (*selectOne); + _state.storeFunctor (select); + + // the number of offspring + eoValueParam& offspringRateParam = _parser.createParam (eoHowMany (1.0), "nbOffspring", "Nb of offspring (percentage or absolute)", 'O', "Evolution Engine"); + + // the replacement + eoValueParam& replacementParam = _parser.createParam (eoParamParamType ("Comma"), "replacement", "Replacement: Comma, Plus or EPTour(T), SSGAWorst, SSGADet(T), SSGAStoch(t)", 'R', "Evolution Engine"); + + eoParamParamType& ppReplace = replacementParam.value (); // std::pair > + + eoReplacement* replace; + + if (ppReplace.first == std::string ("Comma")) { // Comma == generational + + replace = new eoCommaReplacement; + + } + else if (ppReplace.first == std::string ("Plus")) { + + replace = new eoPlusReplacement; + + } + else if (ppReplace.first == std::string ("EPTour")) { + + unsigned detSize; + + if (!ppReplace.second.size ()) { // no parameter added + + std::cerr << "WARNING, no parameter passed to EPTour, using 6" << std::endl; + detSize = 6; + // put back in parameter for consistency (and status file) + ppReplace.second.push_back (std::string ("6")); + + } + else // parameter passed by user as EPTour(T) + detSize = atoi (ppSelect.second [0].c_str ()); + + replace = new eoEPReplacement (detSize); + + } + else if (ppReplace.first == std::string ("SSGAWorst")) { + + replace = new eoSSGAWorseReplacement; + + } + else if (ppReplace.first == std::string ("SSGADet")) { + + unsigned detSize; + + if (!ppReplace.second.size ()) { // no parameter added + + std::cerr << "WARNING, no parameter passed to SSGADet, using 2" << std::endl; + detSize = 2; + // put back in parameter for consistency (and status file) + ppReplace.second.push_back (std::string ("2")); + + } + else // parameter passed by user as SSGADet(T) + detSize = atoi (ppSelect.second [0].c_str ()); + + replace = new eoSSGADetTournamentReplacement (detSize); + + } + else if (ppReplace.first == std::string ("SSGAStoch")) { + + double p; + + if (!ppReplace.second.size ()) { // no parameter added + + std::cerr << "WARNING, no parameter passed to SSGAStoch, using 1" << std::endl; + p = 1; + // put back in parameter for consistency (and status file) + ppReplace.second.push_back (std::string ("1")); + + } + else // parameter passed by user as SSGADet(T) + p = atof (ppSelect.second [0].c_str ()); + + replace = new eoSSGAStochTournamentReplacement (p); + + } + else { + + std::string stmp = std::string ("Invalid replacement: ") + ppReplace.first; + throw std::runtime_error (stmp.c_str ()); + + } + + _state.storeFunctor (replace); + + // adding weak elitism + eoValueParam& weakElitismParam = _parser.createParam (false, "weakElitism", "Old best parent replaces new worst offspring *if necessary*", 'w', "Evolution Engine"); + + if (weakElitismParam.value ()) { + + eoReplacement* replaceTmp = replace; + replace = new eoWeakElitistReplacement (*replaceTmp); + _state.storeFunctor (replace); + + } + + + + eoSelectTransform* selectTransform = new eoSelectTransform (*select, _transform); + _state.storeFunctor (selectTransform); + + eoTimeVaryingLoopEval* popEval = new eoTimeVaryingLoopEval (_eval); + _state.storeFunctor (popEval); + + // now the eoEasyEA (Modified) + eoAlgo* ga = new eoEasyEA (_checkpoint, *popEval, *selectTransform, *replace); + _state.storeFunctor (ga); + + // that's it! + return *ga; + +} + + +/* ********************************************************************************** + ********************************************************************************** */ + +// Now use all of the above, + representation dependent things +int main (int argc, char* argv []) { + + try { + + // ////////////////////// // + // User parameter reading // + // ////////////////////// // + + eoParser parser (argc, argv); + + // Parameter for loading a problem instance + eoValueParam instanceParam ("", "instance", "Instance to be loaded"); + parser.processParam (instanceParam, "Problem params"); + std::string instance = instanceParam.value (); + + // We try to load an instance of the VRP problem + eoVRPUtils::load (instance.c_str ()); + + // Initialization of random seed + rng.reseed (time (0)); + + // ////////////////////////// // + // Keeps all things allocated // + // ////////////////////////// // + + eoState state; + + + // ///////////////////// // + // The fitness evaluator // + // ///////////////////// // + + eoVRPEvalFunc plainEval; + + // Turn that object into an evaluation counter + eoEvalFuncCounter eval (plainEval); + + + // ////////////////////// // + // A genotype initializer // + // ////////////////////// // + + eoVRPInit init; + + + // ///////////////////////////////////////////////////// // + // Build the variation operator (any seq/prop construct) // + // ///////////////////////////////////////////////////// // + + // A (first) crossover + eoVRPGenericCrossover cross; + + // A (first) mutation + eoVRPMutation mut; + + // First read the individual level parameters + double pCross = parser.createParam (0.6, "pCross", "Probability of Crossover", 'C', "Variation Operators" ).value (); + + // Minimum check + if ((pCross < 0) || (pCross > 1)) + throw std::runtime_error ("Invalid pCross"); + + double pMut = parser.createParam (0.1, "pMut", "Probability of Mutation", 'M', "Variation Operators" ).value (); + + // Minimum check + if ((pMut < 0) || (pMut > 1)) + throw std::runtime_error ("Invalid pMut"); + + // Now create the transform operator + eoPropCombinedQuadOp xover (cross, 1.0); + eoPropCombinedMonOp mutation (mut, 1.0); + eoSGATransform transform (xover, pCross, mutation, pMut); + + + // ////////////////////////////////////////////// // + // Now some representation-independent things // + // (no need to modify anything beyond this point) // + // ////////////////////////////////////////////// // + + // Initialize the population + eoPop& pop = do_make_pop (parser, state, init); + + // Stopping criteria + eoContinue& term = do_make_continue (parser, state, eval); + + // Output + eoCheckPoint& checkpoint = do_make_checkpoint (parser, state, eval, term); + + + // ////////// // + // Statistics // + // ////////// // + + eoVRPStat myStat; + checkpoint.add (myStat); + + // This one is probably redundant with the one in make_checkpoint, but w.t.h. + eoIncrementorParam generationCounter ("Gen."); + checkpoint.add (generationCounter); + + // Need to get the name of the redDir param (if any) + std::string dirName = parser.getORcreateParam (std::string ("Res"), "resDir", "Directory to store DISK outputs", '\0', "Output - Disk").value () + "/"; + + // Those need to be pointers because of the if's + eoStdoutMonitor* myStdOutMonitor; + eoFileMonitor* myFileMonitor; + +#ifdef HAVE_GNUPLOT + eoGnuplot1DMonitor* myGnuMonitor; +#endif + + // Now check how you want to output the stat: + bool printVRPStat = parser.createParam (false, "coutVRPStat", "Prints my stat to screen, one line per generation", '\0', "My application").value (); + bool fileVRPStat = parser.createParam (false, "fileVRPStat", "Saves my stat to file (in resDir", '\0', "My application").value (); + bool plotVRPStat = parser.createParam (false, "plotVRPStat", "On-line plots my stat using gnuplot", '\0', "My application").value (); + + // Should we write it on StdOut ? + if (printVRPStat) { + + myStdOutMonitor = new eoStdoutMonitor (false); + + // Don't forget to store the memory in the state + state.storeFunctor (myStdOutMonitor); + + // And of course to add the monitor to the checkpoint + checkpoint.add (*myStdOutMonitor); + + // And the different fields to the monitor + myStdOutMonitor->add (generationCounter); + myStdOutMonitor->add (eval); + myStdOutMonitor->add (myStat); + + } + + // First check the directory (and creates it if not exists already): + if (fileVRPStat || plotVRPStat) + if (!testDirRes (dirName, true)) + throw std::runtime_error ("Problem with resDir"); + + // Should we write it to a file ? + if (fileVRPStat) { + + // The file name is hard-coded - of course you can read + // a string parameter in the parser if you prefer + myFileMonitor = new eoFileMonitor (dirName + "myStat.xg"); + + // Don't forget to store the memory in the state + state.storeFunctor (myFileMonitor); + + // And of course to add the monitor to the checkpoint + checkpoint.add (*myFileMonitor); + + // And the different fields to the monitor + myFileMonitor->add (generationCounter); + myFileMonitor->add (eval); + myFileMonitor->add (myStat); + + } + +#ifdef HAVE_GNUPLOT + + // Should we PLOT it on StdOut ? (one dot per generation, incremental plot) + if (plotVRPStat) { + + myGnuMonitor = new eoGnuplot1DMonitor (dirName + "plot_myStat.xg", minimizing_fitness ()); + // NOTE: you can send commands to gnuplot at any time with the method + // myGnuMonitor->gnuplotCommand(string) + // par exemple, gnuplotCommand("set logscale y") + + // Don't forget to store the memory in the state + state.storeFunctor (myGnuMonitor); + + // And of course to add the monitor to the checkpoint + checkpoint.add (*myGnuMonitor); + + // And the different fields to the monitor (X = eval, Y = myStat) + myGnuMonitor->add (eval); + myGnuMonitor->add (myStat); + + } + +#endif + + + // ///////////////////////////// // + // Construction of the algorithm // + // ///////////////////////////// // + + // Algorithm (need the operator!) + eoAlgo& ga = make_algo_scalar_transform (parser, state, eval, checkpoint, transform); + + + // /////////////////////////////////////////////////// // + // To be called AFTER all parameters have been read!!! // + // /////////////////////////////////////////////////// // + + make_help (parser); + + + // //////////////////// // + // Launch the algorithm // + // /////////////////// // + + // Evaluate intial population AFTER help and status in case it takes time + apply (eval, pop); + + // Run the GA + do_run (ga, pop); + + std::cout << "Solution:" << std::endl; + pop.best_element ().printAllOn (std::cout); + std::cout << std::endl; + + + } + catch (std::exception& e) { + + std::cerr << e.what () << std::endl; + + } + + return 0; + +} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/CVRP-TW.params b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/CVRP-TW.params new file mode 100644 index 000000000..9bd3e1450 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/CVRP-TW.params @@ -0,0 +1,54 @@ + +###### General ###### +# --help=0 # -h : Prints this message +# --stopOnUnknownParam=1 # Stop if unkown param entered +# --seed=1194615003 # -S : Random number seed + +###### Evolution Engine ###### +--popSize=200 # -P : Population Size +--selection=DetTour(6) # -S : Selection: DetTour(T), StochTour(t), Roulette, Ranking(p,e) or Sequential(ordered/unordered) +# --nbOffspring=100% # -O : Nb of offspring (percentage or absolute) +--replacement=Plus # -R : Replacement: Comma, Plus or EPTour(T), SSGAWorst, SSGADet(T), SSGAStoch(t) +# --weakElitism=0 # -w : Old best parent replaces new worst offspring *if necessary* + +###### My application ###### +# --coutVRPStat=0 # Prints my stat to screen, one line per generation +# --fileVRPStat=0 # Saves my stat to file (in resDir +# --plotVRPStat=0 # On-line plots my stat using gnuplot + +###### Output ###### +# --useEval=1 # Use nb of eval. as counter (vs nb of gen.) +# --useTime=1 # Display time (s) every generation +--printBestStat=1 # Print Best/avg/stdev every gen. +# --printPop=1 # Print sorted pop. every gen. + +###### Output - Disk ###### +# --resDir=Res # Directory to store DISK outputs +# --eraseDir=1 # erase files in dirName if any +# --fileBestStat=0 # Output bes/avg/std to file + +###### Output - Graphical ###### +# --plotBestStat=0 # Plot Best/avg Stat +# --plotHisto=0 # Plot histogram of fitnesses + +###### Persistence ###### +# --Load= # -L : A save file to restart from +# --recomputeFitness=0 # -r : Recompute the fitness after re-loading the pop.? +# --saveFrequency=0 # Save every F generation (0 = only final state, absent = never) +# --saveTimeInterval=0 # Save every T seconds (0 or absent = never) +# --status=./CVRP-TW.status # Status file + +###### Problem params ###### +--instance=solomon/r102.dat # Instance to be loaded + +###### Stopping criterion ###### +--maxGen=100 # -G : Maximum number of generations () = none) +# --steadyGen=100 # -s : Number of generations with no improvement +# --minGen=0 # -g : Minimum number of generations +# --maxEval=0 # -E : Maximum number of evaluations (0 = none) +# --targetFitness=0 # -T : Stop when fitness reaches +# --CtrlC=0 # -C : Terminate current generation upon Ctrl C + +###### Variation Operators ###### +--pCross=1 # -C : Probability of Crossover +--pMut=1 # -M : Probability of Mutation diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c101.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c101.dat new file mode 100644 index 000000000..14869a643 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c101.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 1236.00 0.00 +2 45.00 68.00 10.00 912.00 967.00 90.00 +3 45.00 70.00 30.00 825.00 870.00 90.00 +4 42.00 66.00 10.00 65.00 146.00 90.00 +5 42.00 68.00 10.00 727.00 782.00 90.00 +6 42.00 65.00 10.00 15.00 67.00 90.00 +7 40.00 69.00 20.00 621.00 702.00 90.00 +8 40.00 66.00 20.00 170.00 225.00 90.00 +9 38.00 68.00 20.00 255.00 324.00 90.00 +10 38.00 70.00 10.00 534.00 605.00 90.00 +11 35.00 66.00 10.00 357.00 410.00 90.00 +12 35.00 69.00 10.00 448.00 505.00 90.00 +13 25.00 85.00 20.00 652.00 721.00 90.00 +14 22.00 75.00 30.00 30.00 92.00 90.00 +15 22.00 85.00 10.00 567.00 620.00 90.00 +16 20.00 80.00 40.00 384.00 429.00 90.00 +17 20.00 85.00 40.00 475.00 528.00 90.00 +18 18.00 75.00 20.00 99.00 148.00 90.00 +19 15.00 75.00 20.00 179.00 254.00 90.00 +20 15.00 80.00 10.00 278.00 345.00 90.00 +21 30.00 50.00 10.00 10.00 73.00 90.00 +22 30.00 52.00 20.00 914.00 965.00 90.00 +23 28.00 52.00 20.00 812.00 883.00 90.00 +24 28.00 55.00 10.00 732.00 777.00 90.00 +25 25.00 50.00 10.00 65.00 144.00 90.00 +26 25.00 52.00 40.00 169.00 224.00 90.00 +27 25.00 55.00 10.00 622.00 701.00 90.00 +28 23.00 52.00 10.00 261.00 316.00 90.00 +29 23.00 55.00 20.00 546.00 593.00 90.00 +30 20.00 50.00 10.00 358.00 405.00 90.00 +31 20.00 55.00 10.00 449.00 504.00 90.00 +32 10.00 35.00 20.00 200.00 237.00 90.00 +33 10.00 40.00 30.00 31.00 100.00 90.00 +34 8.00 40.00 40.00 87.00 158.00 90.00 +35 8.00 45.00 20.00 751.00 816.00 90.00 +36 5.00 35.00 10.00 283.00 344.00 90.00 +37 5.00 45.00 10.00 665.00 716.00 90.00 +38 2.00 40.00 20.00 383.00 434.00 90.00 +39 0.00 40.00 30.00 479.00 522.00 90.00 +40 0.00 45.00 20.00 567.00 624.00 90.00 +41 35.00 30.00 10.00 264.00 321.00 90.00 +42 35.00 32.00 10.00 166.00 235.00 90.00 +43 33.00 32.00 20.00 68.00 149.00 90.00 +44 33.00 35.00 10.00 16.00 80.00 90.00 +45 32.00 30.00 10.00 359.00 412.00 90.00 +46 30.00 30.00 10.00 541.00 600.00 90.00 +47 30.00 32.00 30.00 448.00 509.00 90.00 +48 30.00 35.00 10.00 1054.00 1127.00 90.00 +49 28.00 30.00 10.00 632.00 693.00 90.00 +50 28.00 35.00 10.00 1001.00 1066.00 90.00 +51 26.00 32.00 10.00 815.00 880.00 90.00 +52 25.00 30.00 10.00 725.00 786.00 90.00 +53 25.00 35.00 10.00 912.00 969.00 90.00 +54 44.00 5.00 20.00 286.00 347.00 90.00 +55 42.00 10.00 40.00 186.00 257.00 90.00 +56 42.00 15.00 10.00 95.00 158.00 90.00 +57 40.00 5.00 30.00 385.00 436.00 90.00 +58 40.00 15.00 40.00 35.00 87.00 90.00 +59 38.00 5.00 30.00 471.00 534.00 90.00 +60 38.00 15.00 10.00 651.00 740.00 90.00 +61 35.00 5.00 20.00 562.00 629.00 90.00 +62 50.00 30.00 10.00 531.00 610.00 90.00 +63 50.00 35.00 20.00 262.00 317.00 90.00 +64 50.00 40.00 50.00 171.00 218.00 90.00 +65 48.00 30.00 10.00 632.00 693.00 90.00 +66 48.00 40.00 10.00 76.00 129.00 90.00 +67 47.00 35.00 10.00 826.00 875.00 90.00 +68 47.00 40.00 10.00 12.00 77.00 90.00 +69 45.00 30.00 10.00 734.00 777.00 90.00 +70 45.00 35.00 10.00 916.00 969.00 90.00 +71 95.00 30.00 30.00 387.00 456.00 90.00 +72 95.00 35.00 20.00 293.00 360.00 90.00 +73 53.00 30.00 10.00 450.00 505.00 90.00 +74 92.00 30.00 10.00 478.00 551.00 90.00 +75 53.00 35.00 50.00 353.00 412.00 90.00 +76 45.00 65.00 20.00 997.00 1068.00 90.00 +77 90.00 35.00 10.00 203.00 260.00 90.00 +78 88.00 30.00 10.00 574.00 643.00 90.00 +79 88.00 35.00 20.00 109.00 170.00 90.00 +80 87.00 30.00 10.00 668.00 731.00 90.00 +81 85.00 25.00 10.00 769.00 820.00 90.00 +82 85.00 35.00 30.00 47.00 124.00 90.00 +83 75.00 55.00 20.00 369.00 420.00 90.00 +84 72.00 55.00 10.00 265.00 338.00 90.00 +85 70.00 58.00 20.00 458.00 523.00 90.00 +86 68.00 60.00 30.00 555.00 612.00 90.00 +87 66.00 55.00 10.00 173.00 238.00 90.00 +88 65.00 55.00 20.00 85.00 144.00 90.00 +89 65.00 60.00 30.00 645.00 708.00 90.00 +90 63.00 58.00 10.00 737.00 802.00 90.00 +91 60.00 55.00 10.00 20.00 84.00 90.00 +92 60.00 60.00 10.00 836.00 889.00 90.00 +93 67.00 85.00 20.00 368.00 441.00 90.00 +94 65.00 85.00 40.00 475.00 518.00 90.00 +95 65.00 82.00 10.00 285.00 336.00 90.00 +96 62.00 80.00 30.00 196.00 239.00 90.00 +97 60.00 80.00 10.00 95.00 156.00 90.00 +98 60.00 85.00 30.00 561.00 622.00 90.00 +99 58.00 75.00 20.00 30.00 84.00 90.00 +100 55.00 80.00 10.00 743.00 820.00 90.00 +101 55.00 85.00 20.00 647.00 726.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c102.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c102.dat new file mode 100644 index 000000000..9c2e70add --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c102.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 1236.00 0.00 +2 45.00 68.00 10.00 0.00 1127.00 90.00 +3 45.00 70.00 30.00 0.00 1125.00 90.00 +4 42.00 66.00 10.00 0.00 1129.00 90.00 +5 42.00 68.00 10.00 727.00 782.00 90.00 +6 42.00 65.00 10.00 0.00 1130.00 90.00 +7 40.00 69.00 20.00 621.00 702.00 90.00 +8 40.00 66.00 20.00 0.00 1130.00 90.00 +9 38.00 68.00 20.00 255.00 324.00 90.00 +10 38.00 70.00 10.00 534.00 605.00 90.00 +11 35.00 66.00 10.00 357.00 410.00 90.00 +12 35.00 69.00 10.00 448.00 505.00 90.00 +13 25.00 85.00 20.00 0.00 1107.00 90.00 +14 22.00 75.00 30.00 30.00 92.00 90.00 +15 22.00 85.00 10.00 567.00 620.00 90.00 +16 20.00 80.00 40.00 384.00 429.00 90.00 +17 20.00 85.00 40.00 475.00 528.00 90.00 +18 18.00 75.00 20.00 99.00 148.00 90.00 +19 15.00 75.00 20.00 179.00 254.00 90.00 +20 15.00 80.00 10.00 278.00 345.00 90.00 +21 30.00 50.00 10.00 10.00 73.00 90.00 +22 30.00 52.00 20.00 0.00 1135.00 90.00 +23 28.00 52.00 20.00 812.00 883.00 90.00 +24 28.00 55.00 10.00 732.00 777.00 90.00 +25 25.00 50.00 10.00 65.00 144.00 90.00 +26 25.00 52.00 40.00 169.00 224.00 90.00 +27 25.00 55.00 10.00 0.00 1130.00 90.00 +28 23.00 52.00 10.00 261.00 316.00 90.00 +29 23.00 55.00 20.00 546.00 593.00 90.00 +30 20.00 50.00 10.00 358.00 405.00 90.00 +31 20.00 55.00 10.00 449.00 504.00 90.00 +32 10.00 35.00 20.00 0.00 1112.00 90.00 +33 10.00 40.00 30.00 31.00 100.00 90.00 +34 8.00 40.00 40.00 87.00 158.00 90.00 +35 8.00 45.00 20.00 0.00 1113.00 90.00 +36 5.00 35.00 10.00 283.00 344.00 90.00 +37 5.00 45.00 10.00 665.00 716.00 90.00 +38 2.00 40.00 20.00 0.00 1106.00 90.00 +39 0.00 40.00 30.00 479.00 522.00 90.00 +40 0.00 45.00 20.00 567.00 624.00 90.00 +41 35.00 30.00 10.00 264.00 321.00 90.00 +42 35.00 32.00 10.00 166.00 235.00 90.00 +43 33.00 32.00 20.00 68.00 149.00 90.00 +44 33.00 35.00 10.00 16.00 80.00 90.00 +45 32.00 30.00 10.00 359.00 412.00 90.00 +46 30.00 30.00 10.00 541.00 600.00 90.00 +47 30.00 32.00 30.00 448.00 509.00 90.00 +48 30.00 35.00 10.00 1054.00 1127.00 90.00 +49 28.00 30.00 10.00 0.00 1122.00 90.00 +50 28.00 35.00 10.00 1001.00 1066.00 90.00 +51 26.00 32.00 10.00 0.00 1123.00 90.00 +52 25.00 30.00 10.00 725.00 786.00 90.00 +53 25.00 35.00 10.00 0.00 1124.00 90.00 +54 44.00 5.00 20.00 286.00 347.00 90.00 +55 42.00 10.00 40.00 186.00 257.00 90.00 +56 42.00 15.00 10.00 95.00 158.00 90.00 +57 40.00 5.00 30.00 385.00 436.00 90.00 +58 40.00 15.00 40.00 35.00 87.00 90.00 +59 38.00 5.00 30.00 471.00 534.00 90.00 +60 38.00 15.00 10.00 0.00 1110.00 90.00 +61 35.00 5.00 20.00 562.00 629.00 90.00 +62 50.00 30.00 10.00 531.00 610.00 90.00 +63 50.00 35.00 20.00 262.00 317.00 90.00 +64 50.00 40.00 50.00 171.00 218.00 90.00 +65 48.00 30.00 10.00 632.00 693.00 90.00 +66 48.00 40.00 10.00 76.00 129.00 90.00 +67 47.00 35.00 10.00 826.00 875.00 90.00 +68 47.00 40.00 10.00 12.00 77.00 90.00 +69 45.00 30.00 10.00 734.00 777.00 90.00 +70 45.00 35.00 10.00 916.00 969.00 90.00 +71 95.00 30.00 30.00 387.00 456.00 90.00 +72 95.00 35.00 20.00 293.00 360.00 90.00 +73 53.00 30.00 10.00 0.00 1122.00 90.00 +74 92.00 30.00 10.00 478.00 551.00 90.00 +75 53.00 35.00 50.00 353.00 412.00 90.00 +76 45.00 65.00 20.00 0.00 1130.00 90.00 +77 90.00 35.00 10.00 203.00 260.00 90.00 +78 88.00 30.00 10.00 574.00 643.00 90.00 +79 88.00 35.00 20.00 109.00 170.00 90.00 +80 87.00 30.00 10.00 668.00 731.00 90.00 +81 85.00 25.00 10.00 769.00 820.00 90.00 +82 85.00 35.00 30.00 47.00 124.00 90.00 +83 75.00 55.00 20.00 0.00 1110.00 90.00 +84 72.00 55.00 10.00 0.00 1113.00 90.00 +85 70.00 58.00 20.00 458.00 523.00 90.00 +86 68.00 60.00 30.00 0.00 1116.00 90.00 +87 66.00 55.00 10.00 173.00 238.00 90.00 +88 65.00 55.00 20.00 85.00 144.00 90.00 +89 65.00 60.00 30.00 645.00 708.00 90.00 +90 63.00 58.00 10.00 737.00 802.00 90.00 +91 60.00 55.00 10.00 20.00 84.00 90.00 +92 60.00 60.00 10.00 0.00 1123.00 90.00 +93 67.00 85.00 20.00 368.00 441.00 90.00 +94 65.00 85.00 40.00 475.00 518.00 90.00 +95 65.00 82.00 10.00 0.00 1105.00 90.00 +96 62.00 80.00 30.00 0.00 1108.00 90.00 +97 60.00 80.00 10.00 0.00 1109.00 90.00 +98 60.00 85.00 30.00 561.00 622.00 90.00 +99 58.00 75.00 20.00 0.00 1115.00 90.00 +100 55.00 80.00 10.00 743.00 820.00 90.00 +101 55.00 85.00 20.00 647.00 726.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c103.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c103.dat new file mode 100644 index 000000000..e9b49b94d --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c103.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 1236.00 0.00 +2 45.00 68.00 10.00 0.00 1127.00 90.00 +3 45.00 70.00 30.00 0.00 1125.00 90.00 +4 42.00 66.00 10.00 0.00 1129.00 90.00 +5 42.00 68.00 10.00 727.00 782.00 90.00 +6 42.00 65.00 10.00 0.00 1130.00 90.00 +7 40.00 69.00 20.00 621.00 702.00 90.00 +8 40.00 66.00 20.00 0.00 1130.00 90.00 +9 38.00 68.00 20.00 255.00 324.00 90.00 +10 38.00 70.00 10.00 534.00 605.00 90.00 +11 35.00 66.00 10.00 357.00 410.00 90.00 +12 35.00 69.00 10.00 448.00 505.00 90.00 +13 25.00 85.00 20.00 0.00 1107.00 90.00 +14 22.00 75.00 30.00 30.00 92.00 90.00 +15 22.00 85.00 10.00 0.00 1106.00 90.00 +16 20.00 80.00 40.00 384.00 429.00 90.00 +17 20.00 85.00 40.00 0.00 1105.00 90.00 +18 18.00 75.00 20.00 99.00 148.00 90.00 +19 15.00 75.00 20.00 0.00 1110.00 90.00 +20 15.00 80.00 10.00 0.00 1106.00 90.00 +21 30.00 50.00 10.00 0.00 1136.00 90.00 +22 30.00 52.00 20.00 0.00 1135.00 90.00 +23 28.00 52.00 20.00 812.00 883.00 90.00 +24 28.00 55.00 10.00 732.00 777.00 90.00 +25 25.00 50.00 10.00 0.00 1131.00 90.00 +26 25.00 52.00 40.00 169.00 224.00 90.00 +27 25.00 55.00 10.00 0.00 1130.00 90.00 +28 23.00 52.00 10.00 261.00 316.00 90.00 +29 23.00 55.00 20.00 0.00 1128.00 90.00 +30 20.00 50.00 10.00 0.00 1126.00 90.00 +31 20.00 55.00 10.00 449.00 504.00 90.00 +32 10.00 35.00 20.00 0.00 1112.00 90.00 +33 10.00 40.00 30.00 0.00 1114.00 90.00 +34 8.00 40.00 40.00 87.00 158.00 90.00 +35 8.00 45.00 20.00 0.00 1113.00 90.00 +36 5.00 35.00 10.00 283.00 344.00 90.00 +37 5.00 45.00 10.00 665.00 716.00 90.00 +38 2.00 40.00 20.00 0.00 1106.00 90.00 +39 0.00 40.00 30.00 479.00 522.00 90.00 +40 0.00 45.00 20.00 567.00 624.00 90.00 +41 35.00 30.00 10.00 264.00 321.00 90.00 +42 35.00 32.00 10.00 166.00 235.00 90.00 +43 33.00 32.00 20.00 68.00 149.00 90.00 +44 33.00 35.00 10.00 0.00 1129.00 90.00 +45 32.00 30.00 10.00 359.00 412.00 90.00 +46 30.00 30.00 10.00 541.00 600.00 90.00 +47 30.00 32.00 30.00 0.00 1125.00 90.00 +48 30.00 35.00 10.00 0.00 1127.00 90.00 +49 28.00 30.00 10.00 0.00 1122.00 90.00 +50 28.00 35.00 10.00 1001.00 1066.00 90.00 +51 26.00 32.00 10.00 0.00 1123.00 90.00 +52 25.00 30.00 10.00 0.00 1121.00 90.00 +53 25.00 35.00 10.00 0.00 1124.00 90.00 +54 44.00 5.00 20.00 286.00 347.00 90.00 +55 42.00 10.00 40.00 0.00 1105.00 90.00 +56 42.00 15.00 10.00 95.00 158.00 90.00 +57 40.00 5.00 30.00 385.00 436.00 90.00 +58 40.00 15.00 40.00 0.00 1111.00 90.00 +59 38.00 5.00 30.00 471.00 534.00 90.00 +60 38.00 15.00 10.00 0.00 1110.00 90.00 +61 35.00 5.00 20.00 0.00 1100.00 90.00 +62 50.00 30.00 10.00 0.00 1123.00 90.00 +63 50.00 35.00 20.00 262.00 317.00 90.00 +64 50.00 40.00 50.00 0.00 1131.00 90.00 +65 48.00 30.00 10.00 632.00 693.00 90.00 +66 48.00 40.00 10.00 76.00 129.00 90.00 +67 47.00 35.00 10.00 826.00 875.00 90.00 +68 47.00 40.00 10.00 12.00 77.00 90.00 +69 45.00 30.00 10.00 734.00 777.00 90.00 +70 45.00 35.00 10.00 916.00 969.00 90.00 +71 95.00 30.00 30.00 387.00 456.00 90.00 +72 95.00 35.00 20.00 0.00 1088.00 90.00 +73 53.00 30.00 10.00 0.00 1122.00 90.00 +74 92.00 30.00 10.00 0.00 1090.00 90.00 +75 53.00 35.00 50.00 353.00 412.00 90.00 +76 45.00 65.00 20.00 0.00 1130.00 90.00 +77 90.00 35.00 10.00 203.00 260.00 90.00 +78 88.00 30.00 10.00 574.00 643.00 90.00 +79 88.00 35.00 20.00 109.00 170.00 90.00 +80 87.00 30.00 10.00 668.00 731.00 90.00 +81 85.00 25.00 10.00 769.00 820.00 90.00 +82 85.00 35.00 30.00 0.00 1098.00 90.00 +83 75.00 55.00 20.00 0.00 1110.00 90.00 +84 72.00 55.00 10.00 0.00 1113.00 90.00 +85 70.00 58.00 20.00 458.00 523.00 90.00 +86 68.00 60.00 30.00 0.00 1116.00 90.00 +87 66.00 55.00 10.00 0.00 1119.00 90.00 +88 65.00 55.00 20.00 85.00 144.00 90.00 +89 65.00 60.00 30.00 645.00 708.00 90.00 +90 63.00 58.00 10.00 0.00 1121.00 90.00 +91 60.00 55.00 10.00 0.00 1125.00 90.00 +92 60.00 60.00 10.00 0.00 1123.00 90.00 +93 67.00 85.00 20.00 368.00 441.00 90.00 +94 65.00 85.00 40.00 475.00 518.00 90.00 +95 65.00 82.00 10.00 0.00 1105.00 90.00 +96 62.00 80.00 30.00 0.00 1108.00 90.00 +97 60.00 80.00 10.00 0.00 1109.00 90.00 +98 60.00 85.00 30.00 0.00 1105.00 90.00 +99 58.00 75.00 20.00 0.00 1115.00 90.00 +100 55.00 80.00 10.00 743.00 820.00 90.00 +101 55.00 85.00 20.00 647.00 726.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c104.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c104.dat new file mode 100644 index 000000000..0b4d141b1 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c104.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 1236.00 0.00 +2 45.00 68.00 10.00 0.00 1127.00 90.00 +3 45.00 70.00 30.00 0.00 1125.00 90.00 +4 42.00 66.00 10.00 0.00 1129.00 90.00 +5 42.00 68.00 10.00 727.00 782.00 90.00 +6 42.00 65.00 10.00 0.00 1130.00 90.00 +7 40.00 69.00 20.00 0.00 1127.00 90.00 +8 40.00 66.00 20.00 0.00 1130.00 90.00 +9 38.00 68.00 20.00 255.00 324.00 90.00 +10 38.00 70.00 10.00 534.00 605.00 90.00 +11 35.00 66.00 10.00 0.00 1129.00 90.00 +12 35.00 69.00 10.00 448.00 505.00 90.00 +13 25.00 85.00 20.00 0.00 1107.00 90.00 +14 22.00 75.00 30.00 30.00 92.00 90.00 +15 22.00 85.00 10.00 0.00 1106.00 90.00 +16 20.00 80.00 40.00 384.00 429.00 90.00 +17 20.00 85.00 40.00 0.00 1105.00 90.00 +18 18.00 75.00 20.00 0.00 1112.00 90.00 +19 15.00 75.00 20.00 0.00 1110.00 90.00 +20 15.00 80.00 10.00 0.00 1106.00 90.00 +21 30.00 50.00 10.00 0.00 1136.00 90.00 +22 30.00 52.00 20.00 0.00 1135.00 90.00 +23 28.00 52.00 20.00 0.00 1133.00 90.00 +24 28.00 55.00 10.00 732.00 777.00 90.00 +25 25.00 50.00 10.00 0.00 1131.00 90.00 +26 25.00 52.00 40.00 169.00 224.00 90.00 +27 25.00 55.00 10.00 0.00 1130.00 90.00 +28 23.00 52.00 10.00 0.00 1128.00 90.00 +29 23.00 55.00 20.00 0.00 1128.00 90.00 +30 20.00 50.00 10.00 0.00 1126.00 90.00 +31 20.00 55.00 10.00 0.00 1125.00 90.00 +32 10.00 35.00 20.00 0.00 1112.00 90.00 +33 10.00 40.00 30.00 0.00 1114.00 90.00 +34 8.00 40.00 40.00 0.00 1112.00 90.00 +35 8.00 45.00 20.00 0.00 1113.00 90.00 +36 5.00 35.00 10.00 0.00 1107.00 90.00 +37 5.00 45.00 10.00 0.00 1110.00 90.00 +38 2.00 40.00 20.00 0.00 1106.00 90.00 +39 0.00 40.00 30.00 479.00 522.00 90.00 +40 0.00 45.00 20.00 0.00 1105.00 90.00 +41 35.00 30.00 10.00 0.00 1125.00 90.00 +42 35.00 32.00 10.00 0.00 1127.00 90.00 +43 33.00 32.00 20.00 0.00 1126.00 90.00 +44 33.00 35.00 10.00 0.00 1129.00 90.00 +45 32.00 30.00 10.00 359.00 412.00 90.00 +46 30.00 30.00 10.00 0.00 1123.00 90.00 +47 30.00 32.00 30.00 0.00 1125.00 90.00 +48 30.00 35.00 10.00 0.00 1127.00 90.00 +49 28.00 30.00 10.00 0.00 1122.00 90.00 +50 28.00 35.00 10.00 0.00 1126.00 90.00 +51 26.00 32.00 10.00 0.00 1123.00 90.00 +52 25.00 30.00 10.00 0.00 1121.00 90.00 +53 25.00 35.00 10.00 0.00 1124.00 90.00 +54 44.00 5.00 20.00 286.00 347.00 90.00 +55 42.00 10.00 40.00 0.00 1105.00 90.00 +56 42.00 15.00 10.00 95.00 158.00 90.00 +57 40.00 5.00 30.00 0.00 1101.00 90.00 +58 40.00 15.00 40.00 0.00 1111.00 90.00 +59 38.00 5.00 30.00 471.00 534.00 90.00 +60 38.00 15.00 10.00 0.00 1110.00 90.00 +61 35.00 5.00 20.00 0.00 1100.00 90.00 +62 50.00 30.00 10.00 0.00 1123.00 90.00 +63 50.00 35.00 20.00 262.00 317.00 90.00 +64 50.00 40.00 50.00 0.00 1131.00 90.00 +65 48.00 30.00 10.00 0.00 1124.00 90.00 +66 48.00 40.00 10.00 0.00 1133.00 90.00 +67 47.00 35.00 10.00 0.00 1129.00 90.00 +68 47.00 40.00 10.00 12.00 77.00 90.00 +69 45.00 30.00 10.00 0.00 1125.00 90.00 +70 45.00 35.00 10.00 916.00 969.00 90.00 +71 95.00 30.00 30.00 0.00 1087.00 90.00 +72 95.00 35.00 20.00 0.00 1088.00 90.00 +73 53.00 30.00 10.00 0.00 1122.00 90.00 +74 92.00 30.00 10.00 0.00 1090.00 90.00 +75 53.00 35.00 50.00 353.00 412.00 90.00 +76 45.00 65.00 20.00 0.00 1130.00 90.00 +77 90.00 35.00 10.00 203.00 260.00 90.00 +78 88.00 30.00 10.00 574.00 643.00 90.00 +79 88.00 35.00 20.00 0.00 1095.00 90.00 +80 87.00 30.00 10.00 668.00 731.00 90.00 +81 85.00 25.00 10.00 0.00 1094.00 90.00 +82 85.00 35.00 30.00 0.00 1098.00 90.00 +83 75.00 55.00 20.00 0.00 1110.00 90.00 +84 72.00 55.00 10.00 0.00 1113.00 90.00 +85 70.00 58.00 20.00 458.00 523.00 90.00 +86 68.00 60.00 30.00 0.00 1116.00 90.00 +87 66.00 55.00 10.00 0.00 1119.00 90.00 +88 65.00 55.00 20.00 85.00 144.00 90.00 +89 65.00 60.00 30.00 0.00 1119.00 90.00 +90 63.00 58.00 10.00 0.00 1121.00 90.00 +91 60.00 55.00 10.00 0.00 1125.00 90.00 +92 60.00 60.00 10.00 0.00 1123.00 90.00 +93 67.00 85.00 20.00 368.00 441.00 90.00 +94 65.00 85.00 40.00 0.00 1102.00 90.00 +95 65.00 82.00 10.00 0.00 1105.00 90.00 +96 62.00 80.00 30.00 0.00 1108.00 90.00 +97 60.00 80.00 10.00 0.00 1109.00 90.00 +98 60.00 85.00 30.00 0.00 1105.00 90.00 +99 58.00 75.00 20.00 0.00 1115.00 90.00 +100 55.00 80.00 10.00 743.00 820.00 90.00 +101 55.00 85.00 20.00 647.00 726.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c105.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c105.dat new file mode 100644 index 000000000..436ecdb66 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c105.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 1236.00 0.00 +2 45.00 68.00 10.00 885.00 994.00 90.00 +3 45.00 70.00 30.00 802.00 893.00 90.00 +4 42.00 66.00 10.00 25.00 186.00 90.00 +5 42.00 68.00 10.00 699.00 810.00 90.00 +6 42.00 65.00 10.00 15.00 120.00 90.00 +7 40.00 69.00 20.00 580.00 743.00 90.00 +8 40.00 66.00 20.00 142.00 253.00 90.00 +9 38.00 68.00 20.00 220.00 359.00 90.00 +10 38.00 70.00 10.00 499.00 640.00 90.00 +11 35.00 66.00 10.00 331.00 436.00 90.00 +12 35.00 69.00 10.00 420.00 533.00 90.00 +13 25.00 85.00 20.00 617.00 756.00 90.00 +14 22.00 75.00 30.00 30.00 155.00 90.00 +15 22.00 85.00 10.00 541.00 646.00 90.00 +16 20.00 80.00 40.00 362.00 451.00 90.00 +17 20.00 85.00 40.00 448.00 555.00 90.00 +18 18.00 75.00 20.00 75.00 172.00 90.00 +19 15.00 75.00 20.00 142.00 291.00 90.00 +20 15.00 80.00 10.00 244.00 379.00 90.00 +21 30.00 50.00 10.00 10.00 137.00 90.00 +22 30.00 52.00 20.00 888.00 991.00 90.00 +23 28.00 52.00 20.00 776.00 919.00 90.00 +24 28.00 55.00 10.00 709.00 800.00 90.00 +25 25.00 50.00 10.00 25.00 184.00 90.00 +26 25.00 52.00 40.00 142.00 251.00 90.00 +27 25.00 55.00 10.00 582.00 741.00 90.00 +28 23.00 52.00 10.00 234.00 343.00 90.00 +29 23.00 55.00 20.00 523.00 616.00 90.00 +30 20.00 50.00 10.00 335.00 428.00 90.00 +31 20.00 55.00 10.00 422.00 531.00 90.00 +32 10.00 35.00 20.00 181.00 256.00 90.00 +33 10.00 40.00 30.00 31.00 170.00 90.00 +34 8.00 40.00 40.00 52.00 193.00 90.00 +35 8.00 45.00 20.00 719.00 848.00 90.00 +36 5.00 35.00 10.00 252.00 375.00 90.00 +37 5.00 45.00 10.00 639.00 742.00 90.00 +38 2.00 40.00 20.00 357.00 460.00 90.00 +39 0.00 40.00 30.00 457.00 544.00 90.00 +40 0.00 45.00 20.00 538.00 653.00 90.00 +41 35.00 30.00 10.00 236.00 349.00 90.00 +42 35.00 32.00 10.00 132.00 269.00 90.00 +43 33.00 32.00 20.00 27.00 190.00 90.00 +44 33.00 35.00 10.00 16.00 144.00 90.00 +45 32.00 30.00 10.00 332.00 439.00 90.00 +46 30.00 30.00 10.00 512.00 629.00 90.00 +47 30.00 32.00 30.00 417.00 540.00 90.00 +48 30.00 35.00 10.00 982.00 1127.00 90.00 +49 28.00 30.00 10.00 601.00 724.00 90.00 +50 28.00 35.00 10.00 969.00 1098.00 90.00 +51 26.00 32.00 10.00 783.00 912.00 90.00 +52 25.00 30.00 10.00 695.00 816.00 90.00 +53 25.00 35.00 10.00 883.00 998.00 90.00 +54 44.00 5.00 20.00 255.00 378.00 90.00 +55 42.00 10.00 40.00 150.00 293.00 90.00 +56 42.00 15.00 10.00 63.00 190.00 90.00 +57 40.00 5.00 30.00 359.00 462.00 90.00 +58 40.00 15.00 40.00 35.00 140.00 90.00 +59 38.00 5.00 30.00 439.00 566.00 90.00 +60 38.00 15.00 10.00 607.00 784.00 90.00 +61 35.00 5.00 20.00 529.00 662.00 90.00 +62 50.00 30.00 10.00 491.00 650.00 90.00 +63 50.00 35.00 20.00 235.00 344.00 90.00 +64 50.00 40.00 50.00 147.00 242.00 90.00 +65 48.00 30.00 10.00 601.00 724.00 90.00 +66 48.00 40.00 10.00 50.00 155.00 90.00 +67 47.00 35.00 10.00 802.00 899.00 90.00 +68 47.00 40.00 10.00 12.00 143.00 90.00 +69 45.00 30.00 10.00 712.00 799.00 90.00 +70 45.00 35.00 10.00 889.00 996.00 90.00 +71 95.00 30.00 30.00 353.00 490.00 90.00 +72 95.00 35.00 20.00 260.00 393.00 90.00 +73 53.00 30.00 10.00 422.00 533.00 90.00 +74 92.00 30.00 10.00 442.00 587.00 90.00 +75 53.00 35.00 50.00 323.00 442.00 90.00 +76 45.00 65.00 20.00 962.00 1103.00 90.00 +77 90.00 35.00 10.00 175.00 288.00 90.00 +78 88.00 30.00 10.00 539.00 678.00 90.00 +79 88.00 35.00 20.00 78.00 201.00 90.00 +80 87.00 30.00 10.00 636.00 763.00 90.00 +81 85.00 25.00 10.00 744.00 845.00 90.00 +82 85.00 35.00 30.00 47.00 201.00 90.00 +83 75.00 55.00 20.00 344.00 445.00 90.00 +84 72.00 55.00 10.00 228.00 375.00 90.00 +85 70.00 58.00 20.00 425.00 556.00 90.00 +86 68.00 60.00 30.00 527.00 640.00 90.00 +87 66.00 55.00 10.00 141.00 270.00 90.00 +88 65.00 55.00 20.00 56.00 173.00 90.00 +89 65.00 60.00 30.00 614.00 739.00 90.00 +90 63.00 58.00 10.00 705.00 834.00 90.00 +91 60.00 55.00 10.00 20.00 148.00 90.00 +92 60.00 60.00 10.00 809.00 916.00 90.00 +93 67.00 85.00 20.00 331.00 478.00 90.00 +94 65.00 85.00 40.00 453.00 540.00 90.00 +95 65.00 82.00 10.00 260.00 361.00 90.00 +96 62.00 80.00 30.00 174.00 261.00 90.00 +97 60.00 80.00 10.00 64.00 187.00 90.00 +98 60.00 85.00 30.00 531.00 652.00 90.00 +99 58.00 75.00 20.00 30.00 139.00 90.00 +100 55.00 80.00 10.00 705.00 858.00 90.00 +101 55.00 85.00 20.00 608.00 765.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c106.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c106.dat new file mode 100644 index 000000000..8d34327ca --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c106.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 1236.00 0.00 +2 45.00 68.00 10.00 890.00 989.00 90.00 +3 45.00 70.00 30.00 816.00 879.00 90.00 +4 42.00 66.00 10.00 55.00 156.00 90.00 +5 42.00 68.00 10.00 703.00 806.00 90.00 +6 42.00 65.00 10.00 15.00 60.00 90.00 +7 40.00 69.00 20.00 559.00 764.00 90.00 +8 40.00 66.00 20.00 172.00 223.00 90.00 +9 38.00 68.00 20.00 250.00 329.00 90.00 +10 38.00 70.00 10.00 489.00 650.00 90.00 +11 35.00 66.00 10.00 361.00 406.00 90.00 +12 35.00 69.00 10.00 450.00 503.00 90.00 +13 25.00 85.00 20.00 647.00 726.00 90.00 +14 22.00 75.00 30.00 30.00 95.00 90.00 +15 22.00 85.00 10.00 571.00 616.00 90.00 +16 20.00 80.00 40.00 392.00 421.00 90.00 +17 20.00 85.00 40.00 478.00 525.00 90.00 +18 18.00 75.00 20.00 105.00 142.00 90.00 +19 15.00 75.00 20.00 172.00 261.00 90.00 +20 15.00 80.00 10.00 274.00 349.00 90.00 +21 30.00 50.00 10.00 10.00 77.00 90.00 +22 30.00 52.00 20.00 918.00 961.00 90.00 +23 28.00 52.00 20.00 806.00 889.00 90.00 +24 28.00 55.00 10.00 739.00 770.00 90.00 +25 25.00 50.00 10.00 55.00 154.00 90.00 +26 25.00 52.00 40.00 172.00 221.00 90.00 +27 25.00 55.00 10.00 612.00 711.00 90.00 +28 23.00 52.00 10.00 264.00 313.00 90.00 +29 23.00 55.00 20.00 553.00 586.00 90.00 +30 20.00 50.00 10.00 365.00 398.00 90.00 +31 20.00 55.00 10.00 452.00 501.00 90.00 +32 10.00 35.00 20.00 204.00 233.00 90.00 +33 10.00 40.00 30.00 31.00 189.00 90.00 +34 8.00 40.00 40.00 42.00 203.00 90.00 +35 8.00 45.00 20.00 715.00 852.00 90.00 +36 5.00 35.00 10.00 251.00 376.00 90.00 +37 5.00 45.00 10.00 648.00 733.00 90.00 +38 2.00 40.00 20.00 365.00 452.00 90.00 +39 0.00 40.00 30.00 474.00 527.00 90.00 +40 0.00 45.00 20.00 541.00 650.00 90.00 +41 35.00 30.00 10.00 240.00 345.00 90.00 +42 35.00 32.00 10.00 123.00 278.00 90.00 +43 33.00 32.00 20.00 19.00 225.00 90.00 +44 33.00 35.00 10.00 16.00 153.00 90.00 +45 32.00 30.00 10.00 338.00 433.00 90.00 +46 30.00 30.00 10.00 513.00 628.00 90.00 +47 30.00 32.00 30.00 415.00 542.00 90.00 +48 30.00 35.00 10.00 872.00 1127.00 90.00 +49 28.00 30.00 10.00 599.00 726.00 90.00 +50 28.00 35.00 10.00 917.00 1126.00 90.00 +51 26.00 32.00 10.00 779.00 916.00 90.00 +52 25.00 30.00 10.00 695.00 816.00 90.00 +53 25.00 35.00 10.00 857.00 1024.00 90.00 +54 44.00 5.00 20.00 221.00 412.00 90.00 +55 42.00 10.00 40.00 96.00 347.00 90.00 +56 42.00 15.00 10.00 35.00 233.00 90.00 +57 40.00 5.00 30.00 347.00 474.00 90.00 +58 40.00 15.00 40.00 35.00 172.00 90.00 +59 38.00 5.00 30.00 403.00 602.00 90.00 +60 38.00 15.00 10.00 521.00 870.00 90.00 +61 35.00 5.00 20.00 487.00 704.00 90.00 +62 50.00 30.00 10.00 422.00 719.00 90.00 +63 50.00 35.00 20.00 217.00 362.00 90.00 +64 50.00 40.00 50.00 142.00 247.00 90.00 +65 48.00 30.00 10.00 567.00 758.00 90.00 +66 48.00 40.00 10.00 34.00 171.00 90.00 +67 47.00 35.00 10.00 794.00 907.00 90.00 +68 47.00 40.00 10.00 12.00 226.00 90.00 +69 45.00 30.00 10.00 716.00 795.00 90.00 +70 45.00 35.00 10.00 873.00 1012.00 90.00 +71 95.00 30.00 30.00 266.00 577.00 90.00 +72 95.00 35.00 20.00 181.00 472.00 90.00 +73 53.00 30.00 10.00 402.00 553.00 90.00 +74 92.00 30.00 10.00 345.00 684.00 90.00 +75 53.00 35.00 50.00 294.00 471.00 90.00 +76 45.00 65.00 20.00 951.00 1114.00 90.00 +77 90.00 35.00 10.00 153.00 310.00 90.00 +78 88.00 30.00 10.00 450.00 767.00 90.00 +79 88.00 35.00 20.00 50.00 237.00 90.00 +80 87.00 30.00 10.00 567.00 832.00 90.00 +81 85.00 25.00 10.00 713.00 876.00 90.00 +82 85.00 35.00 30.00 47.00 331.00 90.00 +83 75.00 55.00 20.00 311.00 478.00 90.00 +84 72.00 55.00 10.00 127.00 476.00 90.00 +85 70.00 58.00 20.00 349.00 632.00 90.00 +86 68.00 60.00 30.00 476.00 691.00 90.00 +87 66.00 55.00 10.00 67.00 344.00 90.00 +88 65.00 55.00 20.00 25.00 256.00 90.00 +89 65.00 60.00 30.00 546.00 807.00 90.00 +90 63.00 58.00 10.00 630.00 909.00 90.00 +91 60.00 55.00 10.00 20.00 293.00 90.00 +92 60.00 60.00 10.00 769.00 956.00 90.00 +93 67.00 85.00 20.00 229.00 580.00 90.00 +94 65.00 85.00 40.00 442.00 551.00 90.00 +95 65.00 82.00 10.00 227.00 394.00 90.00 +96 62.00 80.00 30.00 163.00 272.00 90.00 +97 60.00 80.00 10.00 36.00 291.00 90.00 +98 60.00 85.00 30.00 469.00 714.00 90.00 +99 58.00 75.00 20.00 30.00 227.00 90.00 +100 55.00 80.00 10.00 595.00 968.00 90.00 +101 55.00 85.00 20.00 493.00 880.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c107.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c107.dat new file mode 100644 index 000000000..92ed2e423 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c107.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 1236.00 0.00 +2 45.00 68.00 10.00 850.00 1030.00 90.00 +3 45.00 70.00 30.00 758.00 938.00 90.00 +4 42.00 66.00 10.00 16.00 196.00 90.00 +5 42.00 68.00 10.00 665.00 845.00 90.00 +6 42.00 65.00 10.00 15.00 195.00 90.00 +7 40.00 69.00 20.00 572.00 752.00 90.00 +8 40.00 66.00 20.00 108.00 288.00 90.00 +9 38.00 68.00 20.00 200.00 380.00 90.00 +10 38.00 70.00 10.00 480.00 660.00 90.00 +11 35.00 66.00 10.00 294.00 474.00 90.00 +12 35.00 69.00 10.00 387.00 567.00 90.00 +13 25.00 85.00 20.00 597.00 777.00 90.00 +14 22.00 75.00 30.00 30.00 210.00 90.00 +15 22.00 85.00 10.00 504.00 684.00 90.00 +16 20.00 80.00 40.00 317.00 497.00 90.00 +17 20.00 85.00 40.00 412.00 592.00 90.00 +18 18.00 75.00 20.00 34.00 214.00 90.00 +19 15.00 75.00 20.00 127.00 307.00 90.00 +20 15.00 80.00 10.00 222.00 402.00 90.00 +21 30.00 50.00 10.00 10.00 190.00 90.00 +22 30.00 52.00 20.00 850.00 1030.00 90.00 +23 28.00 52.00 20.00 758.00 938.00 90.00 +24 28.00 55.00 10.00 665.00 845.00 90.00 +25 25.00 50.00 10.00 15.00 195.00 90.00 +26 25.00 52.00 40.00 107.00 287.00 90.00 +27 25.00 55.00 10.00 572.00 752.00 90.00 +28 23.00 52.00 10.00 199.00 379.00 90.00 +29 23.00 55.00 20.00 480.00 660.00 90.00 +30 20.00 50.00 10.00 292.00 472.00 90.00 +31 20.00 55.00 10.00 387.00 567.00 90.00 +32 10.00 35.00 20.00 129.00 309.00 90.00 +33 10.00 40.00 30.00 31.00 211.00 90.00 +34 8.00 40.00 40.00 33.00 213.00 90.00 +35 8.00 45.00 20.00 694.00 874.00 90.00 +36 5.00 35.00 10.00 224.00 404.00 90.00 +37 5.00 45.00 10.00 601.00 781.00 90.00 +38 2.00 40.00 20.00 319.00 499.00 90.00 +39 0.00 40.00 30.00 411.00 591.00 90.00 +40 0.00 45.00 20.00 506.00 686.00 90.00 +41 35.00 30.00 10.00 203.00 383.00 90.00 +42 35.00 32.00 10.00 111.00 291.00 90.00 +43 33.00 32.00 20.00 19.00 199.00 90.00 +44 33.00 35.00 10.00 16.00 196.00 90.00 +45 32.00 30.00 10.00 296.00 476.00 90.00 +46 30.00 30.00 10.00 481.00 661.00 90.00 +47 30.00 32.00 30.00 389.00 569.00 90.00 +48 30.00 35.00 10.00 947.00 1127.00 90.00 +49 28.00 30.00 10.00 573.00 753.00 90.00 +50 28.00 35.00 10.00 944.00 1124.00 90.00 +51 26.00 32.00 10.00 758.00 938.00 90.00 +52 25.00 30.00 10.00 666.00 846.00 90.00 +53 25.00 35.00 10.00 851.00 1031.00 90.00 +54 44.00 5.00 20.00 227.00 407.00 90.00 +55 42.00 10.00 40.00 132.00 312.00 90.00 +56 42.00 15.00 10.00 37.00 217.00 90.00 +57 40.00 5.00 30.00 321.00 501.00 90.00 +58 40.00 15.00 40.00 35.00 215.00 90.00 +59 38.00 5.00 30.00 413.00 593.00 90.00 +60 38.00 15.00 10.00 606.00 786.00 90.00 +61 35.00 5.00 20.00 506.00 686.00 90.00 +62 50.00 30.00 10.00 481.00 661.00 90.00 +63 50.00 35.00 20.00 200.00 380.00 90.00 +64 50.00 40.00 50.00 105.00 285.00 90.00 +65 48.00 30.00 10.00 573.00 753.00 90.00 +66 48.00 40.00 10.00 13.00 193.00 90.00 +67 47.00 35.00 10.00 761.00 941.00 90.00 +68 47.00 40.00 10.00 12.00 192.00 90.00 +69 45.00 30.00 10.00 666.00 846.00 90.00 +70 45.00 35.00 10.00 853.00 1033.00 90.00 +71 95.00 30.00 30.00 332.00 512.00 90.00 +72 95.00 35.00 20.00 237.00 417.00 90.00 +73 53.00 30.00 10.00 388.00 568.00 90.00 +74 92.00 30.00 10.00 425.00 605.00 90.00 +75 53.00 35.00 50.00 293.00 473.00 90.00 +76 45.00 65.00 20.00 943.00 1123.00 90.00 +77 90.00 35.00 10.00 142.00 322.00 90.00 +78 88.00 30.00 10.00 519.00 699.00 90.00 +79 88.00 35.00 20.00 50.00 230.00 90.00 +80 87.00 30.00 10.00 610.00 790.00 90.00 +81 85.00 25.00 10.00 705.00 885.00 90.00 +82 85.00 35.00 30.00 47.00 227.00 90.00 +83 75.00 55.00 20.00 305.00 485.00 90.00 +84 72.00 55.00 10.00 212.00 392.00 90.00 +85 70.00 58.00 20.00 401.00 581.00 90.00 +86 68.00 60.00 30.00 494.00 674.00 90.00 +87 66.00 55.00 10.00 116.00 296.00 90.00 +88 65.00 55.00 20.00 25.00 205.00 90.00 +89 65.00 60.00 30.00 587.00 767.00 90.00 +90 63.00 58.00 10.00 680.00 860.00 90.00 +91 60.00 55.00 10.00 20.00 200.00 90.00 +92 60.00 60.00 10.00 773.00 953.00 90.00 +93 67.00 85.00 20.00 315.00 495.00 90.00 +94 65.00 85.00 40.00 407.00 587.00 90.00 +95 65.00 82.00 10.00 221.00 401.00 90.00 +96 62.00 80.00 30.00 128.00 308.00 90.00 +97 60.00 80.00 10.00 36.00 216.00 90.00 +98 60.00 85.00 30.00 502.00 682.00 90.00 +99 58.00 75.00 20.00 30.00 210.00 90.00 +100 55.00 80.00 10.00 692.00 872.00 90.00 +101 55.00 85.00 20.00 597.00 777.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c108.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c108.dat new file mode 100644 index 000000000..a2d5f08f6 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c108.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 1236.00 0.00 +2 45.00 68.00 10.00 830.00 1049.00 90.00 +3 45.00 70.00 30.00 756.00 939.00 90.00 +4 42.00 66.00 10.00 16.00 336.00 90.00 +5 42.00 68.00 10.00 643.00 866.00 90.00 +6 42.00 65.00 10.00 15.00 226.00 90.00 +7 40.00 69.00 20.00 499.00 824.00 90.00 +8 40.00 66.00 20.00 87.00 308.00 90.00 +9 38.00 68.00 20.00 150.00 429.00 90.00 +10 38.00 70.00 10.00 429.00 710.00 90.00 +11 35.00 66.00 10.00 279.00 488.00 90.00 +12 35.00 69.00 10.00 363.00 590.00 90.00 +13 25.00 85.00 20.00 547.00 826.00 90.00 +14 22.00 75.00 30.00 30.00 280.00 90.00 +15 22.00 85.00 10.00 489.00 698.00 90.00 +16 20.00 80.00 40.00 318.00 495.00 90.00 +17 20.00 85.00 40.00 394.00 609.00 90.00 +18 18.00 75.00 20.00 33.00 226.00 90.00 +19 15.00 75.00 20.00 68.00 365.00 90.00 +20 15.00 80.00 10.00 176.00 447.00 90.00 +21 30.00 50.00 10.00 10.00 265.00 90.00 +22 30.00 52.00 20.00 836.00 1043.00 90.00 +23 28.00 52.00 20.00 704.00 991.00 90.00 +24 28.00 55.00 10.00 664.00 845.00 90.00 +25 25.00 50.00 10.00 15.00 333.00 90.00 +26 25.00 52.00 40.00 88.00 305.00 90.00 +27 25.00 55.00 10.00 502.00 821.00 90.00 +28 23.00 52.00 10.00 179.00 398.00 90.00 +29 23.00 55.00 20.00 476.00 663.00 90.00 +30 20.00 50.00 10.00 288.00 475.00 90.00 +31 20.00 55.00 10.00 368.00 585.00 90.00 +32 10.00 35.00 20.00 144.00 293.00 90.00 +33 10.00 40.00 30.00 31.00 309.00 90.00 +34 8.00 40.00 40.00 33.00 313.00 90.00 +35 8.00 45.00 20.00 655.00 912.00 90.00 +36 5.00 35.00 10.00 191.00 436.00 90.00 +37 5.00 45.00 10.00 588.00 793.00 90.00 +38 2.00 40.00 20.00 305.00 512.00 90.00 +39 0.00 40.00 30.00 414.00 587.00 90.00 +40 0.00 45.00 20.00 481.00 710.00 90.00 +41 35.00 30.00 10.00 180.00 405.00 90.00 +42 35.00 32.00 10.00 63.00 338.00 90.00 +43 33.00 32.00 20.00 19.00 345.00 90.00 +44 33.00 35.00 10.00 16.00 273.00 90.00 +45 32.00 30.00 10.00 278.00 493.00 90.00 +46 30.00 30.00 10.00 453.00 688.00 90.00 +47 30.00 32.00 30.00 355.00 602.00 90.00 +48 30.00 35.00 10.00 837.00 1127.00 90.00 +49 28.00 30.00 10.00 539.00 786.00 90.00 +50 28.00 35.00 10.00 867.00 1126.00 90.00 +51 26.00 32.00 10.00 719.00 976.00 90.00 +52 25.00 30.00 10.00 635.00 876.00 90.00 +53 25.00 35.00 10.00 825.00 1056.00 90.00 +54 44.00 5.00 20.00 193.00 440.00 90.00 +55 42.00 10.00 40.00 78.00 365.00 90.00 +56 42.00 15.00 10.00 35.00 287.00 90.00 +57 40.00 5.00 30.00 308.00 513.00 90.00 +58 40.00 15.00 40.00 35.00 246.00 90.00 +59 38.00 5.00 30.00 376.00 629.00 90.00 +60 38.00 15.00 10.00 519.00 872.00 90.00 +61 35.00 5.00 20.00 463.00 728.00 90.00 +62 50.00 30.00 10.00 412.00 729.00 90.00 +63 50.00 35.00 20.00 181.00 398.00 90.00 +64 50.00 40.00 50.00 100.00 289.00 90.00 +65 48.00 30.00 10.00 539.00 786.00 90.00 +66 48.00 40.00 10.00 12.00 223.00 90.00 +67 47.00 35.00 10.00 753.00 948.00 90.00 +68 47.00 40.00 10.00 12.00 275.00 90.00 +69 45.00 30.00 10.00 669.00 842.00 90.00 +70 45.00 35.00 10.00 836.00 1049.00 90.00 +71 95.00 30.00 30.00 284.00 559.00 90.00 +72 95.00 35.00 20.00 194.00 459.00 90.00 +73 53.00 30.00 10.00 367.00 588.00 90.00 +74 92.00 30.00 10.00 370.00 659.00 90.00 +75 53.00 35.00 50.00 263.00 502.00 90.00 +76 45.00 65.00 20.00 847.00 1130.00 90.00 +77 90.00 35.00 10.00 119.00 344.00 90.00 +78 88.00 30.00 10.00 469.00 748.00 90.00 +79 88.00 35.00 20.00 50.00 295.00 90.00 +80 87.00 30.00 10.00 573.00 826.00 90.00 +81 85.00 25.00 10.00 694.00 895.00 90.00 +82 85.00 35.00 30.00 47.00 356.00 90.00 +83 75.00 55.00 20.00 293.00 496.00 90.00 +84 72.00 55.00 10.00 154.00 449.00 90.00 +85 70.00 58.00 20.00 360.00 621.00 90.00 +86 68.00 60.00 30.00 470.00 697.00 90.00 +87 66.00 55.00 10.00 76.00 335.00 90.00 +88 65.00 55.00 20.00 25.00 260.00 90.00 +89 65.00 60.00 30.00 551.00 802.00 90.00 +90 63.00 58.00 10.00 640.00 899.00 90.00 +91 60.00 55.00 10.00 20.00 276.00 90.00 +92 60.00 60.00 10.00 756.00 969.00 90.00 +93 67.00 85.00 20.00 257.00 552.00 90.00 +94 65.00 85.00 40.00 409.00 584.00 90.00 +95 65.00 82.00 10.00 209.00 412.00 90.00 +96 62.00 80.00 30.00 130.00 305.00 90.00 +97 60.00 80.00 10.00 36.00 283.00 90.00 +98 60.00 85.00 30.00 470.00 713.00 90.00 +99 58.00 75.00 20.00 30.00 248.00 90.00 +100 55.00 80.00 10.00 628.00 935.00 90.00 +101 55.00 85.00 20.00 530.00 843.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c109.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c109.dat new file mode 100644 index 000000000..4147f4dc5 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c109.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 1236.00 0.00 +2 45.00 68.00 10.00 760.00 1120.00 90.00 +3 45.00 70.00 30.00 668.00 1028.00 90.00 +4 42.00 66.00 10.00 16.00 376.00 90.00 +5 42.00 68.00 10.00 575.00 935.00 90.00 +6 42.00 65.00 10.00 15.00 375.00 90.00 +7 40.00 69.00 20.00 482.00 842.00 90.00 +8 40.00 66.00 20.00 18.00 378.00 90.00 +9 38.00 68.00 20.00 110.00 470.00 90.00 +10 38.00 70.00 10.00 390.00 750.00 90.00 +11 35.00 66.00 10.00 204.00 564.00 90.00 +12 35.00 69.00 10.00 297.00 657.00 90.00 +13 25.00 85.00 20.00 507.00 867.00 90.00 +14 22.00 75.00 30.00 30.00 390.00 90.00 +15 22.00 85.00 10.00 414.00 774.00 90.00 +16 20.00 80.00 40.00 227.00 587.00 90.00 +17 20.00 85.00 40.00 322.00 682.00 90.00 +18 18.00 75.00 20.00 33.00 393.00 90.00 +19 15.00 75.00 20.00 37.00 397.00 90.00 +20 15.00 80.00 10.00 132.00 492.00 90.00 +21 30.00 50.00 10.00 10.00 370.00 90.00 +22 30.00 52.00 20.00 760.00 1120.00 90.00 +23 28.00 52.00 20.00 668.00 1028.00 90.00 +24 28.00 55.00 10.00 575.00 935.00 90.00 +25 25.00 50.00 10.00 15.00 375.00 90.00 +26 25.00 52.00 40.00 17.00 377.00 90.00 +27 25.00 55.00 10.00 482.00 842.00 90.00 +28 23.00 52.00 10.00 109.00 469.00 90.00 +29 23.00 55.00 20.00 390.00 750.00 90.00 +30 20.00 50.00 10.00 202.00 562.00 90.00 +31 20.00 55.00 10.00 297.00 657.00 90.00 +32 10.00 35.00 20.00 39.00 399.00 90.00 +33 10.00 40.00 30.00 31.00 391.00 90.00 +34 8.00 40.00 40.00 33.00 393.00 90.00 +35 8.00 45.00 20.00 604.00 964.00 90.00 +36 5.00 35.00 10.00 134.00 494.00 90.00 +37 5.00 45.00 10.00 511.00 871.00 90.00 +38 2.00 40.00 20.00 229.00 589.00 90.00 +39 0.00 40.00 30.00 321.00 681.00 90.00 +40 0.00 45.00 20.00 416.00 776.00 90.00 +41 35.00 30.00 10.00 113.00 473.00 90.00 +42 35.00 32.00 10.00 21.00 381.00 90.00 +43 33.00 32.00 20.00 19.00 379.00 90.00 +44 33.00 35.00 10.00 16.00 376.00 90.00 +45 32.00 30.00 10.00 206.00 566.00 90.00 +46 30.00 30.00 10.00 391.00 751.00 90.00 +47 30.00 32.00 30.00 299.00 659.00 90.00 +48 30.00 35.00 10.00 767.00 1127.00 90.00 +49 28.00 30.00 10.00 483.00 843.00 90.00 +50 28.00 35.00 10.00 766.00 1126.00 90.00 +51 26.00 32.00 10.00 668.00 1028.00 90.00 +52 25.00 30.00 10.00 576.00 936.00 90.00 +53 25.00 35.00 10.00 761.00 1121.00 90.00 +54 44.00 5.00 20.00 137.00 497.00 90.00 +55 42.00 10.00 40.00 42.00 402.00 90.00 +56 42.00 15.00 10.00 35.00 395.00 90.00 +57 40.00 5.00 30.00 231.00 591.00 90.00 +58 40.00 15.00 40.00 35.00 395.00 90.00 +59 38.00 5.00 30.00 323.00 683.00 90.00 +60 38.00 15.00 10.00 516.00 876.00 90.00 +61 35.00 5.00 20.00 416.00 776.00 90.00 +62 50.00 30.00 10.00 391.00 751.00 90.00 +63 50.00 35.00 20.00 110.00 470.00 90.00 +64 50.00 40.00 50.00 15.00 375.00 90.00 +65 48.00 30.00 10.00 483.00 843.00 90.00 +66 48.00 40.00 10.00 12.00 372.00 90.00 +67 47.00 35.00 10.00 671.00 1031.00 90.00 +68 47.00 40.00 10.00 12.00 372.00 90.00 +69 45.00 30.00 10.00 576.00 936.00 90.00 +70 45.00 35.00 10.00 763.00 1123.00 90.00 +71 95.00 30.00 30.00 242.00 602.00 90.00 +72 95.00 35.00 20.00 147.00 507.00 90.00 +73 53.00 30.00 10.00 298.00 658.00 90.00 +74 92.00 30.00 10.00 335.00 695.00 90.00 +75 53.00 35.00 50.00 203.00 563.00 90.00 +76 45.00 65.00 20.00 770.00 1130.00 90.00 +77 90.00 35.00 10.00 52.00 412.00 90.00 +78 88.00 30.00 10.00 429.00 789.00 90.00 +79 88.00 35.00 20.00 50.00 410.00 90.00 +80 87.00 30.00 10.00 520.00 880.00 90.00 +81 85.00 25.00 10.00 615.00 975.00 90.00 +82 85.00 35.00 30.00 47.00 407.00 90.00 +83 75.00 55.00 20.00 215.00 575.00 90.00 +84 72.00 55.00 10.00 122.00 482.00 90.00 +85 70.00 58.00 20.00 311.00 671.00 90.00 +86 68.00 60.00 30.00 404.00 764.00 90.00 +87 66.00 55.00 10.00 26.00 386.00 90.00 +88 65.00 55.00 20.00 25.00 385.00 90.00 +89 65.00 60.00 30.00 497.00 857.00 90.00 +90 63.00 58.00 10.00 590.00 950.00 90.00 +91 60.00 55.00 10.00 20.00 380.00 90.00 +92 60.00 60.00 10.00 683.00 1043.00 90.00 +93 67.00 85.00 20.00 225.00 585.00 90.00 +94 65.00 85.00 40.00 317.00 677.00 90.00 +95 65.00 82.00 10.00 131.00 491.00 90.00 +96 62.00 80.00 30.00 38.00 398.00 90.00 +97 60.00 80.00 10.00 36.00 396.00 90.00 +98 60.00 85.00 30.00 412.00 772.00 90.00 +99 58.00 75.00 20.00 30.00 390.00 90.00 +100 55.00 80.00 10.00 602.00 962.00 90.00 +101 55.00 85.00 20.00 507.00 867.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c201.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c201.dat new file mode 100644 index 000000000..c94ce24ed --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c201.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 3390.00 0.00 +2 52.00 75.00 10.00 311.00 471.00 90.00 +3 45.00 70.00 30.00 213.00 373.00 90.00 +4 62.00 69.00 10.00 1167.00 1327.00 90.00 +5 60.00 66.00 10.00 1261.00 1421.00 90.00 +6 42.00 65.00 10.00 25.00 185.00 90.00 +7 16.00 42.00 20.00 497.00 657.00 90.00 +8 58.00 70.00 20.00 1073.00 1233.00 90.00 +9 34.00 60.00 20.00 2887.00 3047.00 90.00 +10 28.00 70.00 10.00 2601.00 2761.00 90.00 +11 35.00 66.00 10.00 2791.00 2951.00 90.00 +12 35.00 69.00 10.00 2698.00 2858.00 90.00 +13 25.00 85.00 20.00 2119.00 2279.00 90.00 +14 22.00 75.00 30.00 2405.00 2565.00 90.00 +15 22.00 85.00 10.00 2026.00 2186.00 90.00 +16 20.00 80.00 40.00 2216.00 2376.00 90.00 +17 20.00 85.00 40.00 1934.00 2094.00 90.00 +18 18.00 75.00 20.00 2311.00 2471.00 90.00 +19 15.00 75.00 20.00 1742.00 1902.00 90.00 +20 15.00 80.00 10.00 1837.00 1997.00 90.00 +21 30.00 50.00 10.00 10.00 170.00 90.00 +22 30.00 56.00 20.00 2983.00 3143.00 90.00 +23 28.00 52.00 20.00 22.00 182.00 90.00 +24 14.00 66.00 10.00 1643.00 1803.00 90.00 +25 25.00 50.00 10.00 116.00 276.00 90.00 +26 22.00 66.00 40.00 2504.00 2664.00 90.00 +27 8.00 62.00 10.00 1545.00 1705.00 90.00 +28 23.00 52.00 10.00 209.00 369.00 90.00 +29 4.00 55.00 20.00 1447.00 1607.00 90.00 +30 20.00 50.00 10.00 398.00 558.00 90.00 +31 20.00 55.00 10.00 303.00 463.00 90.00 +32 10.00 35.00 20.00 781.00 941.00 90.00 +33 10.00 40.00 30.00 593.00 753.00 90.00 +34 8.00 40.00 40.00 685.00 845.00 90.00 +35 8.00 45.00 20.00 1346.00 1506.00 90.00 +36 5.00 35.00 10.00 876.00 1036.00 90.00 +37 5.00 45.00 10.00 1253.00 1413.00 90.00 +38 2.00 40.00 20.00 971.00 1131.00 90.00 +39 0.00 40.00 30.00 1063.00 1223.00 90.00 +40 0.00 45.00 20.00 1158.00 1318.00 90.00 +41 36.00 18.00 10.00 1819.00 1979.00 90.00 +42 35.00 32.00 10.00 2758.00 2918.00 90.00 +43 33.00 32.00 20.00 2666.00 2826.00 90.00 +44 33.00 35.00 10.00 2573.00 2733.00 90.00 +45 32.00 20.00 10.00 1913.00 2073.00 90.00 +46 30.00 30.00 10.00 2105.00 2265.00 90.00 +47 34.00 25.00 30.00 2009.00 2169.00 90.00 +48 30.00 35.00 10.00 2480.00 2640.00 90.00 +49 36.00 40.00 10.00 2856.00 3016.00 90.00 +50 48.00 20.00 10.00 967.00 1127.00 90.00 +51 26.00 32.00 10.00 2292.00 2452.00 90.00 +52 25.00 30.00 10.00 2200.00 2360.00 90.00 +53 25.00 35.00 10.00 2385.00 2545.00 90.00 +54 44.00 5.00 20.00 1256.00 1416.00 90.00 +55 42.00 10.00 40.00 1160.00 1320.00 90.00 +56 42.00 15.00 10.00 1065.00 1225.00 90.00 +57 40.00 5.00 30.00 1350.00 1510.00 90.00 +58 38.00 15.00 40.00 1725.00 1885.00 90.00 +59 38.00 5.00 30.00 1442.00 1602.00 90.00 +60 38.00 10.00 10.00 1630.00 1790.00 90.00 +61 35.00 5.00 20.00 1535.00 1695.00 90.00 +62 50.00 30.00 10.00 401.00 561.00 90.00 +63 50.00 35.00 20.00 120.00 280.00 90.00 +64 50.00 40.00 50.00 25.00 185.00 90.00 +65 48.00 30.00 10.00 493.00 653.00 90.00 +66 44.00 25.00 10.00 871.00 1031.00 90.00 +67 47.00 35.00 10.00 588.00 748.00 90.00 +68 47.00 40.00 10.00 12.00 172.00 90.00 +69 42.00 30.00 10.00 776.00 936.00 90.00 +70 45.00 35.00 10.00 680.00 840.00 90.00 +71 95.00 30.00 30.00 2321.00 2481.00 90.00 +72 95.00 35.00 20.00 2226.00 2386.00 90.00 +73 53.00 30.00 10.00 308.00 468.00 90.00 +74 92.00 30.00 10.00 2414.00 2574.00 90.00 +75 53.00 35.00 50.00 213.00 373.00 90.00 +76 45.00 65.00 20.00 118.00 278.00 90.00 +77 90.00 35.00 10.00 2131.00 2291.00 90.00 +78 72.00 45.00 10.00 2900.00 3060.00 90.00 +79 78.00 40.00 20.00 2802.00 2962.00 90.00 +80 87.00 30.00 10.00 2608.00 2768.00 90.00 +81 85.00 25.00 10.00 2513.00 2673.00 90.00 +82 85.00 35.00 30.00 2703.00 2863.00 90.00 +83 75.00 55.00 20.00 1925.00 2085.00 90.00 +84 72.00 55.00 10.00 1832.00 1992.00 90.00 +85 70.00 58.00 20.00 1641.00 1801.00 90.00 +86 86.00 46.00 30.00 2029.00 2189.00 90.00 +87 66.00 55.00 10.00 1736.00 1896.00 90.00 +88 64.00 46.00 20.00 3097.00 3257.00 90.00 +89 65.00 60.00 30.00 1546.00 1706.00 90.00 +90 56.00 64.00 10.00 1355.00 1515.00 90.00 +91 60.00 55.00 10.00 3119.00 3279.00 90.00 +92 60.00 60.00 10.00 1451.00 1611.00 90.00 +93 67.00 85.00 20.00 694.00 854.00 90.00 +94 42.00 58.00 40.00 8.00 168.00 90.00 +95 65.00 82.00 10.00 788.00 948.00 90.00 +96 62.00 80.00 30.00 881.00 1041.00 90.00 +97 62.00 40.00 10.00 3001.00 3161.00 90.00 +98 60.00 85.00 30.00 597.00 757.00 90.00 +99 58.00 75.00 20.00 978.00 1138.00 90.00 +100 55.00 80.00 10.00 407.00 567.00 90.00 +101 55.00 85.00 20.00 502.00 662.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c202.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c202.dat new file mode 100644 index 000000000..456ff628a --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c202.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 3390.00 0.00 +2 52.00 75.00 10.00 0.00 3272.00 90.00 +3 45.00 70.00 30.00 0.00 3279.00 90.00 +4 62.00 69.00 10.00 0.00 3270.00 90.00 +5 60.00 66.00 10.00 1261.00 1421.00 90.00 +6 42.00 65.00 10.00 0.00 3284.00 90.00 +7 16.00 42.00 20.00 497.00 657.00 90.00 +8 58.00 70.00 20.00 0.00 3273.00 90.00 +9 34.00 60.00 20.00 2887.00 3047.00 90.00 +10 28.00 70.00 10.00 2601.00 2761.00 90.00 +11 35.00 66.00 10.00 2791.00 2951.00 90.00 +12 35.00 69.00 10.00 2698.00 2858.00 90.00 +13 25.00 85.00 20.00 0.00 3261.00 90.00 +14 22.00 75.00 30.00 2405.00 2565.00 90.00 +15 22.00 85.00 10.00 2026.00 2186.00 90.00 +16 20.00 80.00 40.00 2216.00 2376.00 90.00 +17 20.00 85.00 40.00 1934.00 2094.00 90.00 +18 18.00 75.00 20.00 2311.00 2471.00 90.00 +19 15.00 75.00 20.00 1742.00 1902.00 90.00 +20 15.00 80.00 10.00 1837.00 1997.00 90.00 +21 30.00 50.00 10.00 10.00 170.00 90.00 +22 30.00 56.00 20.00 0.00 3288.00 90.00 +23 28.00 52.00 20.00 22.00 182.00 90.00 +24 14.00 66.00 10.00 1643.00 1803.00 90.00 +25 25.00 50.00 10.00 116.00 276.00 90.00 +26 22.00 66.00 40.00 2504.00 2664.00 90.00 +27 8.00 62.00 10.00 0.00 3265.00 90.00 +28 23.00 52.00 10.00 209.00 369.00 90.00 +29 4.00 55.00 20.00 1447.00 1607.00 90.00 +30 20.00 50.00 10.00 398.00 558.00 90.00 +31 20.00 55.00 10.00 303.00 463.00 90.00 +32 10.00 35.00 20.00 0.00 3266.00 90.00 +33 10.00 40.00 30.00 593.00 753.00 90.00 +34 8.00 40.00 40.00 685.00 845.00 90.00 +35 8.00 45.00 20.00 0.00 3267.00 90.00 +36 5.00 35.00 10.00 876.00 1036.00 90.00 +37 5.00 45.00 10.00 1253.00 1413.00 90.00 +38 2.00 40.00 20.00 0.00 3260.00 90.00 +39 0.00 40.00 30.00 1063.00 1223.00 90.00 +40 0.00 45.00 20.00 1158.00 1318.00 90.00 +41 36.00 18.00 10.00 1819.00 1979.00 90.00 +42 35.00 32.00 10.00 2758.00 2918.00 90.00 +43 33.00 32.00 20.00 2666.00 2826.00 90.00 +44 33.00 35.00 10.00 2573.00 2733.00 90.00 +45 32.00 20.00 10.00 1913.00 2073.00 90.00 +46 30.00 30.00 10.00 2105.00 2265.00 90.00 +47 34.00 25.00 30.00 2009.00 2169.00 90.00 +48 30.00 35.00 10.00 2480.00 2640.00 90.00 +49 36.00 40.00 10.00 0.00 3289.00 90.00 +50 48.00 20.00 10.00 967.00 1127.00 90.00 +51 26.00 32.00 10.00 0.00 3277.00 90.00 +52 25.00 30.00 10.00 2200.00 2360.00 90.00 +53 25.00 35.00 10.00 0.00 3278.00 90.00 +54 44.00 5.00 20.00 1256.00 1416.00 90.00 +55 42.00 10.00 40.00 1160.00 1320.00 90.00 +56 42.00 15.00 10.00 1065.00 1225.00 90.00 +57 40.00 5.00 30.00 1350.00 1510.00 90.00 +58 38.00 15.00 40.00 1725.00 1885.00 90.00 +59 38.00 5.00 30.00 1442.00 1602.00 90.00 +60 38.00 10.00 10.00 0.00 3259.00 90.00 +61 35.00 5.00 20.00 1535.00 1695.00 90.00 +62 50.00 30.00 10.00 401.00 561.00 90.00 +63 50.00 35.00 20.00 120.00 280.00 90.00 +64 50.00 40.00 50.00 25.00 185.00 90.00 +65 48.00 30.00 10.00 493.00 653.00 90.00 +66 44.00 25.00 10.00 871.00 1031.00 90.00 +67 47.00 35.00 10.00 588.00 748.00 90.00 +68 47.00 40.00 10.00 12.00 172.00 90.00 +69 42.00 30.00 10.00 776.00 936.00 90.00 +70 45.00 35.00 10.00 680.00 840.00 90.00 +71 95.00 30.00 30.00 2321.00 2481.00 90.00 +72 95.00 35.00 20.00 2226.00 2386.00 90.00 +73 53.00 30.00 10.00 0.00 3276.00 90.00 +74 92.00 30.00 10.00 2414.00 2574.00 90.00 +75 53.00 35.00 50.00 213.00 373.00 90.00 +76 45.00 65.00 20.00 0.00 3284.00 90.00 +77 90.00 35.00 10.00 2131.00 2291.00 90.00 +78 72.00 45.00 10.00 2900.00 3060.00 90.00 +79 78.00 40.00 20.00 2802.00 2962.00 90.00 +80 87.00 30.00 10.00 2608.00 2768.00 90.00 +81 85.00 25.00 10.00 2513.00 2673.00 90.00 +82 85.00 35.00 30.00 2703.00 2863.00 90.00 +83 75.00 55.00 20.00 0.00 3264.00 90.00 +84 72.00 55.00 10.00 0.00 3267.00 90.00 +85 70.00 58.00 20.00 1641.00 1801.00 90.00 +86 86.00 46.00 30.00 0.00 3253.00 90.00 +87 66.00 55.00 10.00 1736.00 1896.00 90.00 +88 64.00 46.00 20.00 3097.00 3257.00 90.00 +89 65.00 60.00 30.00 1546.00 1706.00 90.00 +90 56.00 64.00 10.00 1355.00 1515.00 90.00 +91 60.00 55.00 10.00 3119.00 3279.00 90.00 +92 60.00 60.00 10.00 0.00 3277.00 90.00 +93 67.00 85.00 20.00 694.00 854.00 90.00 +94 42.00 58.00 40.00 8.00 168.00 90.00 +95 65.00 82.00 10.00 0.00 3259.00 90.00 +96 62.00 80.00 30.00 0.00 3262.00 90.00 +97 62.00 40.00 10.00 0.00 3275.00 90.00 +98 60.00 85.00 30.00 597.00 757.00 90.00 +99 58.00 75.00 20.00 0.00 3269.00 90.00 +100 55.00 80.00 10.00 407.00 567.00 90.00 +101 55.00 85.00 20.00 502.00 662.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c203.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c203.dat new file mode 100644 index 000000000..4b72db09a --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c203.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 3390.00 0.00 +2 52.00 75.00 10.00 0.00 3272.00 90.00 +3 45.00 70.00 30.00 0.00 3279.00 90.00 +4 62.00 69.00 10.00 0.00 3270.00 90.00 +5 60.00 66.00 10.00 1261.00 1421.00 90.00 +6 42.00 65.00 10.00 0.00 3284.00 90.00 +7 16.00 42.00 20.00 497.00 657.00 90.00 +8 58.00 70.00 20.00 0.00 3273.00 90.00 +9 34.00 60.00 20.00 2887.00 3047.00 90.00 +10 28.00 70.00 10.00 2601.00 2761.00 90.00 +11 35.00 66.00 10.00 2791.00 2951.00 90.00 +12 35.00 69.00 10.00 2698.00 2858.00 90.00 +13 25.00 85.00 20.00 0.00 3261.00 90.00 +14 22.00 75.00 30.00 2405.00 2565.00 90.00 +15 22.00 85.00 10.00 0.00 3260.00 90.00 +16 20.00 80.00 40.00 2216.00 2376.00 90.00 +17 20.00 85.00 40.00 0.00 3259.00 90.00 +18 18.00 75.00 20.00 2311.00 2471.00 90.00 +19 15.00 75.00 20.00 0.00 3264.00 90.00 +20 15.00 80.00 10.00 0.00 3260.00 90.00 +21 30.00 50.00 10.00 0.00 3290.00 90.00 +22 30.00 56.00 20.00 0.00 3288.00 90.00 +23 28.00 52.00 20.00 22.00 182.00 90.00 +24 14.00 66.00 10.00 1643.00 1803.00 90.00 +25 25.00 50.00 10.00 0.00 3285.00 90.00 +26 22.00 66.00 40.00 2504.00 2664.00 90.00 +27 8.00 62.00 10.00 0.00 3265.00 90.00 +28 23.00 52.00 10.00 209.00 369.00 90.00 +29 4.00 55.00 20.00 0.00 3263.00 90.00 +30 20.00 50.00 10.00 0.00 3280.00 90.00 +31 20.00 55.00 10.00 303.00 463.00 90.00 +32 10.00 35.00 20.00 0.00 3266.00 90.00 +33 10.00 40.00 30.00 0.00 3268.00 90.00 +34 8.00 40.00 40.00 685.00 845.00 90.00 +35 8.00 45.00 20.00 0.00 3267.00 90.00 +36 5.00 35.00 10.00 876.00 1036.00 90.00 +37 5.00 45.00 10.00 1253.00 1413.00 90.00 +38 2.00 40.00 20.00 0.00 3260.00 90.00 +39 0.00 40.00 30.00 1063.00 1223.00 90.00 +40 0.00 45.00 20.00 1158.00 1318.00 90.00 +41 36.00 18.00 10.00 1819.00 1979.00 90.00 +42 35.00 32.00 10.00 2758.00 2918.00 90.00 +43 33.00 32.00 20.00 2666.00 2826.00 90.00 +44 33.00 35.00 10.00 0.00 3283.00 90.00 +45 32.00 20.00 10.00 1913.00 2073.00 90.00 +46 30.00 30.00 10.00 2105.00 2265.00 90.00 +47 34.00 25.00 30.00 0.00 3274.00 90.00 +48 30.00 35.00 10.00 0.00 3281.00 90.00 +49 36.00 40.00 10.00 0.00 3289.00 90.00 +50 48.00 20.00 10.00 967.00 1127.00 90.00 +51 26.00 32.00 10.00 0.00 3277.00 90.00 +52 25.00 30.00 10.00 0.00 3275.00 90.00 +53 25.00 35.00 10.00 0.00 3278.00 90.00 +54 44.00 5.00 20.00 1256.00 1416.00 90.00 +55 42.00 10.00 40.00 0.00 3259.00 90.00 +56 42.00 15.00 10.00 1065.00 1225.00 90.00 +57 40.00 5.00 30.00 1350.00 1510.00 90.00 +58 38.00 15.00 40.00 0.00 3264.00 90.00 +59 38.00 5.00 30.00 1442.00 1602.00 90.00 +60 38.00 10.00 10.00 0.00 3259.00 90.00 +61 35.00 5.00 20.00 0.00 3254.00 90.00 +62 50.00 30.00 10.00 0.00 3277.00 90.00 +63 50.00 35.00 20.00 120.00 280.00 90.00 +64 50.00 40.00 50.00 0.00 3285.00 90.00 +65 48.00 30.00 10.00 493.00 653.00 90.00 +66 44.00 25.00 10.00 871.00 1031.00 90.00 +67 47.00 35.00 10.00 588.00 748.00 90.00 +68 47.00 40.00 10.00 12.00 172.00 90.00 +69 42.00 30.00 10.00 776.00 936.00 90.00 +70 45.00 35.00 10.00 680.00 840.00 90.00 +71 95.00 30.00 30.00 2321.00 2481.00 90.00 +72 95.00 35.00 20.00 0.00 3242.00 90.00 +73 53.00 30.00 10.00 0.00 3276.00 90.00 +74 92.00 30.00 10.00 0.00 3244.00 90.00 +75 53.00 35.00 50.00 213.00 373.00 90.00 +76 45.00 65.00 20.00 0.00 3284.00 90.00 +77 90.00 35.00 10.00 2131.00 2291.00 90.00 +78 72.00 45.00 10.00 2900.00 3060.00 90.00 +79 78.00 40.00 20.00 2802.00 2962.00 90.00 +80 87.00 30.00 10.00 2608.00 2768.00 90.00 +81 85.00 25.00 10.00 2513.00 2673.00 90.00 +82 85.00 35.00 30.00 0.00 3252.00 90.00 +83 75.00 55.00 20.00 0.00 3264.00 90.00 +84 72.00 55.00 10.00 0.00 3267.00 90.00 +85 70.00 58.00 20.00 1641.00 1801.00 90.00 +86 86.00 46.00 30.00 0.00 3253.00 90.00 +87 66.00 55.00 10.00 0.00 3273.00 90.00 +88 64.00 46.00 20.00 3097.00 3257.00 90.00 +89 65.00 60.00 30.00 1546.00 1706.00 90.00 +90 56.00 64.00 10.00 0.00 3278.00 90.00 +91 60.00 55.00 10.00 0.00 3279.00 90.00 +92 60.00 60.00 10.00 0.00 3277.00 90.00 +93 67.00 85.00 20.00 694.00 854.00 90.00 +94 42.00 58.00 40.00 8.00 168.00 90.00 +95 65.00 82.00 10.00 0.00 3259.00 90.00 +96 62.00 80.00 30.00 0.00 3262.00 90.00 +97 62.00 40.00 10.00 0.00 3275.00 90.00 +98 60.00 85.00 30.00 0.00 3259.00 90.00 +99 58.00 75.00 20.00 0.00 3269.00 90.00 +100 55.00 80.00 10.00 407.00 567.00 90.00 +101 55.00 85.00 20.00 502.00 662.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c204.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c204.dat new file mode 100644 index 000000000..9099a34a9 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c204.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 3390.00 0.00 +2 52.00 75.00 10.00 0.00 3272.00 90.00 +3 45.00 70.00 30.00 0.00 3279.00 90.00 +4 62.00 69.00 10.00 0.00 3270.00 90.00 +5 60.00 66.00 10.00 1261.00 1421.00 90.00 +6 42.00 65.00 10.00 0.00 3284.00 90.00 +7 16.00 42.00 20.00 0.00 3274.00 90.00 +8 58.00 70.00 20.00 0.00 3273.00 90.00 +9 34.00 60.00 20.00 2887.00 3047.00 90.00 +10 28.00 70.00 10.00 2601.00 2761.00 90.00 +11 35.00 66.00 10.00 0.00 3283.00 90.00 +12 35.00 69.00 10.00 2698.00 2858.00 90.00 +13 25.00 85.00 20.00 0.00 3261.00 90.00 +14 22.00 75.00 30.00 2405.00 2565.00 90.00 +15 22.00 85.00 10.00 0.00 3260.00 90.00 +16 20.00 80.00 40.00 2216.00 2376.00 90.00 +17 20.00 85.00 40.00 0.00 3259.00 90.00 +18 18.00 75.00 20.00 0.00 3266.00 90.00 +19 15.00 75.00 20.00 0.00 3264.00 90.00 +20 15.00 80.00 10.00 0.00 3260.00 90.00 +21 30.00 50.00 10.00 0.00 3290.00 90.00 +22 30.00 56.00 20.00 0.00 3288.00 90.00 +23 28.00 52.00 20.00 0.00 3287.00 90.00 +24 14.00 66.00 10.00 1643.00 1803.00 90.00 +25 25.00 50.00 10.00 0.00 3285.00 90.00 +26 22.00 66.00 40.00 2504.00 2664.00 90.00 +27 8.00 62.00 10.00 0.00 3265.00 90.00 +28 23.00 52.00 10.00 0.00 3282.00 90.00 +29 4.00 55.00 20.00 0.00 3263.00 90.00 +30 20.00 50.00 10.00 0.00 3280.00 90.00 +31 20.00 55.00 10.00 0.00 3279.00 90.00 +32 10.00 35.00 20.00 0.00 3266.00 90.00 +33 10.00 40.00 30.00 0.00 3268.00 90.00 +34 8.00 40.00 40.00 0.00 3266.00 90.00 +35 8.00 45.00 20.00 0.00 3267.00 90.00 +36 5.00 35.00 10.00 0.00 3261.00 90.00 +37 5.00 45.00 10.00 0.00 3264.00 90.00 +38 2.00 40.00 20.00 0.00 3260.00 90.00 +39 0.00 40.00 30.00 1063.00 1223.00 90.00 +40 0.00 45.00 20.00 0.00 3259.00 90.00 +41 36.00 18.00 10.00 0.00 3267.00 90.00 +42 35.00 32.00 10.00 0.00 3281.00 90.00 +43 33.00 32.00 20.00 0.00 3280.00 90.00 +44 33.00 35.00 10.00 0.00 3283.00 90.00 +45 32.00 20.00 10.00 1913.00 2073.00 90.00 +46 30.00 30.00 10.00 0.00 3277.00 90.00 +47 34.00 25.00 30.00 0.00 3274.00 90.00 +48 30.00 35.00 10.00 0.00 3281.00 90.00 +49 36.00 40.00 10.00 0.00 3289.00 90.00 +50 48.00 20.00 10.00 0.00 3268.00 90.00 +51 26.00 32.00 10.00 0.00 3277.00 90.00 +52 25.00 30.00 10.00 0.00 3275.00 90.00 +53 25.00 35.00 10.00 0.00 3278.00 90.00 +54 44.00 5.00 20.00 1256.00 1416.00 90.00 +55 42.00 10.00 40.00 0.00 3259.00 90.00 +56 42.00 15.00 10.00 1065.00 1225.00 90.00 +57 40.00 5.00 30.00 0.00 3255.00 90.00 +58 38.00 15.00 40.00 0.00 3264.00 90.00 +59 38.00 5.00 30.00 1442.00 1602.00 90.00 +60 38.00 10.00 10.00 0.00 3259.00 90.00 +61 35.00 5.00 20.00 0.00 3254.00 90.00 +62 50.00 30.00 10.00 0.00 3277.00 90.00 +63 50.00 35.00 20.00 120.00 280.00 90.00 +64 50.00 40.00 50.00 0.00 3285.00 90.00 +65 48.00 30.00 10.00 0.00 3278.00 90.00 +66 44.00 25.00 10.00 0.00 3274.00 90.00 +67 47.00 35.00 10.00 0.00 3283.00 90.00 +68 47.00 40.00 10.00 12.00 172.00 90.00 +69 42.00 30.00 10.00 0.00 3279.00 90.00 +70 45.00 35.00 10.00 680.00 840.00 90.00 +71 95.00 30.00 30.00 0.00 3241.00 90.00 +72 95.00 35.00 20.00 0.00 3242.00 90.00 +73 53.00 30.00 10.00 0.00 3276.00 90.00 +74 92.00 30.00 10.00 0.00 3244.00 90.00 +75 53.00 35.00 50.00 213.00 373.00 90.00 +76 45.00 65.00 20.00 0.00 3284.00 90.00 +77 90.00 35.00 10.00 2131.00 2291.00 90.00 +78 72.00 45.00 10.00 2900.00 3060.00 90.00 +79 78.00 40.00 20.00 0.00 3260.00 90.00 +80 87.00 30.00 10.00 2608.00 2768.00 90.00 +81 85.00 25.00 10.00 0.00 3248.00 90.00 +82 85.00 35.00 30.00 0.00 3252.00 90.00 +83 75.00 55.00 20.00 0.00 3264.00 90.00 +84 72.00 55.00 10.00 0.00 3267.00 90.00 +85 70.00 58.00 20.00 1641.00 1801.00 90.00 +86 86.00 46.00 30.00 0.00 3253.00 90.00 +87 66.00 55.00 10.00 0.00 3273.00 90.00 +88 64.00 46.00 20.00 3097.00 3257.00 90.00 +89 65.00 60.00 30.00 0.00 3273.00 90.00 +90 56.00 64.00 10.00 0.00 3278.00 90.00 +91 60.00 55.00 10.00 0.00 3279.00 90.00 +92 60.00 60.00 10.00 0.00 3277.00 90.00 +93 67.00 85.00 20.00 694.00 854.00 90.00 +94 42.00 58.00 40.00 0.00 3291.00 90.00 +95 65.00 82.00 10.00 0.00 3259.00 90.00 +96 62.00 80.00 30.00 0.00 3262.00 90.00 +97 62.00 40.00 10.00 0.00 3275.00 90.00 +98 60.00 85.00 30.00 0.00 3259.00 90.00 +99 58.00 75.00 20.00 0.00 3269.00 90.00 +100 55.00 80.00 10.00 407.00 567.00 90.00 +101 55.00 85.00 20.00 502.00 662.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c205.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c205.dat new file mode 100644 index 000000000..78e4ee456 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c205.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 3390.00 0.00 +2 52.00 75.00 10.00 231.00 551.00 90.00 +3 45.00 70.00 30.00 133.00 453.00 90.00 +4 62.00 69.00 10.00 1087.00 1407.00 90.00 +5 60.00 66.00 10.00 1181.00 1501.00 90.00 +6 42.00 65.00 10.00 15.00 335.00 90.00 +7 16.00 42.00 20.00 417.00 737.00 90.00 +8 58.00 70.00 20.00 993.00 1313.00 90.00 +9 34.00 60.00 20.00 2807.00 3127.00 90.00 +10 28.00 70.00 10.00 2521.00 2841.00 90.00 +11 35.00 66.00 10.00 2711.00 3031.00 90.00 +12 35.00 69.00 10.00 2618.00 2938.00 90.00 +13 25.00 85.00 20.00 2039.00 2359.00 90.00 +14 22.00 75.00 30.00 2325.00 2645.00 90.00 +15 22.00 85.00 10.00 1946.00 2266.00 90.00 +16 20.00 80.00 40.00 2136.00 2456.00 90.00 +17 20.00 85.00 40.00 1854.00 2174.00 90.00 +18 18.00 75.00 20.00 2231.00 2551.00 90.00 +19 15.00 75.00 20.00 1662.00 1982.00 90.00 +20 15.00 80.00 10.00 1757.00 2077.00 90.00 +21 30.00 50.00 10.00 10.00 330.00 90.00 +22 30.00 56.00 20.00 2903.00 3223.00 90.00 +23 28.00 52.00 20.00 12.00 332.00 90.00 +24 14.00 66.00 10.00 1563.00 1883.00 90.00 +25 25.00 50.00 10.00 36.00 356.00 90.00 +26 22.00 66.00 40.00 2424.00 2744.00 90.00 +27 8.00 62.00 10.00 1465.00 1785.00 90.00 +28 23.00 52.00 10.00 129.00 449.00 90.00 +29 4.00 55.00 20.00 1367.00 1687.00 90.00 +30 20.00 50.00 10.00 318.00 638.00 90.00 +31 20.00 55.00 10.00 223.00 543.00 90.00 +32 10.00 35.00 20.00 701.00 1021.00 90.00 +33 10.00 40.00 30.00 513.00 833.00 90.00 +34 8.00 40.00 40.00 605.00 925.00 90.00 +35 8.00 45.00 20.00 1266.00 1586.00 90.00 +36 5.00 35.00 10.00 796.00 1116.00 90.00 +37 5.00 45.00 10.00 1173.00 1493.00 90.00 +38 2.00 40.00 20.00 891.00 1211.00 90.00 +39 0.00 40.00 30.00 983.00 1303.00 90.00 +40 0.00 45.00 20.00 1078.00 1398.00 90.00 +41 36.00 18.00 10.00 1739.00 2059.00 90.00 +42 35.00 32.00 10.00 2678.00 2998.00 90.00 +43 33.00 32.00 20.00 2586.00 2906.00 90.00 +44 33.00 35.00 10.00 2493.00 2813.00 90.00 +45 32.00 20.00 10.00 1833.00 2153.00 90.00 +46 30.00 30.00 10.00 2025.00 2345.00 90.00 +47 34.00 25.00 30.00 1929.00 2249.00 90.00 +48 30.00 35.00 10.00 2400.00 2720.00 90.00 +49 36.00 40.00 10.00 2776.00 3096.00 90.00 +50 48.00 20.00 10.00 887.00 1207.00 90.00 +51 26.00 32.00 10.00 2212.00 2532.00 90.00 +52 25.00 30.00 10.00 2120.00 2440.00 90.00 +53 25.00 35.00 10.00 2305.00 2625.00 90.00 +54 44.00 5.00 20.00 1176.00 1496.00 90.00 +55 42.00 10.00 40.00 1080.00 1400.00 90.00 +56 42.00 15.00 10.00 985.00 1305.00 90.00 +57 40.00 5.00 30.00 1270.00 1590.00 90.00 +58 38.00 15.00 40.00 1645.00 1965.00 90.00 +59 38.00 5.00 30.00 1362.00 1682.00 90.00 +60 38.00 10.00 10.00 1550.00 1870.00 90.00 +61 35.00 5.00 20.00 1455.00 1775.00 90.00 +62 50.00 30.00 10.00 321.00 641.00 90.00 +63 50.00 35.00 20.00 40.00 360.00 90.00 +64 50.00 40.00 50.00 14.00 334.00 90.00 +65 48.00 30.00 10.00 413.00 733.00 90.00 +66 44.00 25.00 10.00 791.00 1111.00 90.00 +67 47.00 35.00 10.00 508.00 828.00 90.00 +68 47.00 40.00 10.00 12.00 332.00 90.00 +69 42.00 30.00 10.00 696.00 1016.00 90.00 +70 45.00 35.00 10.00 600.00 920.00 90.00 +71 95.00 30.00 30.00 2241.00 2561.00 90.00 +72 95.00 35.00 20.00 2146.00 2466.00 90.00 +73 53.00 30.00 10.00 228.00 548.00 90.00 +74 92.00 30.00 10.00 2334.00 2654.00 90.00 +75 53.00 35.00 50.00 133.00 453.00 90.00 +76 45.00 65.00 20.00 38.00 358.00 90.00 +77 90.00 35.00 10.00 2051.00 2371.00 90.00 +78 72.00 45.00 10.00 2820.00 3140.00 90.00 +79 78.00 40.00 20.00 2722.00 3042.00 90.00 +80 87.00 30.00 10.00 2528.00 2848.00 90.00 +81 85.00 25.00 10.00 2433.00 2753.00 90.00 +82 85.00 35.00 30.00 2623.00 2943.00 90.00 +83 75.00 55.00 20.00 1845.00 2165.00 90.00 +84 72.00 55.00 10.00 1752.00 2072.00 90.00 +85 70.00 58.00 20.00 1561.00 1881.00 90.00 +86 86.00 46.00 30.00 1949.00 2269.00 90.00 +87 66.00 55.00 10.00 1656.00 1976.00 90.00 +88 64.00 46.00 20.00 2955.00 3275.00 90.00 +89 65.00 60.00 30.00 1466.00 1786.00 90.00 +90 56.00 64.00 10.00 1275.00 1595.00 90.00 +91 60.00 55.00 10.00 2959.00 3279.00 90.00 +92 60.00 60.00 10.00 1371.00 1691.00 90.00 +93 67.00 85.00 20.00 614.00 934.00 90.00 +94 42.00 58.00 40.00 8.00 328.00 90.00 +95 65.00 82.00 10.00 708.00 1028.00 90.00 +96 62.00 80.00 30.00 801.00 1121.00 90.00 +97 62.00 40.00 10.00 2921.00 3241.00 90.00 +98 60.00 85.00 30.00 517.00 837.00 90.00 +99 58.00 75.00 20.00 898.00 1218.00 90.00 +100 55.00 80.00 10.00 327.00 647.00 90.00 +101 55.00 85.00 20.00 422.00 742.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c206.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c206.dat new file mode 100644 index 000000000..7c7938e9b --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c206.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 3390.00 0.00 +2 52.00 75.00 10.00 213.00 568.00 90.00 +3 45.00 70.00 30.00 22.00 563.00 90.00 +4 62.00 69.00 10.00 1030.00 1463.00 90.00 +5 60.00 66.00 10.00 1154.00 1527.00 90.00 +6 42.00 65.00 10.00 15.00 402.00 90.00 +7 16.00 42.00 20.00 331.00 822.00 90.00 +8 58.00 70.00 20.00 965.00 1340.00 90.00 +9 34.00 60.00 20.00 2653.00 3280.00 90.00 +10 28.00 70.00 10.00 2385.00 2976.00 90.00 +11 35.00 66.00 10.00 2628.00 3113.00 90.00 +12 35.00 69.00 10.00 2603.00 2952.00 90.00 +13 25.00 85.00 20.00 1985.00 2412.00 90.00 +14 22.00 75.00 30.00 2310.00 2659.00 90.00 +15 22.00 85.00 10.00 1846.00 2365.00 90.00 +16 20.00 80.00 40.00 2077.00 2514.00 90.00 +17 20.00 85.00 40.00 1763.00 2264.00 90.00 +18 18.00 75.00 20.00 2143.00 2638.00 90.00 +19 15.00 75.00 20.00 1560.00 2083.00 90.00 +20 15.00 80.00 10.00 1689.00 2144.00 90.00 +21 30.00 50.00 10.00 10.00 645.00 90.00 +22 30.00 56.00 20.00 2675.00 3288.00 90.00 +23 28.00 52.00 20.00 12.00 505.00 90.00 +24 14.00 66.00 10.00 1519.00 1926.00 90.00 +25 25.00 50.00 10.00 23.00 368.00 90.00 +26 22.00 66.00 40.00 2380.00 2787.00 90.00 +27 8.00 62.00 10.00 1330.00 1919.00 90.00 +28 23.00 52.00 10.00 93.00 484.00 90.00 +29 4.00 55.00 20.00 1268.00 1785.00 90.00 +30 20.00 50.00 10.00 168.00 787.00 90.00 +31 20.00 55.00 10.00 170.00 595.00 90.00 +32 10.00 35.00 20.00 585.00 1136.00 90.00 +33 10.00 40.00 30.00 448.00 897.00 90.00 +34 8.00 40.00 40.00 499.00 1030.00 90.00 +35 8.00 45.00 20.00 1190.00 1661.00 90.00 +36 5.00 35.00 10.00 666.00 1245.00 90.00 +37 5.00 45.00 10.00 1076.00 1589.00 90.00 +38 2.00 40.00 20.00 772.00 1329.00 90.00 +39 0.00 40.00 30.00 890.00 1395.00 90.00 +40 0.00 45.00 20.00 1036.00 1439.00 90.00 +41 36.00 18.00 10.00 1612.00 2185.00 90.00 +42 35.00 32.00 10.00 2599.00 3076.00 90.00 +43 33.00 32.00 20.00 2529.00 2962.00 90.00 +44 33.00 35.00 10.00 2463.00 2842.00 90.00 +45 32.00 20.00 10.00 1745.00 2240.00 90.00 +46 30.00 30.00 10.00 1932.00 2437.00 90.00 +47 34.00 25.00 30.00 1884.00 2293.00 90.00 +48 30.00 35.00 10.00 2348.00 2771.00 90.00 +49 36.00 40.00 10.00 2715.00 3156.00 90.00 +50 48.00 20.00 10.00 812.00 1281.00 90.00 +51 26.00 32.00 10.00 2018.00 2725.00 90.00 +52 25.00 30.00 10.00 2015.00 2544.00 90.00 +53 25.00 35.00 10.00 2201.00 2728.00 90.00 +54 44.00 5.00 20.00 1078.00 1593.00 90.00 +55 42.00 10.00 40.00 998.00 1481.00 90.00 +56 42.00 15.00 10.00 897.00 1392.00 90.00 +57 40.00 5.00 30.00 1199.00 1660.00 90.00 +58 38.00 15.00 40.00 1552.00 2057.00 90.00 +59 38.00 5.00 30.00 1263.00 1780.00 90.00 +60 38.00 10.00 10.00 1498.00 1921.00 90.00 +61 35.00 5.00 20.00 1325.00 1904.00 90.00 +62 50.00 30.00 10.00 223.00 738.00 90.00 +63 50.00 35.00 20.00 18.00 474.00 90.00 +64 50.00 40.00 50.00 14.00 360.00 90.00 +65 48.00 30.00 10.00 246.00 899.00 90.00 +66 44.00 25.00 10.00 704.00 1197.00 90.00 +67 47.00 35.00 10.00 393.00 942.00 90.00 +68 47.00 40.00 10.00 12.00 424.00 90.00 +69 42.00 30.00 10.00 641.00 1070.00 90.00 +70 45.00 35.00 10.00 534.00 985.00 90.00 +71 95.00 30.00 30.00 2119.00 2682.00 90.00 +72 95.00 35.00 20.00 2079.00 2532.00 90.00 +73 53.00 30.00 10.00 131.00 644.00 90.00 +74 92.00 30.00 10.00 2169.00 2818.00 90.00 +75 53.00 35.00 50.00 87.00 498.00 90.00 +76 45.00 65.00 20.00 15.00 607.00 90.00 +77 90.00 35.00 10.00 2002.00 2419.00 90.00 +78 72.00 45.00 10.00 2701.00 3258.00 90.00 +79 78.00 40.00 20.00 2599.00 3164.00 90.00 +80 87.00 30.00 10.00 2505.00 2870.00 90.00 +81 85.00 25.00 10.00 2369.00 2816.00 90.00 +82 85.00 35.00 30.00 2563.00 3002.00 90.00 +83 75.00 55.00 20.00 1783.00 2226.00 90.00 +84 72.00 55.00 10.00 1591.00 2232.00 90.00 +85 70.00 58.00 20.00 1513.00 1928.00 90.00 +86 86.00 46.00 30.00 1829.00 2388.00 90.00 +87 66.00 55.00 10.00 1604.00 2027.00 90.00 +88 64.00 46.00 20.00 2976.00 3275.00 90.00 +89 65.00 60.00 30.00 1338.00 1913.00 90.00 +90 56.00 64.00 10.00 1116.00 1753.00 90.00 +91 60.00 55.00 10.00 2789.00 3279.00 90.00 +92 60.00 60.00 10.00 1349.00 1712.00 90.00 +93 67.00 85.00 20.00 518.00 1029.00 90.00 +94 42.00 58.00 40.00 8.00 509.00 90.00 +95 65.00 82.00 10.00 549.00 1186.00 90.00 +96 62.00 80.00 30.00 744.00 1177.00 90.00 +97 62.00 40.00 10.00 2713.00 3275.00 90.00 +98 60.00 85.00 30.00 397.00 956.00 90.00 +99 58.00 75.00 20.00 839.00 1276.00 90.00 +100 55.00 80.00 10.00 272.00 701.00 90.00 +101 55.00 85.00 20.00 373.00 790.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c207.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c207.dat new file mode 100644 index 000000000..d3d17bd46 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c207.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 3390.00 0.00 +2 52.00 75.00 10.00 302.00 479.00 90.00 +3 45.00 70.00 30.00 157.00 428.00 90.00 +4 62.00 69.00 10.00 1138.00 1355.00 90.00 +5 60.00 66.00 10.00 1247.00 1434.00 90.00 +6 42.00 65.00 10.00 15.00 208.00 90.00 +7 16.00 42.00 20.00 209.00 944.00 90.00 +8 58.00 70.00 20.00 1059.00 1246.00 90.00 +9 34.00 60.00 20.00 2035.00 3288.00 90.00 +10 28.00 70.00 10.00 2090.00 3271.00 90.00 +11 35.00 66.00 10.00 2311.00 3283.00 90.00 +12 35.00 69.00 10.00 2428.00 3127.00 90.00 +13 25.00 85.00 20.00 1772.00 2625.00 90.00 +14 22.00 75.00 30.00 2135.00 2834.00 90.00 +15 22.00 85.00 10.00 1586.00 2625.00 90.00 +16 20.00 80.00 40.00 1858.00 2733.00 90.00 +17 20.00 85.00 40.00 1512.00 2515.00 90.00 +18 18.00 75.00 20.00 1895.00 2886.00 90.00 +19 15.00 75.00 20.00 1299.00 2344.00 90.00 +20 15.00 80.00 10.00 1461.00 2372.00 90.00 +21 30.00 50.00 10.00 10.00 963.00 90.00 +22 30.00 56.00 20.00 2062.00 3288.00 90.00 +23 28.00 52.00 20.00 12.00 752.00 90.00 +24 14.00 66.00 10.00 1316.00 2129.00 90.00 +25 25.00 50.00 10.00 15.00 532.00 90.00 +26 22.00 66.00 40.00 2177.00 2990.00 90.00 +27 8.00 62.00 10.00 1036.00 2213.00 90.00 +28 23.00 52.00 10.00 17.00 602.00 90.00 +29 4.00 55.00 20.00 1010.00 2043.00 90.00 +30 20.00 50.00 10.00 20.00 948.00 90.00 +31 20.00 55.00 10.00 63.00 702.00 90.00 +32 10.00 35.00 20.00 309.00 1412.00 90.00 +33 10.00 40.00 30.00 336.00 1009.00 90.00 +34 8.00 40.00 40.00 234.00 1295.00 90.00 +35 8.00 45.00 20.00 954.00 1897.00 90.00 +36 5.00 35.00 10.00 377.00 1534.00 90.00 +37 5.00 45.00 10.00 819.00 1846.00 90.00 +38 2.00 40.00 20.00 494.00 1607.00 90.00 +39 0.00 40.00 30.00 637.00 1648.00 90.00 +40 0.00 45.00 20.00 834.00 1641.00 90.00 +41 36.00 18.00 10.00 1468.00 2329.00 90.00 +42 35.00 32.00 10.00 2480.00 3195.00 90.00 +43 33.00 32.00 20.00 2421.00 3070.00 90.00 +44 33.00 35.00 10.00 2368.00 2937.00 90.00 +45 32.00 20.00 10.00 1621.00 2364.00 90.00 +46 30.00 30.00 10.00 1805.00 2564.00 90.00 +47 34.00 25.00 30.00 1782.00 2395.00 90.00 +48 30.00 35.00 10.00 2242.00 2877.00 90.00 +49 36.00 40.00 10.00 2605.00 3266.00 90.00 +50 48.00 20.00 10.00 812.00 1281.00 90.00 +51 26.00 32.00 10.00 1842.00 2901.00 90.00 +52 25.00 30.00 10.00 1883.00 2676.00 90.00 +53 25.00 35.00 10.00 2070.00 2859.00 90.00 +54 44.00 5.00 20.00 1078.00 1593.00 90.00 +55 42.00 10.00 40.00 998.00 1481.00 90.00 +56 42.00 15.00 10.00 897.00 1392.00 90.00 +57 40.00 5.00 30.00 1083.00 1776.00 90.00 +58 38.00 15.00 40.00 1426.00 2183.00 90.00 +59 38.00 5.00 30.00 1133.00 1910.00 90.00 +60 38.00 10.00 10.00 1392.00 2027.00 90.00 +61 35.00 5.00 20.00 1180.00 2049.00 90.00 +62 50.00 30.00 10.00 223.00 738.00 90.00 +63 50.00 35.00 20.00 18.00 474.00 90.00 +64 50.00 40.00 50.00 14.00 360.00 90.00 +65 48.00 30.00 10.00 246.00 899.00 90.00 +66 44.00 25.00 10.00 704.00 1197.00 90.00 +67 47.00 35.00 10.00 393.00 942.00 90.00 +68 47.00 40.00 10.00 12.00 424.00 90.00 +69 42.00 30.00 10.00 641.00 1070.00 90.00 +70 45.00 35.00 10.00 534.00 985.00 90.00 +71 95.00 30.00 30.00 2119.00 2682.00 90.00 +72 95.00 35.00 20.00 2192.00 2419.00 90.00 +73 53.00 30.00 10.00 131.00 644.00 90.00 +74 92.00 30.00 10.00 2169.00 2818.00 90.00 +75 53.00 35.00 50.00 87.00 498.00 90.00 +76 45.00 65.00 20.00 49.00 346.00 90.00 +77 90.00 35.00 10.00 2106.00 2315.00 90.00 +78 72.00 45.00 10.00 2701.00 3258.00 90.00 +79 78.00 40.00 20.00 2599.00 3164.00 90.00 +80 87.00 30.00 10.00 2505.00 2870.00 90.00 +81 85.00 25.00 10.00 2369.00 2816.00 90.00 +82 85.00 35.00 30.00 2563.00 3002.00 90.00 +83 75.00 55.00 20.00 1894.00 2115.00 90.00 +84 72.00 55.00 10.00 1751.00 2072.00 90.00 +85 70.00 58.00 20.00 1617.00 1824.00 90.00 +86 86.00 46.00 30.00 1969.00 2248.00 90.00 +87 66.00 55.00 10.00 1710.00 1921.00 90.00 +88 64.00 46.00 20.00 2976.00 3275.00 90.00 +89 65.00 60.00 30.00 1482.00 1769.00 90.00 +90 56.00 64.00 10.00 1275.00 1594.00 90.00 +91 60.00 55.00 10.00 2789.00 3279.00 90.00 +92 60.00 60.00 10.00 1440.00 1621.00 90.00 +93 67.00 85.00 20.00 646.00 901.00 90.00 +94 42.00 58.00 40.00 8.00 258.00 90.00 +95 65.00 82.00 10.00 708.00 1027.00 90.00 +96 62.00 80.00 30.00 852.00 1069.00 90.00 +97 62.00 40.00 10.00 2713.00 3275.00 90.00 +98 60.00 85.00 30.00 537.00 816.00 90.00 +99 58.00 75.00 20.00 948.00 1167.00 90.00 +100 55.00 80.00 10.00 379.00 594.00 90.00 +101 55.00 85.00 20.00 477.00 686.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c208.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c208.dat new file mode 100644 index 000000000..e487603bb --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/c208.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 3390.00 0.00 +2 52.00 75.00 10.00 71.00 711.00 90.00 +3 45.00 70.00 30.00 20.00 660.00 90.00 +4 62.00 69.00 10.00 927.00 1567.00 90.00 +5 60.00 66.00 10.00 1021.00 1661.00 90.00 +6 42.00 65.00 10.00 15.00 655.00 90.00 +7 16.00 42.00 20.00 257.00 897.00 90.00 +8 58.00 70.00 20.00 833.00 1473.00 90.00 +9 34.00 60.00 20.00 2647.00 3287.00 90.00 +10 28.00 70.00 10.00 2361.00 3001.00 90.00 +11 35.00 66.00 10.00 2551.00 3191.00 90.00 +12 35.00 69.00 10.00 2458.00 3098.00 90.00 +13 25.00 85.00 20.00 1879.00 2519.00 90.00 +14 22.00 75.00 30.00 2165.00 2805.00 90.00 +15 22.00 85.00 10.00 1786.00 2426.00 90.00 +16 20.00 80.00 40.00 1976.00 2616.00 90.00 +17 20.00 85.00 40.00 1694.00 2334.00 90.00 +18 18.00 75.00 20.00 2071.00 2711.00 90.00 +19 15.00 75.00 20.00 1502.00 2142.00 90.00 +20 15.00 80.00 10.00 1597.00 2237.00 90.00 +21 30.00 50.00 10.00 10.00 650.00 90.00 +22 30.00 56.00 20.00 2648.00 3288.00 90.00 +23 28.00 52.00 20.00 12.00 652.00 90.00 +24 14.00 66.00 10.00 1403.00 2043.00 90.00 +25 25.00 50.00 10.00 15.00 655.00 90.00 +26 22.00 66.00 40.00 2264.00 2904.00 90.00 +27 8.00 62.00 10.00 1305.00 1945.00 90.00 +28 23.00 52.00 10.00 17.00 657.00 90.00 +29 4.00 55.00 20.00 1207.00 1847.00 90.00 +30 20.00 50.00 10.00 158.00 798.00 90.00 +31 20.00 55.00 10.00 63.00 703.00 90.00 +32 10.00 35.00 20.00 541.00 1181.00 90.00 +33 10.00 40.00 30.00 353.00 993.00 90.00 +34 8.00 40.00 40.00 445.00 1085.00 90.00 +35 8.00 45.00 20.00 1106.00 1746.00 90.00 +36 5.00 35.00 10.00 636.00 1276.00 90.00 +37 5.00 45.00 10.00 1013.00 1653.00 90.00 +38 2.00 40.00 20.00 731.00 1371.00 90.00 +39 0.00 40.00 30.00 823.00 1463.00 90.00 +40 0.00 45.00 20.00 918.00 1558.00 90.00 +41 36.00 18.00 10.00 1579.00 2219.00 90.00 +42 35.00 32.00 10.00 2518.00 3158.00 90.00 +43 33.00 32.00 20.00 2426.00 3066.00 90.00 +44 33.00 35.00 10.00 2333.00 2973.00 90.00 +45 32.00 20.00 10.00 1673.00 2313.00 90.00 +46 30.00 30.00 10.00 1865.00 2505.00 90.00 +47 34.00 25.00 30.00 1769.00 2409.00 90.00 +48 30.00 35.00 10.00 2240.00 2880.00 90.00 +49 36.00 40.00 10.00 2616.00 3256.00 90.00 +50 48.00 20.00 10.00 727.00 1367.00 90.00 +51 26.00 32.00 10.00 2052.00 2692.00 90.00 +52 25.00 30.00 10.00 1960.00 2600.00 90.00 +53 25.00 35.00 10.00 2145.00 2785.00 90.00 +54 44.00 5.00 20.00 1016.00 1656.00 90.00 +55 42.00 10.00 40.00 920.00 1560.00 90.00 +56 42.00 15.00 10.00 825.00 1465.00 90.00 +57 40.00 5.00 30.00 1110.00 1750.00 90.00 +58 38.00 15.00 40.00 1485.00 2125.00 90.00 +59 38.00 5.00 30.00 1202.00 1842.00 90.00 +60 38.00 10.00 10.00 1390.00 2030.00 90.00 +61 35.00 5.00 20.00 1295.00 1935.00 90.00 +62 50.00 30.00 10.00 161.00 801.00 90.00 +63 50.00 35.00 20.00 18.00 658.00 90.00 +64 50.00 40.00 50.00 14.00 654.00 90.00 +65 48.00 30.00 10.00 253.00 893.00 90.00 +66 44.00 25.00 10.00 631.00 1271.00 90.00 +67 47.00 35.00 10.00 348.00 988.00 90.00 +68 47.00 40.00 10.00 12.00 652.00 90.00 +69 42.00 30.00 10.00 536.00 1176.00 90.00 +70 45.00 35.00 10.00 440.00 1080.00 90.00 +71 95.00 30.00 30.00 2081.00 2721.00 90.00 +72 95.00 35.00 20.00 1986.00 2626.00 90.00 +73 53.00 30.00 10.00 68.00 708.00 90.00 +74 92.00 30.00 10.00 2174.00 2814.00 90.00 +75 53.00 35.00 50.00 19.00 659.00 90.00 +76 45.00 65.00 20.00 15.00 655.00 90.00 +77 90.00 35.00 10.00 1891.00 2531.00 90.00 +78 72.00 45.00 10.00 2627.00 3267.00 90.00 +79 78.00 40.00 20.00 2562.00 3202.00 90.00 +80 87.00 30.00 10.00 2368.00 3008.00 90.00 +81 85.00 25.00 10.00 2273.00 2913.00 90.00 +82 85.00 35.00 30.00 2463.00 3103.00 90.00 +83 75.00 55.00 20.00 1685.00 2325.00 90.00 +84 72.00 55.00 10.00 1592.00 2232.00 90.00 +85 70.00 58.00 20.00 1401.00 2041.00 90.00 +86 86.00 46.00 30.00 1789.00 2429.00 90.00 +87 66.00 55.00 10.00 1496.00 2136.00 90.00 +88 64.00 46.00 20.00 2635.00 3275.00 90.00 +89 65.00 60.00 30.00 1306.00 1946.00 90.00 +90 56.00 64.00 10.00 1115.00 1755.00 90.00 +91 60.00 55.00 10.00 2639.00 3279.00 90.00 +92 60.00 60.00 10.00 1211.00 1851.00 90.00 +93 67.00 85.00 20.00 454.00 1094.00 90.00 +94 42.00 58.00 40.00 8.00 648.00 90.00 +95 65.00 82.00 10.00 548.00 1188.00 90.00 +96 62.00 80.00 30.00 641.00 1281.00 90.00 +97 62.00 40.00 10.00 2635.00 3275.00 90.00 +98 60.00 85.00 30.00 357.00 997.00 90.00 +99 58.00 75.00 20.00 738.00 1378.00 90.00 +100 55.00 80.00 10.00 167.00 807.00 90.00 +101 55.00 85.00 20.00 262.00 902.00 90.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/capacities.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/capacities.dat new file mode 100644 index 000000000..85b84883b --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/capacities.dat @@ -0,0 +1,9 @@ ++ Vehicle's capacities: + ---------------------- + + - R1: 200 + - C1: 200 + - RC1: 200 + - R2: 1000 + - C2: 700 + - RC2: 1000 diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r101.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r101.dat new file mode 100644 index 000000000..6e62a2693 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r101.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 161.00 171.00 10.00 +3 35.00 17.00 7.00 50.00 60.00 10.00 +4 55.00 45.00 13.00 116.00 126.00 10.00 +5 55.00 20.00 19.00 149.00 159.00 10.00 +6 15.00 30.00 26.00 34.00 44.00 10.00 +7 25.00 30.00 3.00 99.00 109.00 10.00 +8 20.00 50.00 5.00 81.00 91.00 10.00 +9 10.00 43.00 9.00 95.00 105.00 10.00 +10 55.00 60.00 16.00 97.00 107.00 10.00 +11 30.00 60.00 16.00 124.00 134.00 10.00 +12 20.00 65.00 12.00 67.00 77.00 10.00 +13 50.00 35.00 19.00 63.00 73.00 10.00 +14 30.00 25.00 23.00 159.00 169.00 10.00 +15 15.00 10.00 20.00 32.00 42.00 10.00 +16 30.00 5.00 8.00 61.00 71.00 10.00 +17 10.00 20.00 19.00 75.00 85.00 10.00 +18 5.00 30.00 2.00 157.00 167.00 10.00 +19 20.00 40.00 12.00 87.00 97.00 10.00 +20 15.00 60.00 17.00 76.00 86.00 10.00 +21 45.00 65.00 9.00 126.00 136.00 10.00 +22 45.00 20.00 11.00 62.00 72.00 10.00 +23 45.00 10.00 18.00 97.00 107.00 10.00 +24 55.00 5.00 29.00 68.00 78.00 10.00 +25 65.00 35.00 3.00 153.00 163.00 10.00 +26 65.00 20.00 6.00 172.00 182.00 10.00 +27 45.00 30.00 17.00 132.00 142.00 10.00 +28 35.00 40.00 16.00 37.00 47.00 10.00 +29 41.00 37.00 16.00 39.00 49.00 10.00 +30 64.00 42.00 9.00 63.00 73.00 10.00 +31 40.00 60.00 21.00 71.00 81.00 10.00 +32 31.00 52.00 27.00 50.00 60.00 10.00 +33 35.00 69.00 23.00 141.00 151.00 10.00 +34 53.00 52.00 11.00 37.00 47.00 10.00 +35 65.00 55.00 14.00 117.00 127.00 10.00 +36 63.00 65.00 8.00 143.00 153.00 10.00 +37 2.00 60.00 5.00 41.00 51.00 10.00 +38 20.00 20.00 8.00 134.00 144.00 10.00 +39 5.00 5.00 16.00 83.00 93.00 10.00 +40 60.00 12.00 31.00 44.00 54.00 10.00 +41 40.00 25.00 9.00 85.00 95.00 10.00 +42 42.00 7.00 5.00 97.00 107.00 10.00 +43 24.00 12.00 5.00 31.00 41.00 10.00 +44 23.00 3.00 7.00 132.00 142.00 10.00 +45 11.00 14.00 18.00 69.00 79.00 10.00 +46 6.00 38.00 16.00 32.00 42.00 10.00 +47 2.00 48.00 1.00 117.00 127.00 10.00 +48 8.00 56.00 27.00 51.00 61.00 10.00 +49 13.00 52.00 36.00 165.00 175.00 10.00 +50 6.00 68.00 30.00 108.00 118.00 10.00 +51 47.00 47.00 13.00 124.00 134.00 10.00 +52 49.00 58.00 10.00 88.00 98.00 10.00 +53 27.00 43.00 9.00 52.00 62.00 10.00 +54 37.00 31.00 14.00 95.00 105.00 10.00 +55 57.00 29.00 18.00 140.00 150.00 10.00 +56 63.00 23.00 2.00 136.00 146.00 10.00 +57 53.00 12.00 6.00 130.00 140.00 10.00 +58 32.00 12.00 7.00 101.00 111.00 10.00 +59 36.00 26.00 18.00 200.00 210.00 10.00 +60 21.00 24.00 28.00 18.00 28.00 10.00 +61 17.00 34.00 3.00 162.00 172.00 10.00 +62 12.00 24.00 13.00 76.00 86.00 10.00 +63 24.00 58.00 19.00 58.00 68.00 10.00 +64 27.00 69.00 10.00 34.00 44.00 10.00 +65 15.00 77.00 9.00 73.00 83.00 10.00 +66 62.00 77.00 20.00 51.00 61.00 10.00 +67 49.00 73.00 25.00 127.00 137.00 10.00 +68 67.00 5.00 25.00 83.00 93.00 10.00 +69 56.00 39.00 36.00 142.00 152.00 10.00 +70 37.00 47.00 6.00 50.00 60.00 10.00 +71 37.00 56.00 5.00 182.00 192.00 10.00 +72 57.00 68.00 15.00 77.00 87.00 10.00 +73 47.00 16.00 25.00 35.00 45.00 10.00 +74 44.00 17.00 9.00 78.00 88.00 10.00 +75 46.00 13.00 8.00 149.00 159.00 10.00 +76 49.00 11.00 18.00 69.00 79.00 10.00 +77 49.00 42.00 13.00 73.00 83.00 10.00 +78 53.00 43.00 14.00 179.00 189.00 10.00 +79 61.00 52.00 3.00 96.00 106.00 10.00 +80 57.00 48.00 23.00 92.00 102.00 10.00 +81 56.00 37.00 6.00 182.00 192.00 10.00 +82 55.00 54.00 26.00 94.00 104.00 10.00 +83 15.00 47.00 16.00 55.00 65.00 10.00 +84 14.00 37.00 11.00 44.00 54.00 10.00 +85 11.00 31.00 7.00 101.00 111.00 10.00 +86 16.00 22.00 41.00 91.00 101.00 10.00 +87 4.00 18.00 35.00 94.00 104.00 10.00 +88 28.00 18.00 26.00 93.00 103.00 10.00 +89 26.00 52.00 9.00 74.00 84.00 10.00 +90 26.00 35.00 15.00 176.00 186.00 10.00 +91 31.00 67.00 3.00 95.00 105.00 10.00 +92 15.00 19.00 1.00 160.00 170.00 10.00 +93 22.00 22.00 2.00 18.00 28.00 10.00 +94 18.00 24.00 22.00 188.00 198.00 10.00 +95 26.00 27.00 27.00 100.00 110.00 10.00 +96 25.00 24.00 20.00 39.00 49.00 10.00 +97 22.00 27.00 11.00 135.00 145.00 10.00 +98 25.00 21.00 12.00 133.00 143.00 10.00 +99 19.00 21.00 10.00 58.00 68.00 10.00 +100 20.00 26.00 9.00 83.00 93.00 10.00 +101 18.00 18.00 17.00 185.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r102.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r102.dat new file mode 100644 index 000000000..9eddcfc24 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r102.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 0.00 204.00 10.00 +3 35.00 17.00 7.00 0.00 202.00 10.00 +4 55.00 45.00 13.00 0.00 197.00 10.00 +5 55.00 20.00 19.00 149.00 159.00 10.00 +6 15.00 30.00 26.00 0.00 199.00 10.00 +7 25.00 30.00 3.00 99.00 109.00 10.00 +8 20.00 50.00 5.00 0.00 198.00 10.00 +9 10.00 43.00 9.00 95.00 105.00 10.00 +10 55.00 60.00 16.00 97.00 107.00 10.00 +11 30.00 60.00 16.00 124.00 134.00 10.00 +12 20.00 65.00 12.00 67.00 77.00 10.00 +13 50.00 35.00 19.00 0.00 205.00 10.00 +14 30.00 25.00 23.00 159.00 169.00 10.00 +15 15.00 10.00 20.00 32.00 42.00 10.00 +16 30.00 5.00 8.00 61.00 71.00 10.00 +17 10.00 20.00 19.00 75.00 85.00 10.00 +18 5.00 30.00 2.00 157.00 167.00 10.00 +19 20.00 40.00 12.00 87.00 97.00 10.00 +20 15.00 60.00 17.00 76.00 86.00 10.00 +21 45.00 65.00 9.00 126.00 136.00 10.00 +22 45.00 20.00 11.00 0.00 201.00 10.00 +23 45.00 10.00 18.00 97.00 107.00 10.00 +24 55.00 5.00 29.00 68.00 78.00 10.00 +25 65.00 35.00 3.00 153.00 163.00 10.00 +26 65.00 20.00 6.00 172.00 182.00 10.00 +27 45.00 30.00 17.00 0.00 208.00 10.00 +28 35.00 40.00 16.00 37.00 47.00 10.00 +29 41.00 37.00 16.00 39.00 49.00 10.00 +30 64.00 42.00 9.00 63.00 73.00 10.00 +31 40.00 60.00 21.00 71.00 81.00 10.00 +32 31.00 52.00 27.00 0.00 202.00 10.00 +33 35.00 69.00 23.00 141.00 151.00 10.00 +34 53.00 52.00 11.00 37.00 47.00 10.00 +35 65.00 55.00 14.00 0.00 183.00 10.00 +36 63.00 65.00 8.00 143.00 153.00 10.00 +37 2.00 60.00 5.00 41.00 51.00 10.00 +38 20.00 20.00 8.00 0.00 198.00 10.00 +39 5.00 5.00 16.00 83.00 93.00 10.00 +40 60.00 12.00 31.00 44.00 54.00 10.00 +41 40.00 25.00 9.00 85.00 95.00 10.00 +42 42.00 7.00 5.00 97.00 107.00 10.00 +43 24.00 12.00 5.00 31.00 41.00 10.00 +44 23.00 3.00 7.00 132.00 142.00 10.00 +45 11.00 14.00 18.00 69.00 79.00 10.00 +46 6.00 38.00 16.00 32.00 42.00 10.00 +47 2.00 48.00 1.00 117.00 127.00 10.00 +48 8.00 56.00 27.00 51.00 61.00 10.00 +49 13.00 52.00 36.00 0.00 192.00 10.00 +50 6.00 68.00 30.00 108.00 118.00 10.00 +51 47.00 47.00 13.00 0.00 203.00 10.00 +52 49.00 58.00 10.00 88.00 98.00 10.00 +53 27.00 43.00 9.00 0.00 208.00 10.00 +54 37.00 31.00 14.00 95.00 105.00 10.00 +55 57.00 29.00 18.00 140.00 150.00 10.00 +56 63.00 23.00 2.00 136.00 146.00 10.00 +57 53.00 12.00 6.00 130.00 140.00 10.00 +58 32.00 12.00 7.00 101.00 111.00 10.00 +59 36.00 26.00 18.00 200.00 210.00 10.00 +60 21.00 24.00 28.00 0.00 202.00 10.00 +61 17.00 34.00 3.00 162.00 172.00 10.00 +62 12.00 24.00 13.00 76.00 86.00 10.00 +63 24.00 58.00 19.00 58.00 68.00 10.00 +64 27.00 69.00 10.00 34.00 44.00 10.00 +65 15.00 77.00 9.00 73.00 83.00 10.00 +66 62.00 77.00 20.00 51.00 61.00 10.00 +67 49.00 73.00 25.00 127.00 137.00 10.00 +68 67.00 5.00 25.00 83.00 93.00 10.00 +69 56.00 39.00 36.00 142.00 152.00 10.00 +70 37.00 47.00 6.00 50.00 60.00 10.00 +71 37.00 56.00 5.00 182.00 192.00 10.00 +72 57.00 68.00 15.00 77.00 87.00 10.00 +73 47.00 16.00 25.00 0.00 197.00 10.00 +74 44.00 17.00 9.00 78.00 88.00 10.00 +75 46.00 13.00 8.00 149.00 159.00 10.00 +76 49.00 11.00 18.00 0.00 192.00 10.00 +77 49.00 42.00 13.00 73.00 83.00 10.00 +78 53.00 43.00 14.00 179.00 189.00 10.00 +79 61.00 52.00 3.00 96.00 106.00 10.00 +80 57.00 48.00 23.00 92.00 102.00 10.00 +81 56.00 37.00 6.00 182.00 192.00 10.00 +82 55.00 54.00 26.00 94.00 104.00 10.00 +83 15.00 47.00 16.00 0.00 196.00 10.00 +84 14.00 37.00 11.00 0.00 198.00 10.00 +85 11.00 31.00 7.00 101.00 111.00 10.00 +86 16.00 22.00 41.00 0.00 196.00 10.00 +87 4.00 18.00 35.00 94.00 104.00 10.00 +88 28.00 18.00 26.00 93.00 103.00 10.00 +89 26.00 52.00 9.00 74.00 84.00 10.00 +90 26.00 35.00 15.00 176.00 186.00 10.00 +91 31.00 67.00 3.00 95.00 105.00 10.00 +92 15.00 19.00 1.00 0.00 194.00 10.00 +93 22.00 22.00 2.00 18.00 28.00 10.00 +94 18.00 24.00 22.00 188.00 198.00 10.00 +95 26.00 27.00 27.00 0.00 207.00 10.00 +96 25.00 24.00 20.00 0.00 205.00 10.00 +97 22.00 27.00 11.00 0.00 204.00 10.00 +98 25.00 21.00 12.00 133.00 143.00 10.00 +99 19.00 21.00 10.00 0.00 198.00 10.00 +100 20.00 26.00 9.00 83.00 93.00 10.00 +101 18.00 18.00 17.00 185.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r103.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r103.dat new file mode 100644 index 000000000..35daacf24 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r103.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 0.00 204.00 10.00 +3 35.00 17.00 7.00 0.00 202.00 10.00 +4 55.00 45.00 13.00 0.00 197.00 10.00 +5 55.00 20.00 19.00 149.00 159.00 10.00 +6 15.00 30.00 26.00 0.00 199.00 10.00 +7 25.00 30.00 3.00 99.00 109.00 10.00 +8 20.00 50.00 5.00 0.00 198.00 10.00 +9 10.00 43.00 9.00 95.00 105.00 10.00 +10 55.00 60.00 16.00 97.00 107.00 10.00 +11 30.00 60.00 16.00 124.00 134.00 10.00 +12 20.00 65.00 12.00 67.00 77.00 10.00 +13 50.00 35.00 19.00 0.00 205.00 10.00 +14 30.00 25.00 23.00 159.00 169.00 10.00 +15 15.00 10.00 20.00 0.00 187.00 10.00 +16 30.00 5.00 8.00 61.00 71.00 10.00 +17 10.00 20.00 19.00 0.00 190.00 10.00 +18 5.00 30.00 2.00 157.00 167.00 10.00 +19 20.00 40.00 12.00 0.00 204.00 10.00 +20 15.00 60.00 17.00 0.00 187.00 10.00 +21 45.00 65.00 9.00 0.00 188.00 10.00 +22 45.00 20.00 11.00 0.00 201.00 10.00 +23 45.00 10.00 18.00 97.00 107.00 10.00 +24 55.00 5.00 29.00 68.00 78.00 10.00 +25 65.00 35.00 3.00 0.00 190.00 10.00 +26 65.00 20.00 6.00 172.00 182.00 10.00 +27 45.00 30.00 17.00 0.00 208.00 10.00 +28 35.00 40.00 16.00 37.00 47.00 10.00 +29 41.00 37.00 16.00 0.00 213.00 10.00 +30 64.00 42.00 9.00 0.00 190.00 10.00 +31 40.00 60.00 21.00 71.00 81.00 10.00 +32 31.00 52.00 27.00 0.00 202.00 10.00 +33 35.00 69.00 23.00 0.00 186.00 10.00 +34 53.00 52.00 11.00 37.00 47.00 10.00 +35 65.00 55.00 14.00 0.00 183.00 10.00 +36 63.00 65.00 8.00 143.00 153.00 10.00 +37 2.00 60.00 5.00 41.00 51.00 10.00 +38 20.00 20.00 8.00 0.00 198.00 10.00 +39 5.00 5.00 16.00 83.00 93.00 10.00 +40 60.00 12.00 31.00 44.00 54.00 10.00 +41 40.00 25.00 9.00 85.00 95.00 10.00 +42 42.00 7.00 5.00 97.00 107.00 10.00 +43 24.00 12.00 5.00 31.00 41.00 10.00 +44 23.00 3.00 7.00 0.00 185.00 10.00 +45 11.00 14.00 18.00 69.00 79.00 10.00 +46 6.00 38.00 16.00 32.00 42.00 10.00 +47 2.00 48.00 1.00 0.00 184.00 10.00 +48 8.00 56.00 27.00 0.00 185.00 10.00 +49 13.00 52.00 36.00 0.00 192.00 10.00 +50 6.00 68.00 30.00 108.00 118.00 10.00 +51 47.00 47.00 13.00 0.00 203.00 10.00 +52 49.00 58.00 10.00 0.00 193.00 10.00 +53 27.00 43.00 9.00 0.00 208.00 10.00 +54 37.00 31.00 14.00 95.00 105.00 10.00 +55 57.00 29.00 18.00 0.00 197.00 10.00 +56 63.00 23.00 2.00 136.00 146.00 10.00 +57 53.00 12.00 6.00 130.00 140.00 10.00 +58 32.00 12.00 7.00 0.00 196.00 10.00 +59 36.00 26.00 18.00 200.00 210.00 10.00 +60 21.00 24.00 28.00 0.00 202.00 10.00 +61 17.00 34.00 3.00 0.00 201.00 10.00 +62 12.00 24.00 13.00 0.00 194.00 10.00 +63 24.00 58.00 19.00 58.00 68.00 10.00 +64 27.00 69.00 10.00 0.00 185.00 10.00 +65 15.00 77.00 9.00 73.00 83.00 10.00 +66 62.00 77.00 20.00 51.00 61.00 10.00 +67 49.00 73.00 25.00 127.00 137.00 10.00 +68 67.00 5.00 25.00 83.00 93.00 10.00 +69 56.00 39.00 36.00 142.00 152.00 10.00 +70 37.00 47.00 6.00 50.00 60.00 10.00 +71 37.00 56.00 5.00 182.00 192.00 10.00 +72 57.00 68.00 15.00 0.00 180.00 10.00 +73 47.00 16.00 25.00 0.00 197.00 10.00 +74 44.00 17.00 9.00 0.00 199.00 10.00 +75 46.00 13.00 8.00 149.00 159.00 10.00 +76 49.00 11.00 18.00 0.00 192.00 10.00 +77 49.00 42.00 13.00 73.00 83.00 10.00 +78 53.00 43.00 14.00 179.00 189.00 10.00 +79 61.00 52.00 3.00 96.00 106.00 10.00 +80 57.00 48.00 23.00 92.00 102.00 10.00 +81 56.00 37.00 6.00 182.00 192.00 10.00 +82 55.00 54.00 26.00 0.00 192.00 10.00 +83 15.00 47.00 16.00 0.00 196.00 10.00 +84 14.00 37.00 11.00 0.00 198.00 10.00 +85 11.00 31.00 7.00 101.00 111.00 10.00 +86 16.00 22.00 41.00 0.00 196.00 10.00 +87 4.00 18.00 35.00 0.00 184.00 10.00 +88 28.00 18.00 26.00 93.00 103.00 10.00 +89 26.00 52.00 9.00 74.00 84.00 10.00 +90 26.00 35.00 15.00 0.00 211.00 10.00 +91 31.00 67.00 3.00 0.00 187.00 10.00 +92 15.00 19.00 1.00 0.00 194.00 10.00 +93 22.00 22.00 2.00 18.00 28.00 10.00 +94 18.00 24.00 22.00 188.00 198.00 10.00 +95 26.00 27.00 27.00 0.00 207.00 10.00 +96 25.00 24.00 20.00 0.00 205.00 10.00 +97 22.00 27.00 11.00 0.00 204.00 10.00 +98 25.00 21.00 12.00 0.00 202.00 10.00 +99 19.00 21.00 10.00 0.00 198.00 10.00 +100 20.00 26.00 9.00 83.00 93.00 10.00 +101 18.00 18.00 17.00 185.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r104.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r104.dat new file mode 100644 index 000000000..31a7ceddf --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r104.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 0.00 204.00 10.00 +3 35.00 17.00 7.00 0.00 202.00 10.00 +4 55.00 45.00 13.00 0.00 197.00 10.00 +5 55.00 20.00 19.00 149.00 159.00 10.00 +6 15.00 30.00 26.00 0.00 199.00 10.00 +7 25.00 30.00 3.00 0.00 208.00 10.00 +8 20.00 50.00 5.00 0.00 198.00 10.00 +9 10.00 43.00 9.00 95.00 105.00 10.00 +10 55.00 60.00 16.00 97.00 107.00 10.00 +11 30.00 60.00 16.00 0.00 194.00 10.00 +12 20.00 65.00 12.00 67.00 77.00 10.00 +13 50.00 35.00 19.00 0.00 205.00 10.00 +14 30.00 25.00 23.00 159.00 169.00 10.00 +15 15.00 10.00 20.00 0.00 187.00 10.00 +16 30.00 5.00 8.00 61.00 71.00 10.00 +17 10.00 20.00 19.00 0.00 190.00 10.00 +18 5.00 30.00 2.00 0.00 189.00 10.00 +19 20.00 40.00 12.00 0.00 204.00 10.00 +20 15.00 60.00 17.00 0.00 187.00 10.00 +21 45.00 65.00 9.00 0.00 188.00 10.00 +22 45.00 20.00 11.00 0.00 201.00 10.00 +23 45.00 10.00 18.00 0.00 193.00 10.00 +24 55.00 5.00 29.00 68.00 78.00 10.00 +25 65.00 35.00 3.00 0.00 190.00 10.00 +26 65.00 20.00 6.00 172.00 182.00 10.00 +27 45.00 30.00 17.00 0.00 208.00 10.00 +28 35.00 40.00 16.00 0.00 215.00 10.00 +29 41.00 37.00 16.00 0.00 213.00 10.00 +30 64.00 42.00 9.00 0.00 190.00 10.00 +31 40.00 60.00 21.00 0.00 194.00 10.00 +32 31.00 52.00 27.00 0.00 202.00 10.00 +33 35.00 69.00 23.00 0.00 186.00 10.00 +34 53.00 52.00 11.00 0.00 195.00 10.00 +35 65.00 55.00 14.00 0.00 183.00 10.00 +36 63.00 65.00 8.00 0.00 178.00 10.00 +37 2.00 60.00 5.00 0.00 178.00 10.00 +38 20.00 20.00 8.00 0.00 198.00 10.00 +39 5.00 5.00 16.00 83.00 93.00 10.00 +40 60.00 12.00 31.00 0.00 186.00 10.00 +41 40.00 25.00 9.00 0.00 208.00 10.00 +42 42.00 7.00 5.00 0.00 191.00 10.00 +43 24.00 12.00 5.00 0.00 194.00 10.00 +44 23.00 3.00 7.00 0.00 185.00 10.00 +45 11.00 14.00 18.00 69.00 79.00 10.00 +46 6.00 38.00 16.00 0.00 190.00 10.00 +47 2.00 48.00 1.00 0.00 184.00 10.00 +48 8.00 56.00 27.00 0.00 185.00 10.00 +49 13.00 52.00 36.00 0.00 192.00 10.00 +50 6.00 68.00 30.00 0.00 176.00 10.00 +51 47.00 47.00 13.00 0.00 203.00 10.00 +52 49.00 58.00 10.00 0.00 193.00 10.00 +53 27.00 43.00 9.00 0.00 208.00 10.00 +54 37.00 31.00 14.00 95.00 105.00 10.00 +55 57.00 29.00 18.00 0.00 197.00 10.00 +56 63.00 23.00 2.00 136.00 146.00 10.00 +57 53.00 12.00 6.00 0.00 190.00 10.00 +58 32.00 12.00 7.00 0.00 196.00 10.00 +59 36.00 26.00 18.00 200.00 210.00 10.00 +60 21.00 24.00 28.00 0.00 202.00 10.00 +61 17.00 34.00 3.00 0.00 201.00 10.00 +62 12.00 24.00 13.00 0.00 194.00 10.00 +63 24.00 58.00 19.00 58.00 68.00 10.00 +64 27.00 69.00 10.00 0.00 185.00 10.00 +65 15.00 77.00 9.00 0.00 173.00 10.00 +66 62.00 77.00 20.00 0.00 170.00 10.00 +67 49.00 73.00 25.00 0.00 179.00 10.00 +68 67.00 5.00 25.00 83.00 93.00 10.00 +69 56.00 39.00 36.00 0.00 198.00 10.00 +70 37.00 47.00 6.00 50.00 60.00 10.00 +71 37.00 56.00 5.00 0.00 198.00 10.00 +72 57.00 68.00 15.00 0.00 180.00 10.00 +73 47.00 16.00 25.00 0.00 197.00 10.00 +74 44.00 17.00 9.00 0.00 199.00 10.00 +75 46.00 13.00 8.00 149.00 159.00 10.00 +76 49.00 11.00 18.00 0.00 192.00 10.00 +77 49.00 42.00 13.00 73.00 83.00 10.00 +78 53.00 43.00 14.00 179.00 189.00 10.00 +79 61.00 52.00 3.00 0.00 188.00 10.00 +80 57.00 48.00 23.00 92.00 102.00 10.00 +81 56.00 37.00 6.00 0.00 198.00 10.00 +82 55.00 54.00 26.00 0.00 192.00 10.00 +83 15.00 47.00 16.00 0.00 196.00 10.00 +84 14.00 37.00 11.00 0.00 198.00 10.00 +85 11.00 31.00 7.00 101.00 111.00 10.00 +86 16.00 22.00 41.00 0.00 196.00 10.00 +87 4.00 18.00 35.00 0.00 184.00 10.00 +88 28.00 18.00 26.00 93.00 103.00 10.00 +89 26.00 52.00 9.00 0.00 200.00 10.00 +90 26.00 35.00 15.00 0.00 211.00 10.00 +91 31.00 67.00 3.00 0.00 187.00 10.00 +92 15.00 19.00 1.00 0.00 194.00 10.00 +93 22.00 22.00 2.00 18.00 28.00 10.00 +94 18.00 24.00 22.00 0.00 199.00 10.00 +95 26.00 27.00 27.00 0.00 207.00 10.00 +96 25.00 24.00 20.00 0.00 205.00 10.00 +97 22.00 27.00 11.00 0.00 204.00 10.00 +98 25.00 21.00 12.00 0.00 202.00 10.00 +99 19.00 21.00 10.00 0.00 198.00 10.00 +100 20.00 26.00 9.00 83.00 93.00 10.00 +101 18.00 18.00 17.00 185.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r105.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r105.dat new file mode 100644 index 000000000..92c2b21df --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r105.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 151.00 181.00 10.00 +3 35.00 17.00 7.00 40.00 70.00 10.00 +4 55.00 45.00 13.00 106.00 136.00 10.00 +5 55.00 20.00 19.00 139.00 169.00 10.00 +6 15.00 30.00 26.00 24.00 54.00 10.00 +7 25.00 30.00 3.00 89.00 119.00 10.00 +8 20.00 50.00 5.00 71.00 101.00 10.00 +9 10.00 43.00 9.00 85.00 115.00 10.00 +10 55.00 60.00 16.00 87.00 117.00 10.00 +11 30.00 60.00 16.00 114.00 144.00 10.00 +12 20.00 65.00 12.00 57.00 87.00 10.00 +13 50.00 35.00 19.00 53.00 83.00 10.00 +14 30.00 25.00 23.00 149.00 179.00 10.00 +15 15.00 10.00 20.00 32.00 62.00 10.00 +16 30.00 5.00 8.00 51.00 81.00 10.00 +17 10.00 20.00 19.00 65.00 95.00 10.00 +18 5.00 30.00 2.00 147.00 177.00 10.00 +19 20.00 40.00 12.00 77.00 107.00 10.00 +20 15.00 60.00 17.00 66.00 96.00 10.00 +21 45.00 65.00 9.00 116.00 146.00 10.00 +22 45.00 20.00 11.00 52.00 82.00 10.00 +23 45.00 10.00 18.00 87.00 117.00 10.00 +24 55.00 5.00 29.00 58.00 88.00 10.00 +25 65.00 35.00 3.00 143.00 173.00 10.00 +26 65.00 20.00 6.00 156.00 186.00 10.00 +27 45.00 30.00 17.00 122.00 152.00 10.00 +28 35.00 40.00 16.00 27.00 57.00 10.00 +29 41.00 37.00 16.00 29.00 59.00 10.00 +30 64.00 42.00 9.00 53.00 83.00 10.00 +31 40.00 60.00 21.00 61.00 91.00 10.00 +32 31.00 52.00 27.00 40.00 70.00 10.00 +33 35.00 69.00 23.00 131.00 161.00 10.00 +34 53.00 52.00 11.00 27.00 57.00 10.00 +35 65.00 55.00 14.00 107.00 137.00 10.00 +36 63.00 65.00 8.00 133.00 163.00 10.00 +37 2.00 60.00 5.00 41.00 71.00 10.00 +38 20.00 20.00 8.00 124.00 154.00 10.00 +39 5.00 5.00 16.00 73.00 103.00 10.00 +40 60.00 12.00 31.00 34.00 64.00 10.00 +41 40.00 25.00 9.00 75.00 105.00 10.00 +42 42.00 7.00 5.00 87.00 117.00 10.00 +43 24.00 12.00 5.00 25.00 55.00 10.00 +44 23.00 3.00 7.00 122.00 152.00 10.00 +45 11.00 14.00 18.00 59.00 89.00 10.00 +46 6.00 38.00 16.00 29.00 59.00 10.00 +47 2.00 48.00 1.00 107.00 137.00 10.00 +48 8.00 56.00 27.00 41.00 71.00 10.00 +49 13.00 52.00 36.00 155.00 185.00 10.00 +50 6.00 68.00 30.00 98.00 128.00 10.00 +51 47.00 47.00 13.00 114.00 144.00 10.00 +52 49.00 58.00 10.00 78.00 108.00 10.00 +53 27.00 43.00 9.00 42.00 72.00 10.00 +54 37.00 31.00 14.00 85.00 115.00 10.00 +55 57.00 29.00 18.00 130.00 160.00 10.00 +56 63.00 23.00 2.00 126.00 156.00 10.00 +57 53.00 12.00 6.00 120.00 150.00 10.00 +58 32.00 12.00 7.00 91.00 121.00 10.00 +59 36.00 26.00 18.00 180.00 210.00 10.00 +60 21.00 24.00 28.00 17.00 47.00 10.00 +61 17.00 34.00 3.00 152.00 182.00 10.00 +62 12.00 24.00 13.00 66.00 96.00 10.00 +63 24.00 58.00 19.00 48.00 78.00 10.00 +64 27.00 69.00 10.00 34.00 64.00 10.00 +65 15.00 77.00 9.00 63.00 93.00 10.00 +66 62.00 77.00 20.00 49.00 79.00 10.00 +67 49.00 73.00 25.00 117.00 147.00 10.00 +68 67.00 5.00 25.00 73.00 103.00 10.00 +69 56.00 39.00 36.00 132.00 162.00 10.00 +70 37.00 47.00 6.00 40.00 70.00 10.00 +71 37.00 56.00 5.00 168.00 198.00 10.00 +72 57.00 68.00 15.00 67.00 97.00 10.00 +73 47.00 16.00 25.00 25.00 55.00 10.00 +74 44.00 17.00 9.00 68.00 98.00 10.00 +75 46.00 13.00 8.00 139.00 169.00 10.00 +76 49.00 11.00 18.00 59.00 89.00 10.00 +77 49.00 42.00 13.00 63.00 93.00 10.00 +78 53.00 43.00 14.00 169.00 199.00 10.00 +79 61.00 52.00 3.00 86.00 116.00 10.00 +80 57.00 48.00 23.00 82.00 112.00 10.00 +81 56.00 37.00 6.00 168.00 198.00 10.00 +82 55.00 54.00 26.00 84.00 114.00 10.00 +83 15.00 47.00 16.00 45.00 75.00 10.00 +84 14.00 37.00 11.00 34.00 64.00 10.00 +85 11.00 31.00 7.00 91.00 121.00 10.00 +86 16.00 22.00 41.00 81.00 111.00 10.00 +87 4.00 18.00 35.00 84.00 114.00 10.00 +88 28.00 18.00 26.00 83.00 113.00 10.00 +89 26.00 52.00 9.00 64.00 94.00 10.00 +90 26.00 35.00 15.00 166.00 196.00 10.00 +91 31.00 67.00 3.00 85.00 115.00 10.00 +92 15.00 19.00 1.00 150.00 180.00 10.00 +93 22.00 22.00 2.00 18.00 48.00 10.00 +94 18.00 24.00 22.00 169.00 199.00 10.00 +95 26.00 27.00 27.00 90.00 120.00 10.00 +96 25.00 24.00 20.00 29.00 59.00 10.00 +97 22.00 27.00 11.00 125.00 155.00 10.00 +98 25.00 21.00 12.00 123.00 153.00 10.00 +99 19.00 21.00 10.00 48.00 78.00 10.00 +100 20.00 26.00 9.00 73.00 103.00 10.00 +101 18.00 18.00 17.00 165.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r106.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r106.dat new file mode 100644 index 000000000..ffc1a7d04 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r106.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 0.00 204.00 10.00 +3 35.00 17.00 7.00 0.00 202.00 10.00 +4 55.00 45.00 13.00 0.00 197.00 10.00 +5 55.00 20.00 19.00 139.00 169.00 10.00 +6 15.00 30.00 26.00 0.00 199.00 10.00 +7 25.00 30.00 3.00 89.00 119.00 10.00 +8 20.00 50.00 5.00 0.00 198.00 10.00 +9 10.00 43.00 9.00 85.00 115.00 10.00 +10 55.00 60.00 16.00 87.00 117.00 10.00 +11 30.00 60.00 16.00 114.00 144.00 10.00 +12 20.00 65.00 12.00 57.00 87.00 10.00 +13 50.00 35.00 19.00 0.00 205.00 10.00 +14 30.00 25.00 23.00 149.00 179.00 10.00 +15 15.00 10.00 20.00 32.00 62.00 10.00 +16 30.00 5.00 8.00 51.00 81.00 10.00 +17 10.00 20.00 19.00 65.00 95.00 10.00 +18 5.00 30.00 2.00 147.00 177.00 10.00 +19 20.00 40.00 12.00 77.00 107.00 10.00 +20 15.00 60.00 17.00 66.00 96.00 10.00 +21 45.00 65.00 9.00 116.00 146.00 10.00 +22 45.00 20.00 11.00 0.00 201.00 10.00 +23 45.00 10.00 18.00 87.00 117.00 10.00 +24 55.00 5.00 29.00 58.00 88.00 10.00 +25 65.00 35.00 3.00 143.00 173.00 10.00 +26 65.00 20.00 6.00 156.00 186.00 10.00 +27 45.00 30.00 17.00 0.00 208.00 10.00 +28 35.00 40.00 16.00 27.00 57.00 10.00 +29 41.00 37.00 16.00 29.00 59.00 10.00 +30 64.00 42.00 9.00 53.00 83.00 10.00 +31 40.00 60.00 21.00 61.00 91.00 10.00 +32 31.00 52.00 27.00 0.00 202.00 10.00 +33 35.00 69.00 23.00 131.00 161.00 10.00 +34 53.00 52.00 11.00 27.00 57.00 10.00 +35 65.00 55.00 14.00 0.00 183.00 10.00 +36 63.00 65.00 8.00 133.00 163.00 10.00 +37 2.00 60.00 5.00 41.00 71.00 10.00 +38 20.00 20.00 8.00 0.00 198.00 10.00 +39 5.00 5.00 16.00 73.00 103.00 10.00 +40 60.00 12.00 31.00 34.00 64.00 10.00 +41 40.00 25.00 9.00 75.00 105.00 10.00 +42 42.00 7.00 5.00 87.00 117.00 10.00 +43 24.00 12.00 5.00 25.00 55.00 10.00 +44 23.00 3.00 7.00 122.00 152.00 10.00 +45 11.00 14.00 18.00 59.00 89.00 10.00 +46 6.00 38.00 16.00 29.00 59.00 10.00 +47 2.00 48.00 1.00 107.00 137.00 10.00 +48 8.00 56.00 27.00 41.00 71.00 10.00 +49 13.00 52.00 36.00 0.00 192.00 10.00 +50 6.00 68.00 30.00 98.00 128.00 10.00 +51 47.00 47.00 13.00 0.00 203.00 10.00 +52 49.00 58.00 10.00 78.00 108.00 10.00 +53 27.00 43.00 9.00 0.00 208.00 10.00 +54 37.00 31.00 14.00 85.00 115.00 10.00 +55 57.00 29.00 18.00 130.00 160.00 10.00 +56 63.00 23.00 2.00 126.00 156.00 10.00 +57 53.00 12.00 6.00 120.00 150.00 10.00 +58 32.00 12.00 7.00 91.00 121.00 10.00 +59 36.00 26.00 18.00 180.00 210.00 10.00 +60 21.00 24.00 28.00 0.00 202.00 10.00 +61 17.00 34.00 3.00 152.00 182.00 10.00 +62 12.00 24.00 13.00 66.00 96.00 10.00 +63 24.00 58.00 19.00 48.00 78.00 10.00 +64 27.00 69.00 10.00 34.00 64.00 10.00 +65 15.00 77.00 9.00 63.00 93.00 10.00 +66 62.00 77.00 20.00 49.00 79.00 10.00 +67 49.00 73.00 25.00 117.00 147.00 10.00 +68 67.00 5.00 25.00 73.00 103.00 10.00 +69 56.00 39.00 36.00 132.00 162.00 10.00 +70 37.00 47.00 6.00 40.00 70.00 10.00 +71 37.00 56.00 5.00 168.00 198.00 10.00 +72 57.00 68.00 15.00 67.00 97.00 10.00 +73 47.00 16.00 25.00 0.00 197.00 10.00 +74 44.00 17.00 9.00 68.00 98.00 10.00 +75 46.00 13.00 8.00 139.00 169.00 10.00 +76 49.00 11.00 18.00 0.00 192.00 10.00 +77 49.00 42.00 13.00 63.00 93.00 10.00 +78 53.00 43.00 14.00 169.00 199.00 10.00 +79 61.00 52.00 3.00 86.00 116.00 10.00 +80 57.00 48.00 23.00 82.00 112.00 10.00 +81 56.00 37.00 6.00 168.00 198.00 10.00 +82 55.00 54.00 26.00 84.00 114.00 10.00 +83 15.00 47.00 16.00 0.00 196.00 10.00 +84 14.00 37.00 11.00 0.00 198.00 10.00 +85 11.00 31.00 7.00 91.00 121.00 10.00 +86 16.00 22.00 41.00 0.00 196.00 10.00 +87 4.00 18.00 35.00 84.00 114.00 10.00 +88 28.00 18.00 26.00 83.00 113.00 10.00 +89 26.00 52.00 9.00 64.00 94.00 10.00 +90 26.00 35.00 15.00 166.00 196.00 10.00 +91 31.00 67.00 3.00 85.00 115.00 10.00 +92 15.00 19.00 1.00 0.00 194.00 10.00 +93 22.00 22.00 2.00 18.00 48.00 10.00 +94 18.00 24.00 22.00 169.00 199.00 10.00 +95 26.00 27.00 27.00 0.00 207.00 10.00 +96 25.00 24.00 20.00 0.00 205.00 10.00 +97 22.00 27.00 11.00 0.00 204.00 10.00 +98 25.00 21.00 12.00 123.00 153.00 10.00 +99 19.00 21.00 10.00 0.00 198.00 10.00 +100 20.00 26.00 9.00 73.00 103.00 10.00 +101 18.00 18.00 17.00 165.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r107.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r107.dat new file mode 100644 index 000000000..9ef9ca182 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r107.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 0.00 204.00 10.00 +3 35.00 17.00 7.00 0.00 202.00 10.00 +4 55.00 45.00 13.00 0.00 197.00 10.00 +5 55.00 20.00 19.00 139.00 169.00 10.00 +6 15.00 30.00 26.00 0.00 199.00 10.00 +7 25.00 30.00 3.00 89.00 119.00 10.00 +8 20.00 50.00 5.00 0.00 198.00 10.00 +9 10.00 43.00 9.00 85.00 115.00 10.00 +10 55.00 60.00 16.00 87.00 117.00 10.00 +11 30.00 60.00 16.00 114.00 144.00 10.00 +12 20.00 65.00 12.00 57.00 87.00 10.00 +13 50.00 35.00 19.00 0.00 205.00 10.00 +14 30.00 25.00 23.00 149.00 179.00 10.00 +15 15.00 10.00 20.00 0.00 187.00 10.00 +16 30.00 5.00 8.00 51.00 81.00 10.00 +17 10.00 20.00 19.00 0.00 190.00 10.00 +18 5.00 30.00 2.00 147.00 177.00 10.00 +19 20.00 40.00 12.00 0.00 204.00 10.00 +20 15.00 60.00 17.00 0.00 187.00 10.00 +21 45.00 65.00 9.00 0.00 188.00 10.00 +22 45.00 20.00 11.00 0.00 201.00 10.00 +23 45.00 10.00 18.00 87.00 117.00 10.00 +24 55.00 5.00 29.00 58.00 88.00 10.00 +25 65.00 35.00 3.00 0.00 190.00 10.00 +26 65.00 20.00 6.00 156.00 186.00 10.00 +27 45.00 30.00 17.00 0.00 208.00 10.00 +28 35.00 40.00 16.00 27.00 57.00 10.00 +29 41.00 37.00 16.00 0.00 213.00 10.00 +30 64.00 42.00 9.00 0.00 190.00 10.00 +31 40.00 60.00 21.00 61.00 91.00 10.00 +32 31.00 52.00 27.00 0.00 202.00 10.00 +33 35.00 69.00 23.00 0.00 186.00 10.00 +34 53.00 52.00 11.00 27.00 57.00 10.00 +35 65.00 55.00 14.00 0.00 183.00 10.00 +36 63.00 65.00 8.00 133.00 163.00 10.00 +37 2.00 60.00 5.00 41.00 71.00 10.00 +38 20.00 20.00 8.00 0.00 198.00 10.00 +39 5.00 5.00 16.00 73.00 103.00 10.00 +40 60.00 12.00 31.00 34.00 64.00 10.00 +41 40.00 25.00 9.00 75.00 105.00 10.00 +42 42.00 7.00 5.00 87.00 117.00 10.00 +43 24.00 12.00 5.00 25.00 55.00 10.00 +44 23.00 3.00 7.00 0.00 185.00 10.00 +45 11.00 14.00 18.00 59.00 89.00 10.00 +46 6.00 38.00 16.00 29.00 59.00 10.00 +47 2.00 48.00 1.00 0.00 184.00 10.00 +48 8.00 56.00 27.00 0.00 185.00 10.00 +49 13.00 52.00 36.00 0.00 192.00 10.00 +50 6.00 68.00 30.00 98.00 128.00 10.00 +51 47.00 47.00 13.00 0.00 203.00 10.00 +52 49.00 58.00 10.00 0.00 193.00 10.00 +53 27.00 43.00 9.00 0.00 208.00 10.00 +54 37.00 31.00 14.00 85.00 115.00 10.00 +55 57.00 29.00 18.00 0.00 197.00 10.00 +56 63.00 23.00 2.00 126.00 156.00 10.00 +57 53.00 12.00 6.00 120.00 150.00 10.00 +58 32.00 12.00 7.00 0.00 196.00 10.00 +59 36.00 26.00 18.00 180.00 210.00 10.00 +60 21.00 24.00 28.00 0.00 202.00 10.00 +61 17.00 34.00 3.00 0.00 201.00 10.00 +62 12.00 24.00 13.00 0.00 194.00 10.00 +63 24.00 58.00 19.00 48.00 78.00 10.00 +64 27.00 69.00 10.00 0.00 185.00 10.00 +65 15.00 77.00 9.00 63.00 93.00 10.00 +66 62.00 77.00 20.00 49.00 79.00 10.00 +67 49.00 73.00 25.00 117.00 147.00 10.00 +68 67.00 5.00 25.00 73.00 103.00 10.00 +69 56.00 39.00 36.00 132.00 162.00 10.00 +70 37.00 47.00 6.00 40.00 70.00 10.00 +71 37.00 56.00 5.00 168.00 198.00 10.00 +72 57.00 68.00 15.00 0.00 180.00 10.00 +73 47.00 16.00 25.00 0.00 197.00 10.00 +74 44.00 17.00 9.00 0.00 199.00 10.00 +75 46.00 13.00 8.00 139.00 169.00 10.00 +76 49.00 11.00 18.00 0.00 192.00 10.00 +77 49.00 42.00 13.00 63.00 93.00 10.00 +78 53.00 43.00 14.00 169.00 199.00 10.00 +79 61.00 52.00 3.00 86.00 116.00 10.00 +80 57.00 48.00 23.00 82.00 112.00 10.00 +81 56.00 37.00 6.00 168.00 198.00 10.00 +82 55.00 54.00 26.00 0.00 192.00 10.00 +83 15.00 47.00 16.00 0.00 196.00 10.00 +84 14.00 37.00 11.00 0.00 198.00 10.00 +85 11.00 31.00 7.00 91.00 121.00 10.00 +86 16.00 22.00 41.00 0.00 196.00 10.00 +87 4.00 18.00 35.00 0.00 184.00 10.00 +88 28.00 18.00 26.00 83.00 113.00 10.00 +89 26.00 52.00 9.00 64.00 94.00 10.00 +90 26.00 35.00 15.00 0.00 211.00 10.00 +91 31.00 67.00 3.00 0.00 187.00 10.00 +92 15.00 19.00 1.00 0.00 194.00 10.00 +93 22.00 22.00 2.00 18.00 48.00 10.00 +94 18.00 24.00 22.00 169.00 199.00 10.00 +95 26.00 27.00 27.00 0.00 207.00 10.00 +96 25.00 24.00 20.00 0.00 205.00 10.00 +97 22.00 27.00 11.00 0.00 204.00 10.00 +98 25.00 21.00 12.00 0.00 202.00 10.00 +99 19.00 21.00 10.00 0.00 198.00 10.00 +100 20.00 26.00 9.00 73.00 103.00 10.00 +101 18.00 18.00 17.00 165.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r108.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r108.dat new file mode 100644 index 000000000..1372c3698 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r108.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 0.00 204.00 10.00 +3 35.00 17.00 7.00 0.00 202.00 10.00 +4 55.00 45.00 13.00 0.00 197.00 10.00 +5 55.00 20.00 19.00 139.00 169.00 10.00 +6 15.00 30.00 26.00 0.00 199.00 10.00 +7 25.00 30.00 3.00 0.00 208.00 10.00 +8 20.00 50.00 5.00 0.00 198.00 10.00 +9 10.00 43.00 9.00 85.00 115.00 10.00 +10 55.00 60.00 16.00 87.00 117.00 10.00 +11 30.00 60.00 16.00 0.00 194.00 10.00 +12 20.00 65.00 12.00 57.00 87.00 10.00 +13 50.00 35.00 19.00 0.00 205.00 10.00 +14 30.00 25.00 23.00 149.00 179.00 10.00 +15 15.00 10.00 20.00 0.00 187.00 10.00 +16 30.00 5.00 8.00 51.00 81.00 10.00 +17 10.00 20.00 19.00 0.00 190.00 10.00 +18 5.00 30.00 2.00 0.00 189.00 10.00 +19 20.00 40.00 12.00 0.00 204.00 10.00 +20 15.00 60.00 17.00 0.00 187.00 10.00 +21 45.00 65.00 9.00 0.00 188.00 10.00 +22 45.00 20.00 11.00 0.00 201.00 10.00 +23 45.00 10.00 18.00 0.00 193.00 10.00 +24 55.00 5.00 29.00 58.00 88.00 10.00 +25 65.00 35.00 3.00 0.00 190.00 10.00 +26 65.00 20.00 6.00 156.00 186.00 10.00 +27 45.00 30.00 17.00 0.00 208.00 10.00 +28 35.00 40.00 16.00 0.00 215.00 10.00 +29 41.00 37.00 16.00 0.00 213.00 10.00 +30 64.00 42.00 9.00 0.00 190.00 10.00 +31 40.00 60.00 21.00 0.00 194.00 10.00 +32 31.00 52.00 27.00 0.00 202.00 10.00 +33 35.00 69.00 23.00 0.00 186.00 10.00 +34 53.00 52.00 11.00 0.00 195.00 10.00 +35 65.00 55.00 14.00 0.00 183.00 10.00 +36 63.00 65.00 8.00 0.00 178.00 10.00 +37 2.00 60.00 5.00 0.00 178.00 10.00 +38 20.00 20.00 8.00 0.00 198.00 10.00 +39 5.00 5.00 16.00 73.00 103.00 10.00 +40 60.00 12.00 31.00 0.00 186.00 10.00 +41 40.00 25.00 9.00 0.00 208.00 10.00 +42 42.00 7.00 5.00 0.00 191.00 10.00 +43 24.00 12.00 5.00 0.00 194.00 10.00 +44 23.00 3.00 7.00 0.00 185.00 10.00 +45 11.00 14.00 18.00 59.00 89.00 10.00 +46 6.00 38.00 16.00 0.00 190.00 10.00 +47 2.00 48.00 1.00 0.00 184.00 10.00 +48 8.00 56.00 27.00 0.00 185.00 10.00 +49 13.00 52.00 36.00 0.00 192.00 10.00 +50 6.00 68.00 30.00 0.00 176.00 10.00 +51 47.00 47.00 13.00 0.00 203.00 10.00 +52 49.00 58.00 10.00 0.00 193.00 10.00 +53 27.00 43.00 9.00 0.00 208.00 10.00 +54 37.00 31.00 14.00 85.00 115.00 10.00 +55 57.00 29.00 18.00 0.00 197.00 10.00 +56 63.00 23.00 2.00 126.00 156.00 10.00 +57 53.00 12.00 6.00 0.00 190.00 10.00 +58 32.00 12.00 7.00 0.00 196.00 10.00 +59 36.00 26.00 18.00 180.00 210.00 10.00 +60 21.00 24.00 28.00 0.00 202.00 10.00 +61 17.00 34.00 3.00 0.00 201.00 10.00 +62 12.00 24.00 13.00 0.00 194.00 10.00 +63 24.00 58.00 19.00 48.00 78.00 10.00 +64 27.00 69.00 10.00 0.00 185.00 10.00 +65 15.00 77.00 9.00 0.00 173.00 10.00 +66 62.00 77.00 20.00 0.00 170.00 10.00 +67 49.00 73.00 25.00 0.00 179.00 10.00 +68 67.00 5.00 25.00 73.00 103.00 10.00 +69 56.00 39.00 36.00 0.00 198.00 10.00 +70 37.00 47.00 6.00 40.00 70.00 10.00 +71 37.00 56.00 5.00 0.00 198.00 10.00 +72 57.00 68.00 15.00 0.00 180.00 10.00 +73 47.00 16.00 25.00 0.00 197.00 10.00 +74 44.00 17.00 9.00 0.00 199.00 10.00 +75 46.00 13.00 8.00 139.00 169.00 10.00 +76 49.00 11.00 18.00 0.00 192.00 10.00 +77 49.00 42.00 13.00 63.00 93.00 10.00 +78 53.00 43.00 14.00 169.00 199.00 10.00 +79 61.00 52.00 3.00 0.00 188.00 10.00 +80 57.00 48.00 23.00 82.00 112.00 10.00 +81 56.00 37.00 6.00 0.00 198.00 10.00 +82 55.00 54.00 26.00 0.00 192.00 10.00 +83 15.00 47.00 16.00 0.00 196.00 10.00 +84 14.00 37.00 11.00 0.00 198.00 10.00 +85 11.00 31.00 7.00 91.00 121.00 10.00 +86 16.00 22.00 41.00 0.00 196.00 10.00 +87 4.00 18.00 35.00 0.00 184.00 10.00 +88 28.00 18.00 26.00 83.00 113.00 10.00 +89 26.00 52.00 9.00 0.00 200.00 10.00 +90 26.00 35.00 15.00 0.00 211.00 10.00 +91 31.00 67.00 3.00 0.00 187.00 10.00 +92 15.00 19.00 1.00 0.00 194.00 10.00 +93 22.00 22.00 2.00 18.00 48.00 10.00 +94 18.00 24.00 22.00 0.00 199.00 10.00 +95 26.00 27.00 27.00 0.00 207.00 10.00 +96 25.00 24.00 20.00 0.00 205.00 10.00 +97 22.00 27.00 11.00 0.00 204.00 10.00 +98 25.00 21.00 12.00 0.00 202.00 10.00 +99 19.00 21.00 10.00 0.00 198.00 10.00 +100 20.00 26.00 9.00 73.00 103.00 10.00 +101 18.00 18.00 17.00 165.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r109.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r109.dat new file mode 100644 index 000000000..568f45cc2 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r109.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 133.00 198.00 10.00 +3 35.00 17.00 7.00 22.00 87.00 10.00 +4 55.00 45.00 13.00 98.00 143.00 10.00 +5 55.00 20.00 19.00 123.00 184.00 10.00 +6 15.00 30.00 26.00 20.00 93.00 10.00 +7 25.00 30.00 3.00 76.00 131.00 10.00 +8 20.00 50.00 5.00 61.00 110.00 10.00 +9 10.00 43.00 9.00 75.00 124.00 10.00 +10 55.00 60.00 16.00 74.00 129.00 10.00 +11 30.00 60.00 16.00 107.00 150.00 10.00 +12 20.00 65.00 12.00 42.00 101.00 10.00 +13 50.00 35.00 19.00 38.00 97.00 10.00 +14 30.00 25.00 23.00 131.00 196.00 10.00 +15 15.00 10.00 20.00 32.00 114.00 10.00 +16 30.00 5.00 8.00 35.00 96.00 10.00 +17 10.00 20.00 19.00 52.00 107.00 10.00 +18 5.00 30.00 2.00 124.00 189.00 10.00 +19 20.00 40.00 12.00 69.00 114.00 10.00 +20 15.00 60.00 17.00 52.00 109.00 10.00 +21 45.00 65.00 9.00 105.00 156.00 10.00 +22 45.00 20.00 11.00 37.00 96.00 10.00 +23 45.00 10.00 18.00 76.00 127.00 10.00 +24 55.00 5.00 29.00 43.00 102.00 10.00 +25 65.00 35.00 3.00 124.00 190.00 10.00 +26 65.00 20.00 6.00 121.00 186.00 10.00 +27 45.00 30.00 17.00 112.00 161.00 10.00 +28 35.00 40.00 16.00 8.00 75.00 10.00 +29 41.00 37.00 16.00 11.00 76.00 10.00 +30 64.00 42.00 9.00 37.00 98.00 10.00 +31 40.00 60.00 21.00 49.00 102.00 10.00 +32 31.00 52.00 27.00 24.00 85.00 10.00 +33 35.00 69.00 23.00 116.00 175.00 10.00 +34 53.00 52.00 11.00 24.00 92.00 10.00 +35 65.00 55.00 14.00 96.00 147.00 10.00 +36 63.00 65.00 8.00 116.00 178.00 10.00 +37 2.00 60.00 5.00 41.00 112.00 10.00 +38 20.00 20.00 8.00 113.00 164.00 10.00 +39 5.00 5.00 16.00 60.00 115.00 10.00 +40 60.00 12.00 31.00 33.00 110.00 10.00 +41 40.00 25.00 9.00 65.00 114.00 10.00 +42 42.00 7.00 5.00 72.00 131.00 10.00 +43 24.00 12.00 5.00 25.00 91.00 10.00 +44 23.00 3.00 7.00 111.00 162.00 10.00 +45 11.00 14.00 18.00 45.00 102.00 10.00 +46 6.00 38.00 16.00 29.00 99.00 10.00 +47 2.00 48.00 1.00 92.00 151.00 10.00 +48 8.00 56.00 27.00 34.00 105.00 10.00 +49 13.00 52.00 36.00 128.00 192.00 10.00 +50 6.00 68.00 30.00 93.00 132.00 10.00 +51 47.00 47.00 13.00 102.00 155.00 10.00 +52 49.00 58.00 10.00 64.00 121.00 10.00 +53 27.00 43.00 9.00 26.00 87.00 10.00 +54 37.00 31.00 14.00 75.00 124.00 10.00 +55 57.00 29.00 18.00 118.00 171.00 10.00 +56 63.00 23.00 2.00 111.00 170.00 10.00 +57 53.00 12.00 6.00 106.00 163.00 10.00 +58 32.00 12.00 7.00 77.00 134.00 10.00 +59 36.00 26.00 18.00 147.00 210.00 10.00 +60 21.00 24.00 28.00 17.00 100.00 10.00 +61 17.00 34.00 3.00 134.00 199.00 10.00 +62 12.00 24.00 13.00 55.00 106.00 10.00 +63 24.00 58.00 19.00 30.00 95.00 10.00 +64 27.00 69.00 10.00 34.00 103.00 10.00 +65 15.00 77.00 9.00 48.00 107.00 10.00 +66 62.00 77.00 20.00 49.00 113.00 10.00 +67 49.00 73.00 25.00 104.00 159.00 10.00 +68 67.00 5.00 25.00 59.00 116.00 10.00 +69 56.00 39.00 36.00 117.00 176.00 10.00 +70 37.00 47.00 6.00 23.00 86.00 10.00 +71 37.00 56.00 5.00 123.00 198.00 10.00 +72 57.00 68.00 15.00 54.00 109.00 10.00 +73 47.00 16.00 25.00 22.00 96.00 10.00 +74 44.00 17.00 9.00 56.00 109.00 10.00 +75 46.00 13.00 8.00 123.00 184.00 10.00 +76 49.00 11.00 18.00 45.00 102.00 10.00 +77 49.00 42.00 13.00 52.00 103.00 10.00 +78 53.00 43.00 14.00 136.00 200.00 10.00 +79 61.00 52.00 3.00 71.00 130.00 10.00 +80 57.00 48.00 23.00 72.00 121.00 10.00 +81 56.00 37.00 6.00 135.00 198.00 10.00 +82 55.00 54.00 26.00 78.00 119.00 10.00 +83 15.00 47.00 16.00 29.00 90.00 10.00 +84 14.00 37.00 11.00 21.00 89.00 10.00 +85 11.00 31.00 7.00 81.00 130.00 10.00 +86 16.00 22.00 41.00 70.00 121.00 10.00 +87 4.00 18.00 35.00 74.00 123.00 10.00 +88 28.00 18.00 26.00 79.00 116.00 10.00 +89 26.00 52.00 9.00 50.00 107.00 10.00 +90 26.00 35.00 15.00 139.00 211.00 10.00 +91 31.00 67.00 3.00 73.00 126.00 10.00 +92 15.00 19.00 1.00 132.00 194.00 10.00 +93 22.00 22.00 2.00 18.00 88.00 10.00 +94 18.00 24.00 22.00 129.00 199.00 10.00 +95 26.00 27.00 27.00 81.00 128.00 10.00 +96 25.00 24.00 20.00 14.00 78.00 10.00 +97 22.00 27.00 11.00 114.00 165.00 10.00 +98 25.00 21.00 12.00 115.00 160.00 10.00 +99 19.00 21.00 10.00 32.00 93.00 10.00 +100 20.00 26.00 9.00 60.00 115.00 10.00 +101 18.00 18.00 17.00 123.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r110.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r110.dat new file mode 100644 index 000000000..099da734c --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r110.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 130.00 201.00 10.00 +3 35.00 17.00 7.00 20.00 89.00 10.00 +4 55.00 45.00 13.00 106.00 135.00 10.00 +5 55.00 20.00 19.00 71.00 195.00 10.00 +6 15.00 30.00 26.00 20.00 107.00 10.00 +7 25.00 30.00 3.00 54.00 153.00 10.00 +8 20.00 50.00 5.00 66.00 105.00 10.00 +9 10.00 43.00 9.00 61.00 138.00 10.00 +10 55.00 60.00 16.00 53.00 150.00 10.00 +11 30.00 60.00 16.00 101.00 156.00 10.00 +12 20.00 65.00 12.00 33.00 152.00 10.00 +13 50.00 35.00 19.00 38.00 97.00 10.00 +14 30.00 25.00 23.00 70.00 208.00 10.00 +15 15.00 10.00 20.00 32.00 137.00 10.00 +16 30.00 5.00 8.00 30.00 154.00 10.00 +17 10.00 20.00 19.00 54.00 105.00 10.00 +18 5.00 30.00 2.00 51.00 189.00 10.00 +19 20.00 40.00 12.00 77.00 106.00 10.00 +20 15.00 60.00 17.00 53.00 108.00 10.00 +21 45.00 65.00 9.00 109.00 152.00 10.00 +22 45.00 20.00 11.00 37.00 96.00 10.00 +23 45.00 10.00 18.00 59.00 144.00 10.00 +24 55.00 5.00 29.00 36.00 155.00 10.00 +25 65.00 35.00 3.00 118.00 190.00 10.00 +26 65.00 20.00 6.00 47.00 186.00 10.00 +27 45.00 30.00 17.00 117.00 156.00 10.00 +28 35.00 40.00 16.00 5.00 156.00 10.00 +29 41.00 37.00 16.00 8.00 79.00 10.00 +30 64.00 42.00 9.00 37.00 98.00 10.00 +31 40.00 60.00 21.00 28.00 123.00 10.00 +32 31.00 52.00 27.00 24.00 85.00 10.00 +33 35.00 69.00 23.00 116.00 175.00 10.00 +34 53.00 52.00 11.00 24.00 179.00 10.00 +35 65.00 55.00 14.00 100.00 143.00 10.00 +36 63.00 65.00 8.00 50.00 178.00 10.00 +37 2.00 60.00 5.00 41.00 178.00 10.00 +38 20.00 20.00 8.00 117.00 160.00 10.00 +39 5.00 5.00 16.00 42.00 145.00 10.00 +40 60.00 12.00 31.00 33.00 186.00 10.00 +41 40.00 25.00 9.00 51.00 128.00 10.00 +42 42.00 7.00 5.00 44.00 159.00 10.00 +43 24.00 12.00 5.00 25.00 172.00 10.00 +44 23.00 3.00 7.00 115.00 158.00 10.00 +45 11.00 14.00 18.00 31.00 138.00 10.00 +46 6.00 38.00 16.00 29.00 189.00 10.00 +47 2.00 48.00 1.00 93.00 150.00 10.00 +48 8.00 56.00 27.00 34.00 116.00 10.00 +49 13.00 52.00 36.00 125.00 192.00 10.00 +50 6.00 68.00 30.00 93.00 132.00 10.00 +51 47.00 47.00 13.00 105.00 152.00 10.00 +52 49.00 58.00 10.00 66.00 119.00 10.00 +53 27.00 43.00 9.00 25.00 88.00 10.00 +54 37.00 31.00 14.00 62.00 137.00 10.00 +55 57.00 29.00 18.00 121.00 168.00 10.00 +56 63.00 23.00 2.00 70.00 189.00 10.00 +57 53.00 12.00 6.00 81.00 188.00 10.00 +58 32.00 12.00 7.00 78.00 133.00 10.00 +59 36.00 26.00 18.00 79.00 210.00 10.00 +60 21.00 24.00 28.00 17.00 123.00 10.00 +61 17.00 34.00 3.00 130.00 201.00 10.00 +62 12.00 24.00 13.00 59.00 102.00 10.00 +63 24.00 58.00 19.00 25.00 164.00 10.00 +64 27.00 69.00 10.00 34.00 112.00 10.00 +65 15.00 77.00 9.00 46.00 165.00 10.00 +66 62.00 77.00 20.00 49.00 170.00 10.00 +67 49.00 73.00 25.00 77.00 179.00 10.00 +68 67.00 5.00 25.00 43.00 150.00 10.00 +69 56.00 39.00 36.00 82.00 198.00 10.00 +70 37.00 47.00 6.00 12.00 142.00 10.00 +71 37.00 56.00 5.00 21.00 198.00 10.00 +72 57.00 68.00 15.00 57.00 106.00 10.00 +73 47.00 16.00 25.00 22.00 110.00 10.00 +74 44.00 17.00 9.00 60.00 105.00 10.00 +75 46.00 13.00 8.00 73.00 195.00 10.00 +76 49.00 11.00 18.00 46.00 101.00 10.00 +77 49.00 42.00 13.00 36.00 119.00 10.00 +78 53.00 43.00 14.00 65.00 200.00 10.00 +79 61.00 52.00 3.00 43.00 158.00 10.00 +80 57.00 48.00 23.00 58.00 135.00 10.00 +81 56.00 37.00 6.00 69.00 198.00 10.00 +82 55.00 54.00 26.00 87.00 110.00 10.00 +83 15.00 47.00 16.00 28.00 91.00 10.00 +84 14.00 37.00 11.00 21.00 97.00 10.00 +85 11.00 31.00 7.00 68.00 143.00 10.00 +86 16.00 22.00 41.00 74.00 117.00 10.00 +87 4.00 18.00 35.00 79.00 118.00 10.00 +88 28.00 18.00 26.00 84.00 111.00 10.00 +89 26.00 52.00 9.00 24.00 133.00 10.00 +90 26.00 35.00 15.00 128.00 211.00 10.00 +91 31.00 67.00 3.00 76.00 123.00 10.00 +92 15.00 19.00 1.00 130.00 194.00 10.00 +93 22.00 22.00 2.00 18.00 181.00 10.00 +94 18.00 24.00 22.00 41.00 199.00 10.00 +95 26.00 27.00 27.00 88.00 121.00 10.00 +96 25.00 24.00 20.00 14.00 83.00 10.00 +97 22.00 27.00 11.00 119.00 160.00 10.00 +98 25.00 21.00 12.00 122.00 153.00 10.00 +99 19.00 21.00 10.00 32.00 93.00 10.00 +100 20.00 26.00 9.00 38.00 137.00 10.00 +101 18.00 18.00 17.00 28.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r111.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r111.dat new file mode 100644 index 000000000..60d1a6368 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r111.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 15.00 204.00 10.00 +3 35.00 17.00 7.00 18.00 202.00 10.00 +4 55.00 45.00 13.00 54.00 187.00 10.00 +5 55.00 20.00 19.00 138.00 169.00 10.00 +6 15.00 30.00 26.00 20.00 199.00 10.00 +7 25.00 30.00 3.00 76.00 131.00 10.00 +8 20.00 50.00 5.00 21.00 170.00 10.00 +9 10.00 43.00 9.00 87.00 112.00 10.00 +10 55.00 60.00 16.00 88.00 115.00 10.00 +11 30.00 60.00 16.00 107.00 150.00 10.00 +12 20.00 65.00 12.00 57.00 86.00 10.00 +13 50.00 35.00 19.00 15.00 192.00 10.00 +14 30.00 25.00 23.00 147.00 180.00 10.00 +15 15.00 10.00 20.00 32.00 187.00 10.00 +16 30.00 5.00 8.00 50.00 81.00 10.00 +17 10.00 20.00 19.00 29.00 139.00 10.00 +18 5.00 30.00 2.00 124.00 189.00 10.00 +19 20.00 40.00 12.00 47.00 136.00 10.00 +20 15.00 60.00 17.00 32.00 146.00 10.00 +21 45.00 65.00 9.00 79.00 182.00 10.00 +22 45.00 20.00 11.00 18.00 195.00 10.00 +23 45.00 10.00 18.00 76.00 127.00 10.00 +24 55.00 5.00 29.00 58.00 87.00 10.00 +25 65.00 35.00 3.00 58.00 190.00 10.00 +26 65.00 20.00 6.00 153.00 186.00 10.00 +27 45.00 30.00 17.00 58.00 208.00 10.00 +28 35.00 40.00 16.00 8.00 75.00 10.00 +29 41.00 37.00 16.00 6.00 136.00 10.00 +30 64.00 42.00 9.00 29.00 150.00 10.00 +31 40.00 60.00 21.00 49.00 102.00 10.00 +32 31.00 52.00 27.00 17.00 198.00 10.00 +33 35.00 69.00 23.00 67.00 186.00 10.00 +34 53.00 52.00 11.00 24.00 92.00 10.00 +35 65.00 55.00 14.00 36.00 183.00 10.00 +36 63.00 65.00 8.00 116.00 178.00 10.00 +37 2.00 60.00 5.00 41.00 112.00 10.00 +38 20.00 20.00 8.00 42.00 198.00 10.00 +39 5.00 5.00 16.00 74.00 101.00 10.00 +40 60.00 12.00 31.00 33.00 110.00 10.00 +41 40.00 25.00 9.00 65.00 114.00 10.00 +42 42.00 7.00 5.00 72.00 131.00 10.00 +43 24.00 12.00 5.00 25.00 91.00 10.00 +44 23.00 3.00 7.00 82.00 185.00 10.00 +45 11.00 14.00 18.00 59.00 88.00 10.00 +46 6.00 38.00 16.00 29.00 99.00 10.00 +47 2.00 48.00 1.00 63.00 180.00 10.00 +48 8.00 56.00 27.00 34.00 176.00 10.00 +49 13.00 52.00 36.00 27.00 192.00 10.00 +50 6.00 68.00 30.00 93.00 132.00 10.00 +51 47.00 47.00 13.00 41.00 203.00 10.00 +52 49.00 58.00 10.00 36.00 149.00 10.00 +53 27.00 43.00 9.00 11.00 195.00 10.00 +54 37.00 31.00 14.00 87.00 112.00 10.00 +55 57.00 29.00 18.00 90.00 197.00 10.00 +56 63.00 23.00 2.00 126.00 155.00 10.00 +57 53.00 12.00 6.00 106.00 163.00 10.00 +58 32.00 12.00 7.00 48.00 163.00 10.00 +59 36.00 26.00 18.00 178.00 210.00 10.00 +60 21.00 24.00 28.00 17.00 202.00 10.00 +61 17.00 34.00 3.00 70.00 201.00 10.00 +62 12.00 24.00 13.00 29.00 132.00 10.00 +63 24.00 58.00 19.00 46.00 79.00 10.00 +64 27.00 69.00 10.00 34.00 172.00 10.00 +65 15.00 77.00 9.00 48.00 107.00 10.00 +66 62.00 77.00 20.00 49.00 113.00 10.00 +67 49.00 73.00 25.00 104.00 159.00 10.00 +68 67.00 5.00 25.00 73.00 102.00 10.00 +69 56.00 39.00 36.00 117.00 176.00 10.00 +70 37.00 47.00 6.00 39.00 70.00 10.00 +71 37.00 56.00 5.00 123.00 198.00 10.00 +72 57.00 68.00 15.00 39.00 148.00 10.00 +73 47.00 16.00 25.00 22.00 197.00 10.00 +74 44.00 17.00 9.00 30.00 135.00 10.00 +75 46.00 13.00 8.00 138.00 169.00 10.00 +76 49.00 11.00 18.00 27.00 192.00 10.00 +77 49.00 42.00 13.00 65.00 90.00 10.00 +78 53.00 43.00 14.00 168.00 199.00 10.00 +79 61.00 52.00 3.00 71.00 130.00 10.00 +80 57.00 48.00 23.00 84.00 109.00 10.00 +81 56.00 37.00 6.00 135.00 198.00 10.00 +82 55.00 54.00 26.00 57.00 140.00 10.00 +83 15.00 47.00 16.00 23.00 196.00 10.00 +84 14.00 37.00 11.00 21.00 198.00 10.00 +85 11.00 31.00 7.00 93.00 118.00 10.00 +86 16.00 22.00 41.00 23.00 177.00 10.00 +87 4.00 18.00 35.00 49.00 148.00 10.00 +88 28.00 18.00 26.00 88.00 107.00 10.00 +89 26.00 52.00 9.00 50.00 107.00 10.00 +90 26.00 35.00 15.00 68.00 211.00 10.00 +91 31.00 67.00 3.00 46.00 153.00 10.00 +92 15.00 19.00 1.00 25.00 194.00 10.00 +93 22.00 22.00 2.00 18.00 53.00 10.00 +94 18.00 24.00 22.00 129.00 199.00 10.00 +95 26.00 27.00 27.00 35.00 174.00 10.00 +96 25.00 24.00 20.00 14.00 205.00 10.00 +97 22.00 27.00 11.00 51.00 204.00 10.00 +98 25.00 21.00 12.00 92.00 183.00 10.00 +99 19.00 21.00 10.00 21.00 198.00 10.00 +100 20.00 26.00 9.00 74.00 101.00 10.00 +101 18.00 18.00 17.00 159.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r112.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r112.dat new file mode 100644 index 000000000..9fc2ffbbd --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r112.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 230.00 0.00 +2 41.00 49.00 10.00 73.00 204.00 10.00 +3 35.00 17.00 7.00 18.00 147.00 10.00 +4 55.00 45.00 13.00 76.00 165.00 10.00 +5 55.00 20.00 19.00 73.00 195.00 10.00 +6 15.00 30.00 26.00 20.00 167.00 10.00 +7 25.00 30.00 3.00 49.00 158.00 10.00 +8 20.00 50.00 5.00 36.00 135.00 10.00 +9 10.00 43.00 9.00 50.00 149.00 10.00 +10 55.00 60.00 16.00 47.00 156.00 10.00 +11 30.00 60.00 16.00 85.00 172.00 10.00 +12 20.00 65.00 12.00 33.00 152.00 10.00 +13 50.00 35.00 19.00 15.00 133.00 10.00 +14 30.00 25.00 23.00 79.00 208.00 10.00 +15 15.00 10.00 20.00 32.00 187.00 10.00 +16 30.00 5.00 8.00 30.00 152.00 10.00 +17 10.00 20.00 19.00 29.00 139.00 10.00 +18 5.00 30.00 2.00 60.00 189.00 10.00 +19 20.00 40.00 12.00 47.00 136.00 10.00 +20 15.00 60.00 17.00 32.00 146.00 10.00 +21 45.00 65.00 9.00 79.00 182.00 10.00 +22 45.00 20.00 11.00 18.00 136.00 10.00 +23 45.00 10.00 18.00 50.00 153.00 10.00 +24 55.00 5.00 29.00 36.00 155.00 10.00 +25 65.00 35.00 3.00 58.00 190.00 10.00 +26 65.00 20.00 6.00 56.00 186.00 10.00 +27 45.00 30.00 17.00 87.00 186.00 10.00 +28 35.00 40.00 16.00 5.00 140.00 10.00 +29 41.00 37.00 16.00 6.00 136.00 10.00 +30 64.00 42.00 9.00 29.00 150.00 10.00 +31 40.00 60.00 21.00 25.00 132.00 10.00 +32 31.00 52.00 27.00 17.00 138.00 10.00 +33 35.00 69.00 23.00 67.00 186.00 10.00 +34 53.00 52.00 11.00 24.00 161.00 10.00 +35 65.00 55.00 14.00 70.00 173.00 10.00 +36 63.00 65.00 8.00 54.00 178.00 10.00 +37 2.00 60.00 5.00 41.00 178.00 10.00 +38 20.00 20.00 8.00 87.00 190.00 10.00 +39 5.00 5.00 16.00 42.00 153.00 10.00 +40 60.00 12.00 31.00 33.00 186.00 10.00 +41 40.00 25.00 9.00 40.00 139.00 10.00 +42 42.00 7.00 5.00 43.00 160.00 10.00 +43 24.00 12.00 5.00 25.00 158.00 10.00 +44 23.00 3.00 7.00 82.00 185.00 10.00 +45 11.00 14.00 18.00 31.00 144.00 10.00 +46 6.00 38.00 16.00 29.00 169.00 10.00 +47 2.00 48.00 1.00 63.00 180.00 10.00 +48 8.00 56.00 27.00 34.00 176.00 10.00 +49 13.00 52.00 36.00 65.00 192.00 10.00 +50 6.00 68.00 30.00 73.00 152.00 10.00 +51 47.00 47.00 13.00 75.00 182.00 10.00 +52 49.00 58.00 10.00 36.00 149.00 10.00 +53 27.00 43.00 9.00 11.00 133.00 10.00 +54 37.00 31.00 14.00 51.00 148.00 10.00 +55 57.00 29.00 18.00 90.00 197.00 10.00 +56 63.00 23.00 2.00 69.00 189.00 10.00 +57 53.00 12.00 6.00 76.00 190.00 10.00 +58 32.00 12.00 7.00 48.00 163.00 10.00 +59 36.00 26.00 18.00 84.00 210.00 10.00 +60 21.00 24.00 28.00 17.00 183.00 10.00 +61 17.00 34.00 3.00 70.00 201.00 10.00 +62 12.00 24.00 13.00 29.00 132.00 10.00 +63 24.00 58.00 19.00 25.00 154.00 10.00 +64 27.00 69.00 10.00 34.00 172.00 10.00 +65 15.00 77.00 9.00 46.00 165.00 10.00 +66 62.00 77.00 20.00 49.00 170.00 10.00 +67 49.00 73.00 25.00 68.00 179.00 10.00 +68 67.00 5.00 25.00 43.00 156.00 10.00 +69 56.00 39.00 36.00 80.00 198.00 10.00 +70 37.00 47.00 6.00 12.00 137.00 10.00 +71 37.00 56.00 5.00 48.00 198.00 10.00 +72 57.00 68.00 15.00 39.00 148.00 10.00 +73 47.00 16.00 25.00 22.00 170.00 10.00 +74 44.00 17.00 9.00 30.00 135.00 10.00 +75 46.00 13.00 8.00 74.00 195.00 10.00 +76 49.00 11.00 18.00 27.00 141.00 10.00 +77 49.00 42.00 13.00 27.00 128.00 10.00 +78 53.00 43.00 14.00 72.00 200.00 10.00 +79 61.00 52.00 3.00 42.00 159.00 10.00 +80 57.00 48.00 23.00 47.00 146.00 10.00 +81 56.00 37.00 6.00 73.00 198.00 10.00 +82 55.00 54.00 26.00 57.00 140.00 10.00 +83 15.00 47.00 16.00 23.00 146.00 10.00 +84 14.00 37.00 11.00 21.00 157.00 10.00 +85 11.00 31.00 7.00 57.00 154.00 10.00 +86 16.00 22.00 41.00 44.00 147.00 10.00 +87 4.00 18.00 35.00 49.00 148.00 10.00 +88 28.00 18.00 26.00 61.00 134.00 10.00 +89 26.00 52.00 9.00 21.00 136.00 10.00 +90 26.00 35.00 15.00 68.00 211.00 10.00 +91 31.00 67.00 3.00 46.00 153.00 10.00 +92 15.00 19.00 1.00 70.00 194.00 10.00 +93 22.00 22.00 2.00 18.00 159.00 10.00 +94 18.00 24.00 22.00 60.00 199.00 10.00 +95 26.00 27.00 27.00 58.00 151.00 10.00 +96 25.00 24.00 20.00 14.00 143.00 10.00 +97 22.00 27.00 11.00 89.00 190.00 10.00 +98 25.00 21.00 12.00 92.00 183.00 10.00 +99 19.00 21.00 10.00 21.00 142.00 10.00 +100 20.00 26.00 9.00 33.00 142.00 10.00 +101 18.00 18.00 17.00 51.00 195.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r201.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r201.dat new file mode 100644 index 000000000..2e1690de3 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r201.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 1000.00 0.00 +2 41.00 49.00 10.00 707.00 848.00 10.00 +3 35.00 17.00 7.00 143.00 282.00 10.00 +4 55.00 45.00 13.00 527.00 584.00 10.00 +5 55.00 20.00 19.00 678.00 801.00 10.00 +6 15.00 30.00 26.00 34.00 209.00 10.00 +7 25.00 30.00 3.00 415.00 514.00 10.00 +8 20.00 50.00 5.00 331.00 410.00 10.00 +9 10.00 43.00 9.00 404.00 481.00 10.00 +10 55.00 60.00 16.00 400.00 497.00 10.00 +11 30.00 60.00 16.00 577.00 632.00 10.00 +12 20.00 65.00 12.00 206.00 325.00 10.00 +13 50.00 35.00 19.00 228.00 345.00 10.00 +14 30.00 25.00 23.00 690.00 827.00 10.00 +15 15.00 10.00 20.00 32.00 243.00 10.00 +16 30.00 5.00 8.00 175.00 300.00 10.00 +17 10.00 20.00 19.00 272.00 373.00 10.00 +18 5.00 30.00 2.00 733.00 870.00 10.00 +19 20.00 40.00 12.00 377.00 434.00 10.00 +20 15.00 60.00 17.00 269.00 378.00 10.00 +21 45.00 65.00 9.00 581.00 666.00 10.00 +22 45.00 20.00 11.00 214.00 331.00 10.00 +23 45.00 10.00 18.00 409.00 494.00 10.00 +24 55.00 5.00 29.00 206.00 325.00 10.00 +25 65.00 35.00 3.00 704.00 847.00 10.00 +26 65.00 20.00 6.00 817.00 956.00 10.00 +27 45.00 30.00 17.00 588.00 667.00 10.00 +28 35.00 40.00 16.00 104.00 255.00 10.00 +29 41.00 37.00 16.00 114.00 255.00 10.00 +30 64.00 42.00 9.00 190.00 313.00 10.00 +31 40.00 60.00 21.00 259.00 354.00 10.00 +32 31.00 52.00 27.00 152.00 275.00 10.00 +33 35.00 69.00 23.00 660.00 777.00 10.00 +34 53.00 52.00 11.00 45.00 200.00 10.00 +35 65.00 55.00 14.00 529.00 614.00 10.00 +36 63.00 65.00 8.00 686.00 813.00 10.00 +37 2.00 60.00 5.00 41.00 208.00 10.00 +38 20.00 20.00 8.00 606.00 693.00 10.00 +39 5.00 5.00 16.00 302.00 405.00 10.00 +40 60.00 12.00 31.00 33.00 224.00 10.00 +41 40.00 25.00 9.00 360.00 437.00 10.00 +42 42.00 7.00 5.00 396.00 511.00 10.00 +43 24.00 12.00 5.00 25.00 172.00 10.00 +44 23.00 3.00 7.00 620.00 705.00 10.00 +45 11.00 14.00 18.00 233.00 340.00 10.00 +46 6.00 38.00 16.00 29.00 189.00 10.00 +47 2.00 48.00 1.00 515.00 628.00 10.00 +48 8.00 56.00 27.00 85.00 250.00 10.00 +49 13.00 52.00 36.00 773.00 906.00 10.00 +50 6.00 68.00 30.00 501.00 540.00 10.00 +51 47.00 47.00 13.00 547.00 642.00 10.00 +52 49.00 58.00 10.00 348.00 453.00 10.00 +53 27.00 43.00 9.00 174.00 299.00 10.00 +54 37.00 31.00 14.00 414.00 489.00 10.00 +55 57.00 29.00 18.00 641.00 734.00 10.00 +56 63.00 23.00 2.00 620.00 739.00 10.00 +57 53.00 12.00 6.00 585.00 692.00 10.00 +58 32.00 12.00 7.00 421.00 530.00 10.00 +59 36.00 26.00 18.00 849.00 980.00 10.00 +60 21.00 24.00 28.00 17.00 229.00 10.00 +61 17.00 34.00 3.00 721.00 862.00 10.00 +62 12.00 24.00 13.00 290.00 377.00 10.00 +63 24.00 58.00 19.00 163.00 302.00 10.00 +64 27.00 69.00 10.00 34.00 191.00 10.00 +65 15.00 77.00 9.00 214.00 333.00 10.00 +66 62.00 77.00 20.00 49.00 188.00 10.00 +67 49.00 73.00 25.00 592.00 693.00 10.00 +68 67.00 5.00 25.00 294.00 401.00 10.00 +69 56.00 39.00 36.00 637.00 752.00 10.00 +70 37.00 47.00 6.00 162.00 293.00 10.00 +71 37.00 56.00 5.00 788.00 968.00 10.00 +72 57.00 68.00 15.00 268.00 367.00 10.00 +73 47.00 16.00 25.00 31.00 208.00 10.00 +74 44.00 17.00 9.00 308.00 399.00 10.00 +75 46.00 13.00 8.00 681.00 802.00 10.00 +76 49.00 11.00 18.00 236.00 345.00 10.00 +77 49.00 42.00 13.00 290.00 373.00 10.00 +78 53.00 43.00 14.00 817.00 952.00 10.00 +79 61.00 52.00 3.00 384.00 499.00 10.00 +80 57.00 48.00 23.00 388.00 465.00 10.00 +81 56.00 37.00 6.00 839.00 968.00 10.00 +82 55.00 54.00 26.00 411.00 456.00 10.00 +83 15.00 47.00 16.00 162.00 289.00 10.00 +84 14.00 37.00 11.00 96.00 249.00 10.00 +85 11.00 31.00 7.00 436.00 511.00 10.00 +86 16.00 22.00 41.00 376.00 461.00 10.00 +87 4.00 18.00 35.00 388.00 465.00 10.00 +88 28.00 18.00 26.00 420.00 447.00 10.00 +89 26.00 52.00 9.00 279.00 388.00 10.00 +90 26.00 35.00 15.00 755.00 920.00 10.00 +91 31.00 67.00 3.00 392.00 487.00 10.00 +92 15.00 19.00 1.00 739.00 866.00 10.00 +93 22.00 22.00 2.00 18.00 181.00 10.00 +94 18.00 24.00 22.00 811.00 969.00 10.00 +95 26.00 27.00 27.00 436.00 503.00 10.00 +96 25.00 24.00 20.00 92.00 231.00 10.00 +97 22.00 27.00 11.00 607.00 690.00 10.00 +98 25.00 21.00 12.00 612.00 673.00 10.00 +99 19.00 21.00 10.00 183.00 306.00 10.00 +100 20.00 26.00 9.00 333.00 432.00 10.00 +101 18.00 18.00 17.00 798.00 965.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r202.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r202.dat new file mode 100644 index 000000000..6e0f5f08b --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r202.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 1000.00 0.00 +2 41.00 49.00 10.00 0.00 974.00 10.00 +3 35.00 17.00 7.00 0.00 972.00 10.00 +4 55.00 45.00 13.00 0.00 967.00 10.00 +5 55.00 20.00 19.00 678.00 801.00 10.00 +6 15.00 30.00 26.00 0.00 969.00 10.00 +7 25.00 30.00 3.00 415.00 514.00 10.00 +8 20.00 50.00 5.00 0.00 968.00 10.00 +9 10.00 43.00 9.00 404.00 481.00 10.00 +10 55.00 60.00 16.00 400.00 497.00 10.00 +11 30.00 60.00 16.00 577.00 632.00 10.00 +12 20.00 65.00 12.00 206.00 325.00 10.00 +13 50.00 35.00 19.00 0.00 975.00 10.00 +14 30.00 25.00 23.00 690.00 827.00 10.00 +15 15.00 10.00 20.00 32.00 243.00 10.00 +16 30.00 5.00 8.00 175.00 300.00 10.00 +17 10.00 20.00 19.00 272.00 373.00 10.00 +18 5.00 30.00 2.00 733.00 870.00 10.00 +19 20.00 40.00 12.00 377.00 434.00 10.00 +20 15.00 60.00 17.00 269.00 378.00 10.00 +21 45.00 65.00 9.00 581.00 666.00 10.00 +22 45.00 20.00 11.00 0.00 971.00 10.00 +23 45.00 10.00 18.00 409.00 494.00 10.00 +24 55.00 5.00 29.00 206.00 325.00 10.00 +25 65.00 35.00 3.00 704.00 847.00 10.00 +26 65.00 20.00 6.00 817.00 956.00 10.00 +27 45.00 30.00 17.00 0.00 978.00 10.00 +28 35.00 40.00 16.00 104.00 255.00 10.00 +29 41.00 37.00 16.00 114.00 255.00 10.00 +30 64.00 42.00 9.00 190.00 313.00 10.00 +31 40.00 60.00 21.00 259.00 354.00 10.00 +32 31.00 52.00 27.00 0.00 972.00 10.00 +33 35.00 69.00 23.00 660.00 777.00 10.00 +34 53.00 52.00 11.00 45.00 200.00 10.00 +35 65.00 55.00 14.00 0.00 953.00 10.00 +36 63.00 65.00 8.00 686.00 813.00 10.00 +37 2.00 60.00 5.00 41.00 208.00 10.00 +38 20.00 20.00 8.00 0.00 968.00 10.00 +39 5.00 5.00 16.00 302.00 405.00 10.00 +40 60.00 12.00 31.00 33.00 224.00 10.00 +41 40.00 25.00 9.00 360.00 437.00 10.00 +42 42.00 7.00 5.00 396.00 511.00 10.00 +43 24.00 12.00 5.00 25.00 172.00 10.00 +44 23.00 3.00 7.00 620.00 705.00 10.00 +45 11.00 14.00 18.00 233.00 340.00 10.00 +46 6.00 38.00 16.00 29.00 189.00 10.00 +47 2.00 48.00 1.00 515.00 628.00 10.00 +48 8.00 56.00 27.00 85.00 250.00 10.00 +49 13.00 52.00 36.00 0.00 962.00 10.00 +50 6.00 68.00 30.00 501.00 540.00 10.00 +51 47.00 47.00 13.00 0.00 973.00 10.00 +52 49.00 58.00 10.00 348.00 453.00 10.00 +53 27.00 43.00 9.00 0.00 978.00 10.00 +54 37.00 31.00 14.00 414.00 489.00 10.00 +55 57.00 29.00 18.00 641.00 734.00 10.00 +56 63.00 23.00 2.00 620.00 739.00 10.00 +57 53.00 12.00 6.00 585.00 692.00 10.00 +58 32.00 12.00 7.00 421.00 530.00 10.00 +59 36.00 26.00 18.00 849.00 980.00 10.00 +60 21.00 24.00 28.00 0.00 972.00 10.00 +61 17.00 34.00 3.00 721.00 862.00 10.00 +62 12.00 24.00 13.00 290.00 377.00 10.00 +63 24.00 58.00 19.00 163.00 302.00 10.00 +64 27.00 69.00 10.00 34.00 191.00 10.00 +65 15.00 77.00 9.00 214.00 333.00 10.00 +66 62.00 77.00 20.00 49.00 188.00 10.00 +67 49.00 73.00 25.00 592.00 693.00 10.00 +68 67.00 5.00 25.00 294.00 401.00 10.00 +69 56.00 39.00 36.00 637.00 752.00 10.00 +70 37.00 47.00 6.00 162.00 293.00 10.00 +71 37.00 56.00 5.00 788.00 968.00 10.00 +72 57.00 68.00 15.00 268.00 367.00 10.00 +73 47.00 16.00 25.00 0.00 967.00 10.00 +74 44.00 17.00 9.00 308.00 399.00 10.00 +75 46.00 13.00 8.00 681.00 802.00 10.00 +76 49.00 11.00 18.00 0.00 962.00 10.00 +77 49.00 42.00 13.00 290.00 373.00 10.00 +78 53.00 43.00 14.00 817.00 952.00 10.00 +79 61.00 52.00 3.00 384.00 499.00 10.00 +80 57.00 48.00 23.00 388.00 465.00 10.00 +81 56.00 37.00 6.00 839.00 968.00 10.00 +82 55.00 54.00 26.00 411.00 456.00 10.00 +83 15.00 47.00 16.00 0.00 966.00 10.00 +84 14.00 37.00 11.00 0.00 968.00 10.00 +85 11.00 31.00 7.00 436.00 511.00 10.00 +86 16.00 22.00 41.00 0.00 966.00 10.00 +87 4.00 18.00 35.00 388.00 465.00 10.00 +88 28.00 18.00 26.00 420.00 447.00 10.00 +89 26.00 52.00 9.00 279.00 388.00 10.00 +90 26.00 35.00 15.00 755.00 920.00 10.00 +91 31.00 67.00 3.00 392.00 487.00 10.00 +92 15.00 19.00 1.00 0.00 964.00 10.00 +93 22.00 22.00 2.00 18.00 181.00 10.00 +94 18.00 24.00 22.00 811.00 969.00 10.00 +95 26.00 27.00 27.00 0.00 977.00 10.00 +96 25.00 24.00 20.00 0.00 975.00 10.00 +97 22.00 27.00 11.00 0.00 974.00 10.00 +98 25.00 21.00 12.00 612.00 673.00 10.00 +99 19.00 21.00 10.00 0.00 968.00 10.00 +100 20.00 26.00 9.00 333.00 432.00 10.00 +101 18.00 18.00 17.00 798.00 965.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r203.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r203.dat new file mode 100644 index 000000000..ddcb9ccd6 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r203.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 1000.00 0.00 +2 41.00 49.00 10.00 0.00 974.00 10.00 +3 35.00 17.00 7.00 0.00 972.00 10.00 +4 55.00 45.00 13.00 0.00 967.00 10.00 +5 55.00 20.00 19.00 678.00 801.00 10.00 +6 15.00 30.00 26.00 0.00 969.00 10.00 +7 25.00 30.00 3.00 415.00 514.00 10.00 +8 20.00 50.00 5.00 0.00 968.00 10.00 +9 10.00 43.00 9.00 404.00 481.00 10.00 +10 55.00 60.00 16.00 400.00 497.00 10.00 +11 30.00 60.00 16.00 577.00 632.00 10.00 +12 20.00 65.00 12.00 206.00 325.00 10.00 +13 50.00 35.00 19.00 0.00 975.00 10.00 +14 30.00 25.00 23.00 690.00 827.00 10.00 +15 15.00 10.00 20.00 0.00 957.00 10.00 +16 30.00 5.00 8.00 175.00 300.00 10.00 +17 10.00 20.00 19.00 0.00 960.00 10.00 +18 5.00 30.00 2.00 733.00 870.00 10.00 +19 20.00 40.00 12.00 0.00 974.00 10.00 +20 15.00 60.00 17.00 0.00 957.00 10.00 +21 45.00 65.00 9.00 0.00 958.00 10.00 +22 45.00 20.00 11.00 0.00 971.00 10.00 +23 45.00 10.00 18.00 409.00 494.00 10.00 +24 55.00 5.00 29.00 206.00 325.00 10.00 +25 65.00 35.00 3.00 0.00 960.00 10.00 +26 65.00 20.00 6.00 817.00 956.00 10.00 +27 45.00 30.00 17.00 0.00 978.00 10.00 +28 35.00 40.00 16.00 104.00 255.00 10.00 +29 41.00 37.00 16.00 0.00 983.00 10.00 +30 64.00 42.00 9.00 0.00 960.00 10.00 +31 40.00 60.00 21.00 259.00 354.00 10.00 +32 31.00 52.00 27.00 0.00 972.00 10.00 +33 35.00 69.00 23.00 0.00 956.00 10.00 +34 53.00 52.00 11.00 45.00 200.00 10.00 +35 65.00 55.00 14.00 0.00 953.00 10.00 +36 63.00 65.00 8.00 686.00 813.00 10.00 +37 2.00 60.00 5.00 41.00 208.00 10.00 +38 20.00 20.00 8.00 0.00 968.00 10.00 +39 5.00 5.00 16.00 302.00 405.00 10.00 +40 60.00 12.00 31.00 33.00 224.00 10.00 +41 40.00 25.00 9.00 360.00 437.00 10.00 +42 42.00 7.00 5.00 396.00 511.00 10.00 +43 24.00 12.00 5.00 25.00 172.00 10.00 +44 23.00 3.00 7.00 0.00 955.00 10.00 +45 11.00 14.00 18.00 233.00 340.00 10.00 +46 6.00 38.00 16.00 29.00 189.00 10.00 +47 2.00 48.00 1.00 0.00 954.00 10.00 +48 8.00 56.00 27.00 0.00 955.00 10.00 +49 13.00 52.00 36.00 0.00 962.00 10.00 +50 6.00 68.00 30.00 501.00 540.00 10.00 +51 47.00 47.00 13.00 0.00 973.00 10.00 +52 49.00 58.00 10.00 0.00 963.00 10.00 +53 27.00 43.00 9.00 0.00 978.00 10.00 +54 37.00 31.00 14.00 414.00 489.00 10.00 +55 57.00 29.00 18.00 0.00 967.00 10.00 +56 63.00 23.00 2.00 620.00 739.00 10.00 +57 53.00 12.00 6.00 585.00 692.00 10.00 +58 32.00 12.00 7.00 0.00 966.00 10.00 +59 36.00 26.00 18.00 849.00 980.00 10.00 +60 21.00 24.00 28.00 0.00 972.00 10.00 +61 17.00 34.00 3.00 0.00 971.00 10.00 +62 12.00 24.00 13.00 0.00 964.00 10.00 +63 24.00 58.00 19.00 163.00 302.00 10.00 +64 27.00 69.00 10.00 0.00 955.00 10.00 +65 15.00 77.00 9.00 214.00 333.00 10.00 +66 62.00 77.00 20.00 49.00 188.00 10.00 +67 49.00 73.00 25.00 592.00 693.00 10.00 +68 67.00 5.00 25.00 294.00 401.00 10.00 +69 56.00 39.00 36.00 637.00 752.00 10.00 +70 37.00 47.00 6.00 162.00 293.00 10.00 +71 37.00 56.00 5.00 788.00 968.00 10.00 +72 57.00 68.00 15.00 0.00 950.00 10.00 +73 47.00 16.00 25.00 0.00 967.00 10.00 +74 44.00 17.00 9.00 0.00 969.00 10.00 +75 46.00 13.00 8.00 681.00 802.00 10.00 +76 49.00 11.00 18.00 0.00 962.00 10.00 +77 49.00 42.00 13.00 290.00 373.00 10.00 +78 53.00 43.00 14.00 817.00 952.00 10.00 +79 61.00 52.00 3.00 384.00 499.00 10.00 +80 57.00 48.00 23.00 388.00 465.00 10.00 +81 56.00 37.00 6.00 839.00 968.00 10.00 +82 55.00 54.00 26.00 0.00 962.00 10.00 +83 15.00 47.00 16.00 0.00 966.00 10.00 +84 14.00 37.00 11.00 0.00 968.00 10.00 +85 11.00 31.00 7.00 436.00 511.00 10.00 +86 16.00 22.00 41.00 0.00 966.00 10.00 +87 4.00 18.00 35.00 0.00 954.00 10.00 +88 28.00 18.00 26.00 420.00 447.00 10.00 +89 26.00 52.00 9.00 279.00 388.00 10.00 +90 26.00 35.00 15.00 0.00 981.00 10.00 +91 31.00 67.00 3.00 0.00 957.00 10.00 +92 15.00 19.00 1.00 0.00 964.00 10.00 +93 22.00 22.00 2.00 18.00 181.00 10.00 +94 18.00 24.00 22.00 811.00 969.00 10.00 +95 26.00 27.00 27.00 0.00 977.00 10.00 +96 25.00 24.00 20.00 0.00 975.00 10.00 +97 22.00 27.00 11.00 0.00 974.00 10.00 +98 25.00 21.00 12.00 0.00 972.00 10.00 +99 19.00 21.00 10.00 0.00 968.00 10.00 +100 20.00 26.00 9.00 333.00 432.00 10.00 +101 18.00 18.00 17.00 798.00 965.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r204.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r204.dat new file mode 100644 index 000000000..952465c8a --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r204.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 1000.00 0.00 +2 41.00 49.00 10.00 0.00 974.00 10.00 +3 35.00 17.00 7.00 0.00 972.00 10.00 +4 55.00 45.00 13.00 0.00 967.00 10.00 +5 55.00 20.00 19.00 678.00 801.00 10.00 +6 15.00 30.00 26.00 0.00 969.00 10.00 +7 25.00 30.00 3.00 0.00 978.00 10.00 +8 20.00 50.00 5.00 0.00 968.00 10.00 +9 10.00 43.00 9.00 404.00 481.00 10.00 +10 55.00 60.00 16.00 400.00 497.00 10.00 +11 30.00 60.00 16.00 0.00 964.00 10.00 +12 20.00 65.00 12.00 206.00 325.00 10.00 +13 50.00 35.00 19.00 0.00 975.00 10.00 +14 30.00 25.00 23.00 690.00 827.00 10.00 +15 15.00 10.00 20.00 0.00 957.00 10.00 +16 30.00 5.00 8.00 175.00 300.00 10.00 +17 10.00 20.00 19.00 0.00 960.00 10.00 +18 5.00 30.00 2.00 0.00 959.00 10.00 +19 20.00 40.00 12.00 0.00 974.00 10.00 +20 15.00 60.00 17.00 0.00 957.00 10.00 +21 45.00 65.00 9.00 0.00 958.00 10.00 +22 45.00 20.00 11.00 0.00 971.00 10.00 +23 45.00 10.00 18.00 0.00 963.00 10.00 +24 55.00 5.00 29.00 206.00 325.00 10.00 +25 65.00 35.00 3.00 0.00 960.00 10.00 +26 65.00 20.00 6.00 817.00 956.00 10.00 +27 45.00 30.00 17.00 0.00 978.00 10.00 +28 35.00 40.00 16.00 0.00 985.00 10.00 +29 41.00 37.00 16.00 0.00 983.00 10.00 +30 64.00 42.00 9.00 0.00 960.00 10.00 +31 40.00 60.00 21.00 0.00 964.00 10.00 +32 31.00 52.00 27.00 0.00 972.00 10.00 +33 35.00 69.00 23.00 0.00 956.00 10.00 +34 53.00 52.00 11.00 0.00 965.00 10.00 +35 65.00 55.00 14.00 0.00 953.00 10.00 +36 63.00 65.00 8.00 0.00 948.00 10.00 +37 2.00 60.00 5.00 0.00 948.00 10.00 +38 20.00 20.00 8.00 0.00 968.00 10.00 +39 5.00 5.00 16.00 302.00 405.00 10.00 +40 60.00 12.00 31.00 0.00 956.00 10.00 +41 40.00 25.00 9.00 0.00 978.00 10.00 +42 42.00 7.00 5.00 0.00 961.00 10.00 +43 24.00 12.00 5.00 0.00 964.00 10.00 +44 23.00 3.00 7.00 0.00 955.00 10.00 +45 11.00 14.00 18.00 233.00 340.00 10.00 +46 6.00 38.00 16.00 0.00 960.00 10.00 +47 2.00 48.00 1.00 0.00 954.00 10.00 +48 8.00 56.00 27.00 0.00 955.00 10.00 +49 13.00 52.00 36.00 0.00 962.00 10.00 +50 6.00 68.00 30.00 0.00 946.00 10.00 +51 47.00 47.00 13.00 0.00 973.00 10.00 +52 49.00 58.00 10.00 0.00 963.00 10.00 +53 27.00 43.00 9.00 0.00 978.00 10.00 +54 37.00 31.00 14.00 414.00 489.00 10.00 +55 57.00 29.00 18.00 0.00 967.00 10.00 +56 63.00 23.00 2.00 620.00 739.00 10.00 +57 53.00 12.00 6.00 0.00 960.00 10.00 +58 32.00 12.00 7.00 0.00 966.00 10.00 +59 36.00 26.00 18.00 849.00 980.00 10.00 +60 21.00 24.00 28.00 0.00 972.00 10.00 +61 17.00 34.00 3.00 0.00 971.00 10.00 +62 12.00 24.00 13.00 0.00 964.00 10.00 +63 24.00 58.00 19.00 163.00 302.00 10.00 +64 27.00 69.00 10.00 0.00 955.00 10.00 +65 15.00 77.00 9.00 0.00 943.00 10.00 +66 62.00 77.00 20.00 0.00 940.00 10.00 +67 49.00 73.00 25.00 0.00 949.00 10.00 +68 67.00 5.00 25.00 294.00 401.00 10.00 +69 56.00 39.00 36.00 0.00 968.00 10.00 +70 37.00 47.00 6.00 162.00 293.00 10.00 +71 37.00 56.00 5.00 0.00 968.00 10.00 +72 57.00 68.00 15.00 0.00 950.00 10.00 +73 47.00 16.00 25.00 0.00 967.00 10.00 +74 44.00 17.00 9.00 0.00 969.00 10.00 +75 46.00 13.00 8.00 681.00 802.00 10.00 +76 49.00 11.00 18.00 0.00 962.00 10.00 +77 49.00 42.00 13.00 290.00 373.00 10.00 +78 53.00 43.00 14.00 817.00 952.00 10.00 +79 61.00 52.00 3.00 0.00 958.00 10.00 +80 57.00 48.00 23.00 388.00 465.00 10.00 +81 56.00 37.00 6.00 0.00 968.00 10.00 +82 55.00 54.00 26.00 0.00 962.00 10.00 +83 15.00 47.00 16.00 0.00 966.00 10.00 +84 14.00 37.00 11.00 0.00 968.00 10.00 +85 11.00 31.00 7.00 436.00 511.00 10.00 +86 16.00 22.00 41.00 0.00 966.00 10.00 +87 4.00 18.00 35.00 0.00 954.00 10.00 +88 28.00 18.00 26.00 420.00 447.00 10.00 +89 26.00 52.00 9.00 0.00 970.00 10.00 +90 26.00 35.00 15.00 0.00 981.00 10.00 +91 31.00 67.00 3.00 0.00 957.00 10.00 +92 15.00 19.00 1.00 0.00 964.00 10.00 +93 22.00 22.00 2.00 18.00 181.00 10.00 +94 18.00 24.00 22.00 0.00 969.00 10.00 +95 26.00 27.00 27.00 0.00 977.00 10.00 +96 25.00 24.00 20.00 0.00 975.00 10.00 +97 22.00 27.00 11.00 0.00 974.00 10.00 +98 25.00 21.00 12.00 0.00 972.00 10.00 +99 19.00 21.00 10.00 0.00 968.00 10.00 +100 20.00 26.00 9.00 333.00 432.00 10.00 +101 18.00 18.00 17.00 798.00 965.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r205.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r205.dat new file mode 100644 index 000000000..e1a728f30 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r205.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 1000.00 0.00 +2 41.00 49.00 10.00 658.00 898.00 10.00 +3 35.00 17.00 7.00 93.00 333.00 10.00 +4 55.00 45.00 13.00 436.00 676.00 10.00 +5 55.00 20.00 19.00 620.00 860.00 10.00 +6 15.00 30.00 26.00 20.00 260.00 10.00 +7 25.00 30.00 3.00 345.00 585.00 10.00 +8 20.00 50.00 5.00 251.00 491.00 10.00 +9 10.00 43.00 9.00 323.00 563.00 10.00 +10 55.00 60.00 16.00 329.00 569.00 10.00 +11 30.00 60.00 16.00 485.00 725.00 10.00 +12 20.00 65.00 12.00 146.00 386.00 10.00 +13 50.00 35.00 19.00 167.00 407.00 10.00 +14 30.00 25.00 23.00 639.00 879.00 10.00 +15 15.00 10.00 20.00 32.00 272.00 10.00 +16 30.00 5.00 8.00 118.00 358.00 10.00 +17 10.00 20.00 19.00 203.00 443.00 10.00 +18 5.00 30.00 2.00 682.00 922.00 10.00 +19 20.00 40.00 12.00 286.00 526.00 10.00 +20 15.00 60.00 17.00 204.00 444.00 10.00 +21 45.00 65.00 9.00 504.00 744.00 10.00 +22 45.00 20.00 11.00 153.00 393.00 10.00 +23 45.00 10.00 18.00 332.00 572.00 10.00 +24 55.00 5.00 29.00 146.00 386.00 10.00 +25 65.00 35.00 3.00 656.00 896.00 10.00 +26 65.00 20.00 6.00 716.00 956.00 10.00 +27 45.00 30.00 17.00 508.00 748.00 10.00 +28 35.00 40.00 16.00 60.00 300.00 10.00 +29 41.00 37.00 16.00 65.00 305.00 10.00 +30 64.00 42.00 9.00 132.00 372.00 10.00 +31 40.00 60.00 21.00 187.00 427.00 10.00 +32 31.00 52.00 27.00 94.00 334.00 10.00 +33 35.00 69.00 23.00 599.00 839.00 10.00 +34 53.00 52.00 11.00 24.00 264.00 10.00 +35 65.00 55.00 14.00 452.00 692.00 10.00 +36 63.00 65.00 8.00 630.00 870.00 10.00 +37 2.00 60.00 5.00 41.00 281.00 10.00 +38 20.00 20.00 8.00 530.00 770.00 10.00 +39 5.00 5.00 16.00 234.00 474.00 10.00 +40 60.00 12.00 31.00 33.00 273.00 10.00 +41 40.00 25.00 9.00 279.00 519.00 10.00 +42 42.00 7.00 5.00 334.00 574.00 10.00 +43 24.00 12.00 5.00 25.00 265.00 10.00 +44 23.00 3.00 7.00 543.00 783.00 10.00 +45 11.00 14.00 18.00 167.00 407.00 10.00 +46 6.00 38.00 16.00 29.00 269.00 10.00 +47 2.00 48.00 1.00 452.00 692.00 10.00 +48 8.00 56.00 27.00 48.00 288.00 10.00 +49 13.00 52.00 36.00 720.00 960.00 10.00 +50 6.00 68.00 30.00 401.00 641.00 10.00 +51 47.00 47.00 13.00 475.00 715.00 10.00 +52 49.00 58.00 10.00 281.00 521.00 10.00 +53 27.00 43.00 9.00 117.00 357.00 10.00 +54 37.00 31.00 14.00 332.00 572.00 10.00 +55 57.00 29.00 18.00 568.00 808.00 10.00 +56 63.00 23.00 2.00 560.00 800.00 10.00 +57 53.00 12.00 6.00 519.00 759.00 10.00 +58 32.00 12.00 7.00 356.00 596.00 10.00 +59 36.00 26.00 18.00 740.00 980.00 10.00 +60 21.00 24.00 28.00 17.00 257.00 10.00 +61 17.00 34.00 3.00 672.00 912.00 10.00 +62 12.00 24.00 13.00 214.00 454.00 10.00 +63 24.00 58.00 19.00 113.00 353.00 10.00 +64 27.00 69.00 10.00 34.00 274.00 10.00 +65 15.00 77.00 9.00 154.00 394.00 10.00 +66 62.00 77.00 20.00 49.00 289.00 10.00 +67 49.00 73.00 25.00 523.00 763.00 10.00 +68 67.00 5.00 25.00 228.00 468.00 10.00 +69 56.00 39.00 36.00 575.00 815.00 10.00 +70 37.00 47.00 6.00 108.00 348.00 10.00 +71 37.00 56.00 5.00 728.00 968.00 10.00 +72 57.00 68.00 15.00 198.00 438.00 10.00 +73 47.00 16.00 25.00 22.00 262.00 10.00 +74 44.00 17.00 9.00 234.00 474.00 10.00 +75 46.00 13.00 8.00 622.00 862.00 10.00 +76 49.00 11.00 18.00 171.00 411.00 10.00 +77 49.00 42.00 13.00 212.00 452.00 10.00 +78 53.00 43.00 14.00 730.00 970.00 10.00 +79 61.00 52.00 3.00 322.00 562.00 10.00 +80 57.00 48.00 23.00 307.00 547.00 10.00 +81 56.00 37.00 6.00 728.00 968.00 10.00 +82 55.00 54.00 26.00 314.00 554.00 10.00 +83 15.00 47.00 16.00 106.00 346.00 10.00 +84 14.00 37.00 11.00 53.00 293.00 10.00 +85 11.00 31.00 7.00 354.00 594.00 10.00 +86 16.00 22.00 41.00 299.00 539.00 10.00 +87 4.00 18.00 35.00 307.00 547.00 10.00 +88 28.00 18.00 26.00 314.00 554.00 10.00 +89 26.00 52.00 9.00 214.00 454.00 10.00 +90 26.00 35.00 15.00 718.00 958.00 10.00 +91 31.00 67.00 3.00 320.00 560.00 10.00 +92 15.00 19.00 1.00 683.00 923.00 10.00 +93 22.00 22.00 2.00 18.00 258.00 10.00 +94 18.00 24.00 22.00 729.00 969.00 10.00 +95 26.00 27.00 27.00 350.00 590.00 10.00 +96 25.00 24.00 20.00 42.00 282.00 10.00 +97 22.00 27.00 11.00 529.00 769.00 10.00 +98 25.00 21.00 12.00 523.00 763.00 10.00 +99 19.00 21.00 10.00 125.00 365.00 10.00 +100 20.00 26.00 9.00 263.00 503.00 10.00 +101 18.00 18.00 17.00 725.00 965.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r206.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r206.dat new file mode 100644 index 000000000..3461fe76e --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r206.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 1000.00 0.00 +2 41.00 49.00 10.00 0.00 974.00 10.00 +3 35.00 17.00 7.00 0.00 972.00 10.00 +4 55.00 45.00 13.00 0.00 967.00 10.00 +5 55.00 20.00 19.00 620.00 860.00 10.00 +6 15.00 30.00 26.00 0.00 969.00 10.00 +7 25.00 30.00 3.00 345.00 585.00 10.00 +8 20.00 50.00 5.00 0.00 968.00 10.00 +9 10.00 43.00 9.00 323.00 563.00 10.00 +10 55.00 60.00 16.00 329.00 569.00 10.00 +11 30.00 60.00 16.00 485.00 725.00 10.00 +12 20.00 65.00 12.00 146.00 386.00 10.00 +13 50.00 35.00 19.00 0.00 975.00 10.00 +14 30.00 25.00 23.00 639.00 879.00 10.00 +15 15.00 10.00 20.00 32.00 272.00 10.00 +16 30.00 5.00 8.00 118.00 358.00 10.00 +17 10.00 20.00 19.00 203.00 443.00 10.00 +18 5.00 30.00 2.00 682.00 922.00 10.00 +19 20.00 40.00 12.00 286.00 526.00 10.00 +20 15.00 60.00 17.00 204.00 444.00 10.00 +21 45.00 65.00 9.00 504.00 744.00 10.00 +22 45.00 20.00 11.00 0.00 971.00 10.00 +23 45.00 10.00 18.00 332.00 572.00 10.00 +24 55.00 5.00 29.00 146.00 386.00 10.00 +25 65.00 35.00 3.00 656.00 896.00 10.00 +26 65.00 20.00 6.00 716.00 956.00 10.00 +27 45.00 30.00 17.00 0.00 978.00 10.00 +28 35.00 40.00 16.00 60.00 300.00 10.00 +29 41.00 37.00 16.00 65.00 305.00 10.00 +30 64.00 42.00 9.00 132.00 372.00 10.00 +31 40.00 60.00 21.00 187.00 427.00 10.00 +32 31.00 52.00 27.00 0.00 972.00 10.00 +33 35.00 69.00 23.00 599.00 839.00 10.00 +34 53.00 52.00 11.00 24.00 264.00 10.00 +35 65.00 55.00 14.00 0.00 953.00 10.00 +36 63.00 65.00 8.00 630.00 870.00 10.00 +37 2.00 60.00 5.00 41.00 281.00 10.00 +38 20.00 20.00 8.00 0.00 968.00 10.00 +39 5.00 5.00 16.00 234.00 474.00 10.00 +40 60.00 12.00 31.00 33.00 273.00 10.00 +41 40.00 25.00 9.00 279.00 519.00 10.00 +42 42.00 7.00 5.00 334.00 574.00 10.00 +43 24.00 12.00 5.00 25.00 265.00 10.00 +44 23.00 3.00 7.00 543.00 783.00 10.00 +45 11.00 14.00 18.00 167.00 407.00 10.00 +46 6.00 38.00 16.00 29.00 269.00 10.00 +47 2.00 48.00 1.00 452.00 692.00 10.00 +48 8.00 56.00 27.00 48.00 288.00 10.00 +49 13.00 52.00 36.00 0.00 962.00 10.00 +50 6.00 68.00 30.00 401.00 641.00 10.00 +51 47.00 47.00 13.00 0.00 973.00 10.00 +52 49.00 58.00 10.00 281.00 521.00 10.00 +53 27.00 43.00 9.00 0.00 978.00 10.00 +54 37.00 31.00 14.00 332.00 572.00 10.00 +55 57.00 29.00 18.00 568.00 808.00 10.00 +56 63.00 23.00 2.00 560.00 800.00 10.00 +57 53.00 12.00 6.00 519.00 759.00 10.00 +58 32.00 12.00 7.00 356.00 596.00 10.00 +59 36.00 26.00 18.00 740.00 980.00 10.00 +60 21.00 24.00 28.00 0.00 972.00 10.00 +61 17.00 34.00 3.00 672.00 912.00 10.00 +62 12.00 24.00 13.00 214.00 454.00 10.00 +63 24.00 58.00 19.00 113.00 353.00 10.00 +64 27.00 69.00 10.00 34.00 274.00 10.00 +65 15.00 77.00 9.00 154.00 394.00 10.00 +66 62.00 77.00 20.00 49.00 289.00 10.00 +67 49.00 73.00 25.00 523.00 763.00 10.00 +68 67.00 5.00 25.00 228.00 468.00 10.00 +69 56.00 39.00 36.00 575.00 815.00 10.00 +70 37.00 47.00 6.00 108.00 348.00 10.00 +71 37.00 56.00 5.00 728.00 968.00 10.00 +72 57.00 68.00 15.00 198.00 438.00 10.00 +73 47.00 16.00 25.00 0.00 967.00 10.00 +74 44.00 17.00 9.00 234.00 474.00 10.00 +75 46.00 13.00 8.00 622.00 862.00 10.00 +76 49.00 11.00 18.00 0.00 962.00 10.00 +77 49.00 42.00 13.00 212.00 452.00 10.00 +78 53.00 43.00 14.00 730.00 970.00 10.00 +79 61.00 52.00 3.00 322.00 562.00 10.00 +80 57.00 48.00 23.00 307.00 547.00 10.00 +81 56.00 37.00 6.00 728.00 968.00 10.00 +82 55.00 54.00 26.00 314.00 554.00 10.00 +83 15.00 47.00 16.00 0.00 966.00 10.00 +84 14.00 37.00 11.00 0.00 968.00 10.00 +85 11.00 31.00 7.00 354.00 594.00 10.00 +86 16.00 22.00 41.00 0.00 966.00 10.00 +87 4.00 18.00 35.00 307.00 547.00 10.00 +88 28.00 18.00 26.00 314.00 554.00 10.00 +89 26.00 52.00 9.00 214.00 454.00 10.00 +90 26.00 35.00 15.00 718.00 958.00 10.00 +91 31.00 67.00 3.00 320.00 560.00 10.00 +92 15.00 19.00 1.00 0.00 964.00 10.00 +93 22.00 22.00 2.00 18.00 258.00 10.00 +94 18.00 24.00 22.00 729.00 969.00 10.00 +95 26.00 27.00 27.00 0.00 977.00 10.00 +96 25.00 24.00 20.00 0.00 975.00 10.00 +97 22.00 27.00 11.00 0.00 974.00 10.00 +98 25.00 21.00 12.00 523.00 763.00 10.00 +99 19.00 21.00 10.00 0.00 968.00 10.00 +100 20.00 26.00 9.00 263.00 503.00 10.00 +101 18.00 18.00 17.00 725.00 965.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r207.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r207.dat new file mode 100644 index 000000000..4c67d3ab5 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r207.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 1000.00 0.00 +2 41.00 49.00 10.00 0.00 974.00 10.00 +3 35.00 17.00 7.00 0.00 972.00 10.00 +4 55.00 45.00 13.00 0.00 967.00 10.00 +5 55.00 20.00 19.00 620.00 860.00 10.00 +6 15.00 30.00 26.00 0.00 969.00 10.00 +7 25.00 30.00 3.00 345.00 585.00 10.00 +8 20.00 50.00 5.00 0.00 968.00 10.00 +9 10.00 43.00 9.00 323.00 563.00 10.00 +10 55.00 60.00 16.00 329.00 569.00 10.00 +11 30.00 60.00 16.00 485.00 725.00 10.00 +12 20.00 65.00 12.00 146.00 386.00 10.00 +13 50.00 35.00 19.00 0.00 975.00 10.00 +14 30.00 25.00 23.00 639.00 879.00 10.00 +15 15.00 10.00 20.00 0.00 957.00 10.00 +16 30.00 5.00 8.00 118.00 358.00 10.00 +17 10.00 20.00 19.00 0.00 960.00 10.00 +18 5.00 30.00 2.00 682.00 922.00 10.00 +19 20.00 40.00 12.00 0.00 974.00 10.00 +20 15.00 60.00 17.00 0.00 957.00 10.00 +21 45.00 65.00 9.00 0.00 958.00 10.00 +22 45.00 20.00 11.00 0.00 971.00 10.00 +23 45.00 10.00 18.00 332.00 572.00 10.00 +24 55.00 5.00 29.00 146.00 386.00 10.00 +25 65.00 35.00 3.00 0.00 960.00 10.00 +26 65.00 20.00 6.00 716.00 956.00 10.00 +27 45.00 30.00 17.00 0.00 978.00 10.00 +28 35.00 40.00 16.00 60.00 300.00 10.00 +29 41.00 37.00 16.00 0.00 983.00 10.00 +30 64.00 42.00 9.00 0.00 960.00 10.00 +31 40.00 60.00 21.00 187.00 427.00 10.00 +32 31.00 52.00 27.00 0.00 972.00 10.00 +33 35.00 69.00 23.00 0.00 956.00 10.00 +34 53.00 52.00 11.00 24.00 264.00 10.00 +35 65.00 55.00 14.00 0.00 953.00 10.00 +36 63.00 65.00 8.00 630.00 870.00 10.00 +37 2.00 60.00 5.00 41.00 281.00 10.00 +38 20.00 20.00 8.00 0.00 968.00 10.00 +39 5.00 5.00 16.00 234.00 474.00 10.00 +40 60.00 12.00 31.00 33.00 273.00 10.00 +41 40.00 25.00 9.00 279.00 519.00 10.00 +42 42.00 7.00 5.00 334.00 574.00 10.00 +43 24.00 12.00 5.00 25.00 265.00 10.00 +44 23.00 3.00 7.00 0.00 955.00 10.00 +45 11.00 14.00 18.00 167.00 407.00 10.00 +46 6.00 38.00 16.00 29.00 269.00 10.00 +47 2.00 48.00 1.00 0.00 954.00 10.00 +48 8.00 56.00 27.00 0.00 955.00 10.00 +49 13.00 52.00 36.00 0.00 962.00 10.00 +50 6.00 68.00 30.00 401.00 641.00 10.00 +51 47.00 47.00 13.00 0.00 973.00 10.00 +52 49.00 58.00 10.00 0.00 963.00 10.00 +53 27.00 43.00 9.00 0.00 978.00 10.00 +54 37.00 31.00 14.00 332.00 572.00 10.00 +55 57.00 29.00 18.00 0.00 967.00 10.00 +56 63.00 23.00 2.00 560.00 800.00 10.00 +57 53.00 12.00 6.00 519.00 759.00 10.00 +58 32.00 12.00 7.00 0.00 966.00 10.00 +59 36.00 26.00 18.00 740.00 980.00 10.00 +60 21.00 24.00 28.00 0.00 972.00 10.00 +61 17.00 34.00 3.00 0.00 971.00 10.00 +62 12.00 24.00 13.00 0.00 964.00 10.00 +63 24.00 58.00 19.00 113.00 353.00 10.00 +64 27.00 69.00 10.00 0.00 955.00 10.00 +65 15.00 77.00 9.00 154.00 394.00 10.00 +66 62.00 77.00 20.00 49.00 289.00 10.00 +67 49.00 73.00 25.00 523.00 763.00 10.00 +68 67.00 5.00 25.00 228.00 468.00 10.00 +69 56.00 39.00 36.00 575.00 815.00 10.00 +70 37.00 47.00 6.00 108.00 348.00 10.00 +71 37.00 56.00 5.00 728.00 968.00 10.00 +72 57.00 68.00 15.00 0.00 950.00 10.00 +73 47.00 16.00 25.00 0.00 967.00 10.00 +74 44.00 17.00 9.00 0.00 969.00 10.00 +75 46.00 13.00 8.00 622.00 862.00 10.00 +76 49.00 11.00 18.00 0.00 962.00 10.00 +77 49.00 42.00 13.00 212.00 452.00 10.00 +78 53.00 43.00 14.00 730.00 970.00 10.00 +79 61.00 52.00 3.00 322.00 562.00 10.00 +80 57.00 48.00 23.00 307.00 547.00 10.00 +81 56.00 37.00 6.00 728.00 968.00 10.00 +82 55.00 54.00 26.00 0.00 962.00 10.00 +83 15.00 47.00 16.00 0.00 966.00 10.00 +84 14.00 37.00 11.00 0.00 968.00 10.00 +85 11.00 31.00 7.00 354.00 594.00 10.00 +86 16.00 22.00 41.00 0.00 966.00 10.00 +87 4.00 18.00 35.00 0.00 954.00 10.00 +88 28.00 18.00 26.00 314.00 554.00 10.00 +89 26.00 52.00 9.00 214.00 454.00 10.00 +90 26.00 35.00 15.00 0.00 981.00 10.00 +91 31.00 67.00 3.00 0.00 957.00 10.00 +92 15.00 19.00 1.00 0.00 964.00 10.00 +93 22.00 22.00 2.00 18.00 258.00 10.00 +94 18.00 24.00 22.00 729.00 969.00 10.00 +95 26.00 27.00 27.00 0.00 977.00 10.00 +96 25.00 24.00 20.00 0.00 975.00 10.00 +97 22.00 27.00 11.00 0.00 974.00 10.00 +98 25.00 21.00 12.00 0.00 972.00 10.00 +99 19.00 21.00 10.00 0.00 968.00 10.00 +100 20.00 26.00 9.00 263.00 503.00 10.00 +101 18.00 18.00 17.00 725.00 965.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r208.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r208.dat new file mode 100644 index 000000000..d20ac2e92 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r208.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 1000.00 0.00 +2 41.00 49.00 10.00 0.00 974.00 10.00 +3 35.00 17.00 7.00 0.00 972.00 10.00 +4 55.00 45.00 13.00 0.00 967.00 10.00 +5 55.00 20.00 19.00 620.00 860.00 10.00 +6 15.00 30.00 26.00 0.00 969.00 10.00 +7 25.00 30.00 3.00 0.00 978.00 10.00 +8 20.00 50.00 5.00 0.00 968.00 10.00 +9 10.00 43.00 9.00 323.00 563.00 10.00 +10 55.00 60.00 16.00 329.00 569.00 10.00 +11 30.00 60.00 16.00 0.00 964.00 10.00 +12 20.00 65.00 12.00 146.00 386.00 10.00 +13 50.00 35.00 19.00 0.00 975.00 10.00 +14 30.00 25.00 23.00 639.00 879.00 10.00 +15 15.00 10.00 20.00 0.00 957.00 10.00 +16 30.00 5.00 8.00 118.00 358.00 10.00 +17 10.00 20.00 19.00 0.00 960.00 10.00 +18 5.00 30.00 2.00 0.00 959.00 10.00 +19 20.00 40.00 12.00 0.00 974.00 10.00 +20 15.00 60.00 17.00 0.00 957.00 10.00 +21 45.00 65.00 9.00 0.00 958.00 10.00 +22 45.00 20.00 11.00 0.00 971.00 10.00 +23 45.00 10.00 18.00 0.00 963.00 10.00 +24 55.00 5.00 29.00 146.00 386.00 10.00 +25 65.00 35.00 3.00 0.00 960.00 10.00 +26 65.00 20.00 6.00 716.00 956.00 10.00 +27 45.00 30.00 17.00 0.00 978.00 10.00 +28 35.00 40.00 16.00 0.00 985.00 10.00 +29 41.00 37.00 16.00 0.00 983.00 10.00 +30 64.00 42.00 9.00 0.00 960.00 10.00 +31 40.00 60.00 21.00 0.00 964.00 10.00 +32 31.00 52.00 27.00 0.00 972.00 10.00 +33 35.00 69.00 23.00 0.00 956.00 10.00 +34 53.00 52.00 11.00 0.00 965.00 10.00 +35 65.00 55.00 14.00 0.00 953.00 10.00 +36 63.00 65.00 8.00 0.00 948.00 10.00 +37 2.00 60.00 5.00 0.00 948.00 10.00 +38 20.00 20.00 8.00 0.00 968.00 10.00 +39 5.00 5.00 16.00 234.00 474.00 10.00 +40 60.00 12.00 31.00 0.00 956.00 10.00 +41 40.00 25.00 9.00 0.00 978.00 10.00 +42 42.00 7.00 5.00 0.00 961.00 10.00 +43 24.00 12.00 5.00 0.00 964.00 10.00 +44 23.00 3.00 7.00 0.00 955.00 10.00 +45 11.00 14.00 18.00 167.00 407.00 10.00 +46 6.00 38.00 16.00 0.00 960.00 10.00 +47 2.00 48.00 1.00 0.00 954.00 10.00 +48 8.00 56.00 27.00 0.00 955.00 10.00 +49 13.00 52.00 36.00 0.00 962.00 10.00 +50 6.00 68.00 30.00 0.00 946.00 10.00 +51 47.00 47.00 13.00 0.00 973.00 10.00 +52 49.00 58.00 10.00 0.00 963.00 10.00 +53 27.00 43.00 9.00 0.00 978.00 10.00 +54 37.00 31.00 14.00 332.00 572.00 10.00 +55 57.00 29.00 18.00 0.00 967.00 10.00 +56 63.00 23.00 2.00 560.00 800.00 10.00 +57 53.00 12.00 6.00 0.00 960.00 10.00 +58 32.00 12.00 7.00 0.00 966.00 10.00 +59 36.00 26.00 18.00 740.00 980.00 10.00 +60 21.00 24.00 28.00 0.00 972.00 10.00 +61 17.00 34.00 3.00 0.00 971.00 10.00 +62 12.00 24.00 13.00 0.00 964.00 10.00 +63 24.00 58.00 19.00 113.00 353.00 10.00 +64 27.00 69.00 10.00 0.00 955.00 10.00 +65 15.00 77.00 9.00 0.00 943.00 10.00 +66 62.00 77.00 20.00 0.00 940.00 10.00 +67 49.00 73.00 25.00 0.00 949.00 10.00 +68 67.00 5.00 25.00 228.00 468.00 10.00 +69 56.00 39.00 36.00 0.00 968.00 10.00 +70 37.00 47.00 6.00 108.00 348.00 10.00 +71 37.00 56.00 5.00 0.00 968.00 10.00 +72 57.00 68.00 15.00 0.00 950.00 10.00 +73 47.00 16.00 25.00 0.00 967.00 10.00 +74 44.00 17.00 9.00 0.00 969.00 10.00 +75 46.00 13.00 8.00 622.00 862.00 10.00 +76 49.00 11.00 18.00 0.00 962.00 10.00 +77 49.00 42.00 13.00 212.00 452.00 10.00 +78 53.00 43.00 14.00 730.00 970.00 10.00 +79 61.00 52.00 3.00 0.00 958.00 10.00 +80 57.00 48.00 23.00 307.00 547.00 10.00 +81 56.00 37.00 6.00 0.00 968.00 10.00 +82 55.00 54.00 26.00 0.00 962.00 10.00 +83 15.00 47.00 16.00 0.00 966.00 10.00 +84 14.00 37.00 11.00 0.00 968.00 10.00 +85 11.00 31.00 7.00 354.00 594.00 10.00 +86 16.00 22.00 41.00 0.00 966.00 10.00 +87 4.00 18.00 35.00 0.00 954.00 10.00 +88 28.00 18.00 26.00 314.00 554.00 10.00 +89 26.00 52.00 9.00 0.00 970.00 10.00 +90 26.00 35.00 15.00 0.00 981.00 10.00 +91 31.00 67.00 3.00 0.00 957.00 10.00 +92 15.00 19.00 1.00 0.00 964.00 10.00 +93 22.00 22.00 2.00 18.00 258.00 10.00 +94 18.00 24.00 22.00 0.00 969.00 10.00 +95 26.00 27.00 27.00 0.00 977.00 10.00 +96 25.00 24.00 20.00 0.00 975.00 10.00 +97 22.00 27.00 11.00 0.00 974.00 10.00 +98 25.00 21.00 12.00 0.00 972.00 10.00 +99 19.00 21.00 10.00 0.00 968.00 10.00 +100 20.00 26.00 9.00 263.00 503.00 10.00 +101 18.00 18.00 17.00 725.00 965.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r209.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r209.dat new file mode 100644 index 000000000..cb5293861 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r209.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 1000.00 0.00 +2 41.00 49.00 10.00 636.00 919.00 10.00 +3 35.00 17.00 7.00 74.00 351.00 10.00 +4 55.00 45.00 13.00 498.00 613.00 10.00 +5 55.00 20.00 19.00 470.00 965.00 10.00 +6 15.00 30.00 26.00 20.00 370.00 10.00 +7 25.00 30.00 3.00 266.00 663.00 10.00 +8 20.00 50.00 5.00 292.00 449.00 10.00 +9 10.00 43.00 9.00 288.00 597.00 10.00 +10 55.00 60.00 16.00 254.00 643.00 10.00 +11 30.00 60.00 16.00 496.00 713.00 10.00 +12 20.00 65.00 12.00 33.00 510.00 10.00 +13 50.00 35.00 19.00 170.00 403.00 10.00 +14 30.00 25.00 23.00 426.00 978.00 10.00 +15 15.00 10.00 20.00 32.00 454.00 10.00 +16 30.00 5.00 8.00 30.00 529.00 10.00 +17 10.00 20.00 19.00 222.00 423.00 10.00 +18 5.00 30.00 2.00 409.00 959.00 10.00 +19 20.00 40.00 12.00 349.00 462.00 10.00 +20 15.00 60.00 17.00 215.00 432.00 10.00 +21 45.00 65.00 9.00 538.00 709.00 10.00 +22 45.00 20.00 11.00 156.00 389.00 10.00 +23 45.00 10.00 18.00 280.00 623.00 10.00 +24 55.00 5.00 29.00 36.00 513.00 10.00 +25 65.00 35.00 3.00 633.00 918.00 10.00 +26 65.00 20.00 6.00 400.00 956.00 10.00 +27 45.00 30.00 17.00 548.00 707.00 10.00 +28 35.00 40.00 16.00 5.00 612.00 10.00 +29 41.00 37.00 16.00 44.00 325.00 10.00 +30 64.00 42.00 9.00 129.00 374.00 10.00 +31 40.00 60.00 21.00 115.00 498.00 10.00 +32 31.00 52.00 27.00 91.00 336.00 10.00 +33 35.00 69.00 23.00 602.00 835.00 10.00 +34 53.00 52.00 11.00 24.00 646.00 10.00 +35 65.00 55.00 14.00 487.00 656.00 10.00 +36 63.00 65.00 8.00 439.00 948.00 10.00 +37 2.00 60.00 5.00 41.00 710.00 10.00 +38 20.00 20.00 8.00 563.00 736.00 10.00 +39 5.00 5.00 16.00 147.00 560.00 10.00 +40 60.00 12.00 31.00 33.00 797.00 10.00 +41 40.00 25.00 9.00 243.00 554.00 10.00 +42 42.00 7.00 5.00 225.00 682.00 10.00 +43 24.00 12.00 5.00 25.00 616.00 10.00 +44 23.00 3.00 7.00 578.00 747.00 10.00 +45 11.00 14.00 18.00 72.00 501.00 10.00 +46 6.00 38.00 16.00 29.00 669.00 10.00 +47 2.00 48.00 1.00 458.00 685.00 10.00 +48 8.00 56.00 27.00 34.00 362.00 10.00 +49 13.00 52.00 36.00 694.00 962.00 10.00 +50 6.00 68.00 30.00 444.00 597.00 10.00 +51 47.00 47.00 13.00 499.00 690.00 10.00 +52 49.00 58.00 10.00 296.00 505.00 10.00 +53 27.00 43.00 9.00 111.00 362.00 10.00 +54 37.00 31.00 14.00 301.00 602.00 10.00 +55 57.00 29.00 18.00 595.00 780.00 10.00 +56 63.00 23.00 2.00 442.00 917.00 10.00 +57 53.00 12.00 6.00 426.00 851.00 10.00 +58 32.00 12.00 7.00 366.00 585.00 10.00 +59 36.00 26.00 18.00 458.00 980.00 10.00 +60 21.00 24.00 28.00 17.00 441.00 10.00 +61 17.00 34.00 3.00 651.00 932.00 10.00 +62 12.00 24.00 13.00 246.00 421.00 10.00 +63 24.00 58.00 19.00 25.00 583.00 10.00 +64 27.00 69.00 10.00 34.00 348.00 10.00 +65 15.00 77.00 9.00 46.00 523.00 10.00 +66 62.00 77.00 20.00 49.00 608.00 10.00 +67 49.00 73.00 25.00 440.00 845.00 10.00 +68 67.00 5.00 25.00 132.00 563.00 10.00 +69 56.00 39.00 36.00 464.00 925.00 10.00 +70 37.00 47.00 6.00 12.00 535.00 10.00 +71 37.00 56.00 5.00 249.00 968.00 10.00 +72 57.00 68.00 15.00 218.00 417.00 10.00 +73 47.00 16.00 25.00 22.00 377.00 10.00 +74 44.00 17.00 9.00 263.00 444.00 10.00 +75 46.00 13.00 8.00 479.00 965.00 10.00 +76 49.00 11.00 18.00 182.00 399.00 10.00 +77 49.00 42.00 13.00 166.00 497.00 10.00 +78 53.00 43.00 14.00 430.00 970.00 10.00 +79 61.00 52.00 3.00 212.00 671.00 10.00 +80 57.00 48.00 23.00 273.00 580.00 10.00 +81 56.00 37.00 6.00 452.00 968.00 10.00 +82 55.00 54.00 26.00 388.00 479.00 10.00 +83 15.00 47.00 16.00 99.00 352.00 10.00 +84 14.00 37.00 11.00 21.00 328.00 10.00 +85 11.00 31.00 7.00 323.00 624.00 10.00 +86 16.00 22.00 41.00 333.00 504.00 10.00 +87 4.00 18.00 35.00 350.00 503.00 10.00 +88 28.00 18.00 26.00 380.00 487.00 10.00 +89 26.00 52.00 9.00 114.00 553.00 10.00 +90 26.00 35.00 15.00 649.00 981.00 10.00 +91 31.00 67.00 3.00 345.00 534.00 10.00 +92 15.00 19.00 1.00 675.00 930.00 10.00 +93 22.00 22.00 2.00 18.00 673.00 10.00 +94 18.00 24.00 22.00 339.00 969.00 10.00 +95 26.00 27.00 27.00 403.00 536.00 10.00 +96 25.00 24.00 20.00 22.00 301.00 10.00 +97 22.00 27.00 11.00 565.00 732.00 10.00 +98 25.00 21.00 12.00 582.00 703.00 10.00 +99 19.00 21.00 10.00 122.00 367.00 10.00 +100 20.00 26.00 9.00 185.00 580.00 10.00 +101 18.00 18.00 17.00 297.00 965.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r210.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r210.dat new file mode 100644 index 000000000..f8084882f --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r210.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 1000.00 0.00 +2 41.00 49.00 10.00 190.00 974.00 10.00 +3 35.00 17.00 7.00 18.00 792.00 10.00 +4 55.00 45.00 13.00 289.00 822.00 10.00 +5 55.00 20.00 19.00 679.00 800.00 10.00 +6 15.00 30.00 26.00 20.00 906.00 10.00 +7 25.00 30.00 3.00 355.00 574.00 10.00 +8 20.00 50.00 5.00 72.00 669.00 10.00 +9 10.00 43.00 9.00 393.00 492.00 10.00 +10 55.00 60.00 16.00 394.00 503.00 10.00 +11 30.00 60.00 16.00 517.00 692.00 10.00 +12 20.00 65.00 12.00 206.00 325.00 10.00 +13 50.00 35.00 19.00 15.00 725.00 10.00 +14 30.00 25.00 23.00 694.00 823.00 10.00 +15 15.00 10.00 20.00 32.00 694.00 10.00 +16 30.00 5.00 8.00 176.00 299.00 10.00 +17 10.00 20.00 19.00 102.00 543.00 10.00 +18 5.00 30.00 2.00 673.00 930.00 10.00 +19 20.00 40.00 12.00 229.00 582.00 10.00 +20 15.00 60.00 17.00 95.00 552.00 10.00 +21 45.00 65.00 9.00 418.00 829.00 10.00 +22 45.00 20.00 11.00 18.00 727.00 10.00 +23 45.00 10.00 18.00 349.00 554.00 10.00 +24 55.00 5.00 29.00 206.00 325.00 10.00 +25 65.00 35.00 3.00 435.00 960.00 10.00 +26 65.00 20.00 6.00 826.00 956.00 10.00 +27 45.00 30.00 17.00 328.00 927.00 10.00 +28 35.00 40.00 16.00 44.00 315.00 10.00 +29 41.00 37.00 16.00 6.00 526.00 10.00 +30 64.00 42.00 9.00 29.00 513.00 10.00 +31 40.00 60.00 21.00 199.00 414.00 10.00 +32 31.00 52.00 27.00 17.00 744.00 10.00 +33 35.00 69.00 23.00 482.00 955.00 10.00 +34 53.00 52.00 11.00 24.00 299.00 10.00 +35 65.00 55.00 14.00 265.00 878.00 10.00 +36 63.00 65.00 8.00 626.00 873.00 10.00 +37 2.00 60.00 5.00 41.00 328.00 10.00 +38 20.00 20.00 8.00 339.00 960.00 10.00 +39 5.00 5.00 16.00 298.00 409.00 10.00 +40 60.00 12.00 31.00 33.00 344.00 10.00 +41 40.00 25.00 9.00 300.00 497.00 10.00 +42 42.00 7.00 5.00 336.00 571.00 10.00 +43 24.00 12.00 5.00 25.00 292.00 10.00 +44 23.00 3.00 7.00 458.00 867.00 10.00 +45 11.00 14.00 18.00 230.00 343.00 10.00 +46 6.00 38.00 16.00 29.00 309.00 10.00 +47 2.00 48.00 1.00 338.00 805.00 10.00 +48 8.00 56.00 27.00 34.00 602.00 10.00 +49 13.00 52.00 36.00 200.00 962.00 10.00 +50 6.00 68.00 30.00 441.00 600.00 10.00 +51 47.00 47.00 13.00 272.00 917.00 10.00 +52 49.00 58.00 10.00 176.00 625.00 10.00 +53 27.00 43.00 9.00 11.00 748.00 10.00 +54 37.00 31.00 14.00 403.00 500.00 10.00 +55 57.00 29.00 18.00 475.00 900.00 10.00 +56 63.00 23.00 2.00 620.00 739.00 10.00 +57 53.00 12.00 6.00 525.00 752.00 10.00 +58 32.00 12.00 7.00 246.00 705.00 10.00 +59 36.00 26.00 18.00 854.00 980.00 10.00 +60 21.00 24.00 28.00 17.00 972.00 10.00 +61 17.00 34.00 3.00 449.00 971.00 10.00 +62 12.00 24.00 13.00 126.00 541.00 10.00 +63 24.00 58.00 19.00 168.00 297.00 10.00 +64 27.00 69.00 10.00 34.00 588.00 10.00 +65 15.00 77.00 9.00 154.00 393.00 10.00 +66 62.00 77.00 20.00 49.00 308.00 10.00 +67 49.00 73.00 25.00 532.00 753.00 10.00 +68 67.00 5.00 25.00 291.00 404.00 10.00 +69 56.00 39.00 36.00 577.00 812.00 10.00 +70 37.00 47.00 6.00 165.00 290.00 10.00 +71 37.00 56.00 5.00 668.00 968.00 10.00 +72 57.00 68.00 15.00 98.00 537.00 10.00 +73 47.00 16.00 25.00 22.00 915.00 10.00 +74 44.00 17.00 9.00 143.00 564.00 10.00 +75 46.00 13.00 8.00 681.00 802.00 10.00 +76 49.00 11.00 18.00 27.00 711.00 10.00 +77 49.00 42.00 13.00 281.00 382.00 10.00 +78 53.00 43.00 14.00 821.00 948.00 10.00 +79 61.00 52.00 3.00 324.00 559.00 10.00 +80 57.00 48.00 23.00 377.00 476.00 10.00 +81 56.00 37.00 6.00 719.00 968.00 10.00 +82 55.00 54.00 26.00 268.00 599.00 10.00 +83 15.00 47.00 16.00 23.00 761.00 10.00 +84 14.00 37.00 11.00 21.00 842.00 10.00 +85 11.00 31.00 7.00 425.00 522.00 10.00 +86 16.00 22.00 41.00 110.00 727.00 10.00 +87 4.00 18.00 35.00 230.00 623.00 10.00 +88 28.00 18.00 26.00 397.00 470.00 10.00 +89 26.00 52.00 9.00 219.00 448.00 10.00 +90 26.00 35.00 15.00 409.00 981.00 10.00 +91 31.00 67.00 3.00 225.00 654.00 10.00 +92 15.00 19.00 1.00 222.00 964.00 10.00 +93 22.00 22.00 2.00 18.00 159.00 10.00 +94 18.00 24.00 22.00 691.00 969.00 10.00 +95 26.00 27.00 27.00 190.00 749.00 10.00 +96 25.00 24.00 20.00 14.00 793.00 10.00 +97 22.00 27.00 11.00 344.00 953.00 10.00 +98 25.00 21.00 12.00 462.00 823.00 10.00 +99 19.00 21.00 10.00 21.00 748.00 10.00 +100 20.00 26.00 9.00 328.00 437.00 10.00 +101 18.00 18.00 17.00 821.00 965.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r211.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r211.dat new file mode 100644 index 000000000..eea26280e --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/r211.dat @@ -0,0 +1,101 @@ +1 35.00 35.00 0.00 0.00 1000.00 0.00 +2 41.00 49.00 10.00 451.00 974.00 10.00 +3 35.00 17.00 7.00 18.00 534.00 10.00 +4 55.00 45.00 13.00 378.00 733.00 10.00 +5 55.00 20.00 19.00 477.00 965.00 10.00 +6 15.00 30.00 26.00 20.00 610.00 10.00 +7 25.00 30.00 3.00 245.00 684.00 10.00 +8 20.00 50.00 5.00 172.00 569.00 10.00 +9 10.00 43.00 9.00 245.00 640.00 10.00 +10 55.00 60.00 16.00 231.00 666.00 10.00 +11 30.00 60.00 16.00 430.00 779.00 10.00 +12 20.00 65.00 12.00 33.00 511.00 10.00 +13 50.00 35.00 19.00 50.00 523.00 10.00 +14 30.00 25.00 23.00 462.00 978.00 10.00 +15 15.00 10.00 20.00 32.00 694.00 10.00 +16 30.00 5.00 8.00 30.00 519.00 10.00 +17 10.00 20.00 19.00 102.00 543.00 10.00 +18 5.00 30.00 2.00 444.00 959.00 10.00 +19 20.00 40.00 12.00 229.00 582.00 10.00 +20 15.00 60.00 17.00 95.00 552.00 10.00 +21 45.00 65.00 9.00 418.00 829.00 10.00 +22 45.00 20.00 11.00 36.00 509.00 10.00 +23 45.00 10.00 18.00 246.00 657.00 10.00 +24 55.00 5.00 29.00 36.00 514.00 10.00 +25 65.00 35.00 3.00 435.00 960.00 10.00 +26 65.00 20.00 6.00 438.00 956.00 10.00 +27 45.00 30.00 17.00 428.00 827.00 10.00 +28 35.00 40.00 16.00 5.00 548.00 10.00 +29 41.00 37.00 16.00 6.00 526.00 10.00 +30 64.00 42.00 9.00 29.00 513.00 10.00 +31 40.00 60.00 21.00 91.00 522.00 10.00 +32 31.00 52.00 27.00 17.00 501.00 10.00 +33 35.00 69.00 23.00 482.00 955.00 10.00 +34 53.00 52.00 11.00 24.00 575.00 10.00 +35 65.00 55.00 14.00 367.00 776.00 10.00 +36 63.00 65.00 8.00 453.00 948.00 10.00 +37 2.00 60.00 5.00 41.00 615.00 10.00 +38 20.00 20.00 8.00 443.00 856.00 10.00 +39 5.00 5.00 16.00 130.00 577.00 10.00 +40 60.00 12.00 31.00 33.00 655.00 10.00 +41 40.00 25.00 9.00 201.00 596.00 10.00 +42 42.00 7.00 5.00 219.00 688.00 10.00 +43 24.00 12.00 5.00 25.00 560.00 10.00 +44 23.00 3.00 7.00 458.00 867.00 10.00 +45 11.00 14.00 18.00 59.00 514.00 10.00 +46 6.00 38.00 16.00 29.00 589.00 10.00 +47 2.00 48.00 1.00 338.00 805.00 10.00 +48 8.00 56.00 27.00 34.00 602.00 10.00 +49 13.00 52.00 36.00 454.00 962.00 10.00 +50 6.00 68.00 30.00 362.00 679.00 10.00 +51 47.00 47.00 13.00 379.00 810.00 10.00 +52 49.00 58.00 10.00 176.00 625.00 10.00 +53 27.00 43.00 9.00 11.00 502.00 10.00 +54 37.00 31.00 14.00 256.00 647.00 10.00 +55 57.00 29.00 18.00 475.00 900.00 10.00 +56 63.00 23.00 2.00 441.00 918.00 10.00 +57 53.00 12.00 6.00 412.00 865.00 10.00 +58 32.00 12.00 7.00 246.00 705.00 10.00 +59 36.00 26.00 18.00 479.00 980.00 10.00 +60 21.00 24.00 28.00 17.00 681.00 10.00 +61 17.00 34.00 3.00 449.00 971.00 10.00 +62 12.00 24.00 13.00 126.00 541.00 10.00 +63 24.00 58.00 19.00 25.00 544.00 10.00 +64 27.00 69.00 10.00 34.00 588.00 10.00 +65 15.00 77.00 9.00 46.00 524.00 10.00 +66 62.00 77.00 20.00 49.00 568.00 10.00 +67 49.00 73.00 25.00 421.00 864.00 10.00 +68 67.00 5.00 25.00 120.00 575.00 10.00 +69 56.00 39.00 36.00 459.00 930.00 10.00 +70 37.00 47.00 6.00 12.00 513.00 10.00 +71 37.00 56.00 5.00 368.00 968.00 10.00 +72 57.00 68.00 15.00 98.00 537.00 10.00 +73 47.00 16.00 25.00 22.00 617.00 10.00 +74 44.00 17.00 9.00 143.00 564.00 10.00 +75 46.00 13.00 8.00 482.00 965.00 10.00 +76 49.00 11.00 18.00 62.00 519.00 10.00 +77 49.00 42.00 13.00 129.00 534.00 10.00 +78 53.00 43.00 14.00 460.00 970.00 10.00 +79 61.00 52.00 3.00 207.00 676.00 10.00 +80 57.00 48.00 23.00 230.00 623.00 10.00 +81 56.00 37.00 6.00 470.00 968.00 10.00 +82 55.00 54.00 26.00 268.00 599.00 10.00 +83 15.00 47.00 16.00 23.00 515.00 10.00 +84 14.00 37.00 11.00 21.00 568.00 10.00 +85 11.00 31.00 7.00 278.00 669.00 10.00 +86 16.00 22.00 41.00 213.00 624.00 10.00 +87 4.00 18.00 35.00 230.00 623.00 10.00 +88 28.00 18.00 26.00 287.00 580.00 10.00 +89 26.00 52.00 9.00 104.00 563.00 10.00 +90 26.00 35.00 15.00 409.00 981.00 10.00 +91 31.00 67.00 3.00 225.00 654.00 10.00 +92 15.00 19.00 1.00 469.00 964.00 10.00 +93 22.00 22.00 2.00 18.00 585.00 10.00 +94 18.00 24.00 22.00 414.00 969.00 10.00 +95 26.00 27.00 27.00 283.00 656.00 10.00 +96 25.00 24.00 20.00 14.00 533.00 10.00 +97 22.00 27.00 11.00 445.00 852.00 10.00 +98 25.00 21.00 12.00 462.00 823.00 10.00 +99 19.00 21.00 10.00 21.00 506.00 10.00 +100 20.00 26.00 9.00 164.00 601.00 10.00 +101 18.00 18.00 17.00 391.00 965.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc101.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc101.dat new file mode 100644 index 000000000..972235e15 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc101.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 240.00 0.00 +2 25.00 85.00 20.00 145.00 175.00 10.00 +3 22.00 75.00 30.00 50.00 80.00 10.00 +4 22.00 85.00 10.00 109.00 139.00 10.00 +5 20.00 80.00 40.00 141.00 171.00 10.00 +6 20.00 85.00 20.00 41.00 71.00 10.00 +7 18.00 75.00 20.00 95.00 125.00 10.00 +8 15.00 75.00 20.00 79.00 109.00 10.00 +9 15.00 80.00 10.00 91.00 121.00 10.00 +10 10.00 35.00 20.00 91.00 121.00 10.00 +11 10.00 40.00 30.00 119.00 149.00 10.00 +12 8.00 40.00 40.00 59.00 89.00 10.00 +13 8.00 45.00 20.00 64.00 94.00 10.00 +14 5.00 35.00 10.00 142.00 172.00 10.00 +15 5.00 45.00 10.00 35.00 65.00 10.00 +16 2.00 40.00 20.00 58.00 88.00 10.00 +17 0.00 40.00 20.00 72.00 102.00 10.00 +18 0.00 45.00 20.00 149.00 179.00 10.00 +19 44.00 5.00 20.00 87.00 117.00 10.00 +20 42.00 10.00 40.00 72.00 102.00 10.00 +21 42.00 15.00 10.00 122.00 152.00 10.00 +22 40.00 5.00 10.00 67.00 97.00 10.00 +23 40.00 15.00 40.00 92.00 122.00 10.00 +24 38.00 5.00 30.00 65.00 95.00 10.00 +25 38.00 15.00 10.00 148.00 178.00 10.00 +26 35.00 5.00 20.00 154.00 184.00 10.00 +27 95.00 30.00 30.00 115.00 145.00 10.00 +28 95.00 35.00 20.00 62.00 92.00 10.00 +29 92.00 30.00 10.00 62.00 92.00 10.00 +30 90.00 35.00 10.00 67.00 97.00 10.00 +31 88.00 30.00 10.00 74.00 104.00 10.00 +32 88.00 35.00 20.00 61.00 91.00 10.00 +33 87.00 30.00 10.00 131.00 161.00 10.00 +34 85.00 25.00 10.00 51.00 81.00 10.00 +35 85.00 35.00 30.00 111.00 141.00 10.00 +36 67.00 85.00 20.00 139.00 169.00 10.00 +37 65.00 85.00 40.00 43.00 73.00 10.00 +38 65.00 82.00 10.00 124.00 154.00 10.00 +39 62.00 80.00 30.00 75.00 105.00 10.00 +40 60.00 80.00 10.00 37.00 67.00 10.00 +41 60.00 85.00 30.00 85.00 115.00 10.00 +42 58.00 75.00 20.00 92.00 122.00 10.00 +43 55.00 80.00 10.00 33.00 63.00 10.00 +44 55.00 85.00 20.00 128.00 158.00 10.00 +45 55.00 82.00 10.00 64.00 94.00 10.00 +46 20.00 82.00 10.00 37.00 67.00 10.00 +47 18.00 80.00 10.00 113.00 143.00 10.00 +48 2.00 45.00 10.00 45.00 75.00 10.00 +49 42.00 5.00 10.00 151.00 181.00 10.00 +50 42.00 12.00 10.00 104.00 134.00 10.00 +51 72.00 35.00 30.00 116.00 146.00 10.00 +52 55.00 20.00 19.00 83.00 113.00 10.00 +53 25.00 30.00 3.00 52.00 82.00 10.00 +54 20.00 50.00 5.00 91.00 121.00 10.00 +55 55.00 60.00 16.00 139.00 169.00 10.00 +56 30.00 60.00 16.00 140.00 170.00 10.00 +57 50.00 35.00 19.00 130.00 160.00 10.00 +58 30.00 25.00 23.00 96.00 126.00 10.00 +59 15.00 10.00 20.00 152.00 182.00 10.00 +60 10.00 20.00 19.00 42.00 72.00 10.00 +61 15.00 60.00 17.00 155.00 185.00 10.00 +62 45.00 65.00 9.00 66.00 96.00 10.00 +63 65.00 35.00 3.00 52.00 82.00 10.00 +64 65.00 20.00 6.00 39.00 69.00 10.00 +65 45.00 30.00 17.00 53.00 83.00 10.00 +66 35.00 40.00 16.00 11.00 41.00 10.00 +67 41.00 37.00 16.00 133.00 163.00 10.00 +68 64.00 42.00 9.00 70.00 100.00 10.00 +69 40.00 60.00 21.00 144.00 174.00 10.00 +70 31.00 52.00 27.00 41.00 71.00 10.00 +71 35.00 69.00 23.00 180.00 210.00 10.00 +72 65.00 55.00 14.00 65.00 95.00 10.00 +73 63.00 65.00 8.00 30.00 60.00 10.00 +74 2.00 60.00 5.00 77.00 107.00 10.00 +75 20.00 20.00 8.00 141.00 171.00 10.00 +76 5.00 5.00 16.00 74.00 104.00 10.00 +77 60.00 12.00 31.00 75.00 105.00 10.00 +78 23.00 3.00 7.00 150.00 180.00 10.00 +79 8.00 56.00 27.00 90.00 120.00 10.00 +80 6.00 68.00 30.00 89.00 119.00 10.00 +81 47.00 47.00 13.00 192.00 222.00 10.00 +82 49.00 58.00 10.00 86.00 116.00 10.00 +83 27.00 43.00 9.00 42.00 72.00 10.00 +84 37.00 31.00 14.00 35.00 65.00 10.00 +85 57.00 29.00 18.00 96.00 126.00 10.00 +86 63.00 23.00 2.00 87.00 117.00 10.00 +87 21.00 24.00 28.00 87.00 117.00 10.00 +88 12.00 24.00 13.00 90.00 120.00 10.00 +89 24.00 58.00 19.00 67.00 97.00 10.00 +90 67.00 5.00 25.00 144.00 174.00 10.00 +91 37.00 47.00 6.00 86.00 116.00 10.00 +92 49.00 42.00 13.00 167.00 197.00 10.00 +93 53.00 43.00 14.00 14.00 44.00 10.00 +94 61.00 52.00 3.00 178.00 208.00 10.00 +95 57.00 48.00 23.00 95.00 125.00 10.00 +96 56.00 37.00 6.00 34.00 64.00 10.00 +97 55.00 54.00 26.00 132.00 162.00 10.00 +98 4.00 18.00 35.00 120.00 150.00 10.00 +99 26.00 52.00 9.00 46.00 76.00 10.00 +100 26.00 35.00 15.00 77.00 107.00 10.00 +101 31.00 67.00 3.00 180.00 210.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc102.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc102.dat new file mode 100644 index 000000000..ffc011ae4 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc102.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 240.00 0.00 +2 25.00 85.00 20.00 0.00 191.00 10.00 +3 22.00 75.00 30.00 0.00 199.00 10.00 +4 22.00 85.00 10.00 0.00 190.00 10.00 +5 20.00 80.00 40.00 141.00 171.00 10.00 +6 20.00 85.00 20.00 0.00 189.00 10.00 +7 18.00 75.00 20.00 95.00 125.00 10.00 +8 15.00 75.00 20.00 0.00 194.00 10.00 +9 15.00 80.00 10.00 91.00 121.00 10.00 +10 10.00 35.00 20.00 91.00 121.00 10.00 +11 10.00 40.00 30.00 119.00 149.00 10.00 +12 8.00 40.00 40.00 59.00 89.00 10.00 +13 8.00 45.00 20.00 0.00 197.00 10.00 +14 5.00 35.00 10.00 142.00 172.00 10.00 +15 5.00 45.00 10.00 35.00 65.00 10.00 +16 2.00 40.00 20.00 58.00 88.00 10.00 +17 0.00 40.00 20.00 72.00 102.00 10.00 +18 0.00 45.00 20.00 149.00 179.00 10.00 +19 44.00 5.00 20.00 87.00 117.00 10.00 +20 42.00 10.00 40.00 72.00 102.00 10.00 +21 42.00 15.00 10.00 122.00 152.00 10.00 +22 40.00 5.00 10.00 0.00 185.00 10.00 +23 40.00 15.00 40.00 92.00 122.00 10.00 +24 38.00 5.00 30.00 65.00 95.00 10.00 +25 38.00 15.00 10.00 148.00 178.00 10.00 +26 35.00 5.00 20.00 154.00 184.00 10.00 +27 95.00 30.00 30.00 0.00 171.00 10.00 +28 95.00 35.00 20.00 62.00 92.00 10.00 +29 92.00 30.00 10.00 62.00 92.00 10.00 +30 90.00 35.00 10.00 67.00 97.00 10.00 +31 88.00 30.00 10.00 74.00 104.00 10.00 +32 88.00 35.00 20.00 0.00 179.00 10.00 +33 87.00 30.00 10.00 131.00 161.00 10.00 +34 85.00 25.00 10.00 51.00 81.00 10.00 +35 85.00 35.00 30.00 0.00 182.00 10.00 +36 67.00 85.00 20.00 139.00 169.00 10.00 +37 65.00 85.00 40.00 43.00 73.00 10.00 +38 65.00 82.00 10.00 0.00 189.00 10.00 +39 62.00 80.00 30.00 75.00 105.00 10.00 +40 60.00 80.00 10.00 37.00 67.00 10.00 +41 60.00 85.00 30.00 85.00 115.00 10.00 +42 58.00 75.00 20.00 92.00 122.00 10.00 +43 55.00 80.00 10.00 33.00 63.00 10.00 +44 55.00 85.00 20.00 128.00 158.00 10.00 +45 55.00 82.00 10.00 64.00 94.00 10.00 +46 20.00 82.00 10.00 37.00 67.00 10.00 +47 18.00 80.00 10.00 113.00 143.00 10.00 +48 2.00 45.00 10.00 45.00 75.00 10.00 +49 42.00 5.00 10.00 0.00 184.00 10.00 +50 42.00 12.00 10.00 104.00 134.00 10.00 +51 72.00 35.00 30.00 0.00 194.00 10.00 +52 55.00 20.00 19.00 83.00 113.00 10.00 +53 25.00 30.00 3.00 0.00 205.00 10.00 +54 20.00 50.00 5.00 91.00 121.00 10.00 +55 55.00 60.00 16.00 139.00 169.00 10.00 +56 30.00 60.00 16.00 140.00 170.00 10.00 +57 50.00 35.00 19.00 130.00 160.00 10.00 +58 30.00 25.00 23.00 96.00 126.00 10.00 +59 15.00 10.00 20.00 152.00 182.00 10.00 +60 10.00 20.00 19.00 0.00 187.00 10.00 +61 15.00 60.00 17.00 155.00 185.00 10.00 +62 45.00 65.00 9.00 66.00 96.00 10.00 +63 65.00 35.00 3.00 52.00 82.00 10.00 +64 65.00 20.00 6.00 39.00 69.00 10.00 +65 45.00 30.00 17.00 53.00 83.00 10.00 +66 35.00 40.00 16.00 11.00 41.00 10.00 +67 41.00 37.00 16.00 133.00 163.00 10.00 +68 64.00 42.00 9.00 70.00 100.00 10.00 +69 40.00 60.00 21.00 144.00 174.00 10.00 +70 31.00 52.00 27.00 41.00 71.00 10.00 +71 35.00 69.00 23.00 180.00 210.00 10.00 +72 65.00 55.00 14.00 65.00 95.00 10.00 +73 63.00 65.00 8.00 0.00 202.00 10.00 +74 2.00 60.00 5.00 77.00 107.00 10.00 +75 20.00 20.00 8.00 141.00 171.00 10.00 +76 5.00 5.00 16.00 0.00 172.00 10.00 +77 60.00 12.00 31.00 75.00 105.00 10.00 +78 23.00 3.00 7.00 150.00 180.00 10.00 +79 8.00 56.00 27.00 90.00 120.00 10.00 +80 6.00 68.00 30.00 89.00 119.00 10.00 +81 47.00 47.00 13.00 192.00 222.00 10.00 +82 49.00 58.00 10.00 86.00 116.00 10.00 +83 27.00 43.00 9.00 0.00 215.00 10.00 +84 37.00 31.00 14.00 0.00 210.00 10.00 +85 57.00 29.00 18.00 96.00 126.00 10.00 +86 63.00 23.00 2.00 0.00 194.00 10.00 +87 21.00 24.00 28.00 87.00 117.00 10.00 +88 12.00 24.00 13.00 90.00 120.00 10.00 +89 24.00 58.00 19.00 67.00 97.00 10.00 +90 67.00 5.00 25.00 144.00 174.00 10.00 +91 37.00 47.00 6.00 86.00 116.00 10.00 +92 49.00 42.00 13.00 0.00 217.00 10.00 +93 53.00 43.00 14.00 14.00 44.00 10.00 +94 61.00 52.00 3.00 178.00 208.00 10.00 +95 57.00 48.00 23.00 0.00 212.00 10.00 +96 56.00 37.00 6.00 0.00 209.00 10.00 +97 55.00 54.00 26.00 0.00 214.00 10.00 +98 4.00 18.00 35.00 120.00 150.00 10.00 +99 26.00 52.00 9.00 0.00 215.00 10.00 +100 26.00 35.00 15.00 77.00 107.00 10.00 +101 31.00 67.00 3.00 180.00 210.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc103.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc103.dat new file mode 100644 index 000000000..978d0d59b --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc103.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 240.00 0.00 +2 25.00 85.00 20.00 0.00 191.00 10.00 +3 22.00 75.00 30.00 0.00 199.00 10.00 +4 22.00 85.00 10.00 0.00 190.00 10.00 +5 20.00 80.00 40.00 141.00 171.00 10.00 +6 20.00 85.00 20.00 0.00 189.00 10.00 +7 18.00 75.00 20.00 95.00 125.00 10.00 +8 15.00 75.00 20.00 0.00 194.00 10.00 +9 15.00 80.00 10.00 91.00 121.00 10.00 +10 10.00 35.00 20.00 91.00 121.00 10.00 +11 10.00 40.00 30.00 119.00 149.00 10.00 +12 8.00 40.00 40.00 59.00 89.00 10.00 +13 8.00 45.00 20.00 0.00 197.00 10.00 +14 5.00 35.00 10.00 142.00 172.00 10.00 +15 5.00 45.00 10.00 0.00 194.00 10.00 +16 2.00 40.00 20.00 58.00 88.00 10.00 +17 0.00 40.00 20.00 0.00 188.00 10.00 +18 0.00 45.00 20.00 149.00 179.00 10.00 +19 44.00 5.00 20.00 0.00 184.00 10.00 +20 42.00 10.00 40.00 0.00 189.00 10.00 +21 42.00 15.00 10.00 0.00 194.00 10.00 +22 40.00 5.00 10.00 0.00 185.00 10.00 +23 40.00 15.00 40.00 92.00 122.00 10.00 +24 38.00 5.00 30.00 65.00 95.00 10.00 +25 38.00 15.00 10.00 0.00 194.00 10.00 +26 35.00 5.00 20.00 154.00 184.00 10.00 +27 95.00 30.00 30.00 0.00 171.00 10.00 +28 95.00 35.00 20.00 62.00 92.00 10.00 +29 92.00 30.00 10.00 0.00 174.00 10.00 +30 90.00 35.00 10.00 0.00 177.00 10.00 +31 88.00 30.00 10.00 74.00 104.00 10.00 +32 88.00 35.00 20.00 0.00 179.00 10.00 +33 87.00 30.00 10.00 0.00 178.00 10.00 +34 85.00 25.00 10.00 51.00 81.00 10.00 +35 85.00 35.00 30.00 0.00 182.00 10.00 +36 67.00 85.00 20.00 139.00 169.00 10.00 +37 65.00 85.00 40.00 43.00 73.00 10.00 +38 65.00 82.00 10.00 0.00 189.00 10.00 +39 62.00 80.00 30.00 75.00 105.00 10.00 +40 60.00 80.00 10.00 37.00 67.00 10.00 +41 60.00 85.00 30.00 85.00 115.00 10.00 +42 58.00 75.00 20.00 92.00 122.00 10.00 +43 55.00 80.00 10.00 33.00 63.00 10.00 +44 55.00 85.00 20.00 0.00 191.00 10.00 +45 55.00 82.00 10.00 64.00 94.00 10.00 +46 20.00 82.00 10.00 37.00 67.00 10.00 +47 18.00 80.00 10.00 0.00 192.00 10.00 +48 2.00 45.00 10.00 0.00 191.00 10.00 +49 42.00 5.00 10.00 0.00 184.00 10.00 +50 42.00 12.00 10.00 104.00 134.00 10.00 +51 72.00 35.00 30.00 0.00 194.00 10.00 +52 55.00 20.00 19.00 0.00 196.00 10.00 +53 25.00 30.00 3.00 0.00 205.00 10.00 +54 20.00 50.00 5.00 91.00 121.00 10.00 +55 55.00 60.00 16.00 0.00 211.00 10.00 +56 30.00 60.00 16.00 140.00 170.00 10.00 +57 50.00 35.00 19.00 130.00 160.00 10.00 +58 30.00 25.00 23.00 0.00 203.00 10.00 +59 15.00 10.00 20.00 152.00 182.00 10.00 +60 10.00 20.00 19.00 0.00 187.00 10.00 +61 15.00 60.00 17.00 0.00 203.00 10.00 +62 45.00 65.00 9.00 0.00 214.00 10.00 +63 65.00 35.00 3.00 52.00 82.00 10.00 +64 65.00 20.00 6.00 0.00 190.00 10.00 +65 45.00 30.00 17.00 53.00 83.00 10.00 +66 35.00 40.00 16.00 11.00 41.00 10.00 +67 41.00 37.00 16.00 133.00 163.00 10.00 +68 64.00 42.00 9.00 70.00 100.00 10.00 +69 40.00 60.00 21.00 144.00 174.00 10.00 +70 31.00 52.00 27.00 41.00 71.00 10.00 +71 35.00 69.00 23.00 180.00 210.00 10.00 +72 65.00 55.00 14.00 0.00 204.00 10.00 +73 63.00 65.00 8.00 0.00 202.00 10.00 +74 2.00 60.00 5.00 0.00 190.00 10.00 +75 20.00 20.00 8.00 141.00 171.00 10.00 +76 5.00 5.00 16.00 0.00 172.00 10.00 +77 60.00 12.00 31.00 75.00 105.00 10.00 +78 23.00 3.00 7.00 150.00 180.00 10.00 +79 8.00 56.00 27.00 90.00 120.00 10.00 +80 6.00 68.00 30.00 89.00 119.00 10.00 +81 47.00 47.00 13.00 192.00 222.00 10.00 +82 49.00 58.00 10.00 0.00 217.00 10.00 +83 27.00 43.00 9.00 0.00 215.00 10.00 +84 37.00 31.00 14.00 0.00 210.00 10.00 +85 57.00 29.00 18.00 96.00 126.00 10.00 +86 63.00 23.00 2.00 0.00 194.00 10.00 +87 21.00 24.00 28.00 0.00 197.00 10.00 +88 12.00 24.00 13.00 90.00 120.00 10.00 +89 24.00 58.00 19.00 67.00 97.00 10.00 +90 67.00 5.00 25.00 0.00 177.00 10.00 +91 37.00 47.00 6.00 0.00 225.00 10.00 +92 49.00 42.00 13.00 0.00 217.00 10.00 +93 53.00 43.00 14.00 14.00 44.00 10.00 +94 61.00 52.00 3.00 178.00 208.00 10.00 +95 57.00 48.00 23.00 0.00 212.00 10.00 +96 56.00 37.00 6.00 0.00 209.00 10.00 +97 55.00 54.00 26.00 0.00 214.00 10.00 +98 4.00 18.00 35.00 0.00 181.00 10.00 +99 26.00 52.00 9.00 0.00 215.00 10.00 +100 26.00 35.00 15.00 77.00 107.00 10.00 +101 31.00 67.00 3.00 180.00 210.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc104.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc104.dat new file mode 100644 index 000000000..b69acd823 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc104.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 240.00 0.00 +2 25.00 85.00 20.00 0.00 191.00 10.00 +3 22.00 75.00 30.00 0.00 199.00 10.00 +4 22.00 85.00 10.00 0.00 190.00 10.00 +5 20.00 80.00 40.00 141.00 171.00 10.00 +6 20.00 85.00 20.00 0.00 189.00 10.00 +7 18.00 75.00 20.00 0.00 196.00 10.00 +8 15.00 75.00 20.00 0.00 194.00 10.00 +9 15.00 80.00 10.00 91.00 121.00 10.00 +10 10.00 35.00 20.00 91.00 121.00 10.00 +11 10.00 40.00 30.00 0.00 198.00 10.00 +12 8.00 40.00 40.00 59.00 89.00 10.00 +13 8.00 45.00 20.00 0.00 197.00 10.00 +14 5.00 35.00 10.00 142.00 172.00 10.00 +15 5.00 45.00 10.00 0.00 194.00 10.00 +16 2.00 40.00 20.00 58.00 88.00 10.00 +17 0.00 40.00 20.00 0.00 188.00 10.00 +18 0.00 45.00 20.00 0.00 189.00 10.00 +19 44.00 5.00 20.00 0.00 184.00 10.00 +20 42.00 10.00 40.00 0.00 189.00 10.00 +21 42.00 15.00 10.00 0.00 194.00 10.00 +22 40.00 5.00 10.00 0.00 185.00 10.00 +23 40.00 15.00 40.00 0.00 195.00 10.00 +24 38.00 5.00 30.00 65.00 95.00 10.00 +25 38.00 15.00 10.00 0.00 194.00 10.00 +26 35.00 5.00 20.00 154.00 184.00 10.00 +27 95.00 30.00 30.00 0.00 171.00 10.00 +28 95.00 35.00 20.00 0.00 172.00 10.00 +29 92.00 30.00 10.00 0.00 174.00 10.00 +30 90.00 35.00 10.00 0.00 177.00 10.00 +31 88.00 30.00 10.00 0.00 178.00 10.00 +32 88.00 35.00 20.00 0.00 179.00 10.00 +33 87.00 30.00 10.00 0.00 178.00 10.00 +34 85.00 25.00 10.00 0.00 178.00 10.00 +35 85.00 35.00 30.00 0.00 182.00 10.00 +36 67.00 85.00 20.00 0.00 185.00 10.00 +37 65.00 85.00 40.00 0.00 186.00 10.00 +38 65.00 82.00 10.00 0.00 189.00 10.00 +39 62.00 80.00 30.00 75.00 105.00 10.00 +40 60.00 80.00 10.00 0.00 193.00 10.00 +41 60.00 85.00 30.00 0.00 189.00 10.00 +42 58.00 75.00 20.00 0.00 199.00 10.00 +43 55.00 80.00 10.00 0.00 196.00 10.00 +44 55.00 85.00 20.00 0.00 191.00 10.00 +45 55.00 82.00 10.00 64.00 94.00 10.00 +46 20.00 82.00 10.00 0.00 192.00 10.00 +47 18.00 80.00 10.00 0.00 192.00 10.00 +48 2.00 45.00 10.00 0.00 191.00 10.00 +49 42.00 5.00 10.00 0.00 184.00 10.00 +50 42.00 12.00 10.00 0.00 191.00 10.00 +51 72.00 35.00 30.00 0.00 194.00 10.00 +52 55.00 20.00 19.00 0.00 196.00 10.00 +53 25.00 30.00 3.00 0.00 205.00 10.00 +54 20.00 50.00 5.00 91.00 121.00 10.00 +55 55.00 60.00 16.00 0.00 211.00 10.00 +56 30.00 60.00 16.00 140.00 170.00 10.00 +57 50.00 35.00 19.00 0.00 211.00 10.00 +58 30.00 25.00 23.00 0.00 203.00 10.00 +59 15.00 10.00 20.00 152.00 182.00 10.00 +60 10.00 20.00 19.00 0.00 187.00 10.00 +61 15.00 60.00 17.00 0.00 203.00 10.00 +62 45.00 65.00 9.00 0.00 214.00 10.00 +63 65.00 35.00 3.00 52.00 82.00 10.00 +64 65.00 20.00 6.00 0.00 190.00 10.00 +65 45.00 30.00 17.00 0.00 209.00 10.00 +66 35.00 40.00 16.00 0.00 218.00 10.00 +67 41.00 37.00 16.00 0.00 216.00 10.00 +68 64.00 42.00 9.00 70.00 100.00 10.00 +69 40.00 60.00 21.00 0.00 220.00 10.00 +70 31.00 52.00 27.00 41.00 71.00 10.00 +71 35.00 69.00 23.00 0.00 210.00 10.00 +72 65.00 55.00 14.00 0.00 204.00 10.00 +73 63.00 65.00 8.00 0.00 202.00 10.00 +74 2.00 60.00 5.00 0.00 190.00 10.00 +75 20.00 20.00 8.00 141.00 171.00 10.00 +76 5.00 5.00 16.00 0.00 172.00 10.00 +77 60.00 12.00 31.00 75.00 105.00 10.00 +78 23.00 3.00 7.00 150.00 180.00 10.00 +79 8.00 56.00 27.00 0.00 197.00 10.00 +80 6.00 68.00 30.00 89.00 119.00 10.00 +81 47.00 47.00 13.00 0.00 222.00 10.00 +82 49.00 58.00 10.00 0.00 217.00 10.00 +83 27.00 43.00 9.00 0.00 215.00 10.00 +84 37.00 31.00 14.00 0.00 210.00 10.00 +85 57.00 29.00 18.00 96.00 126.00 10.00 +86 63.00 23.00 2.00 0.00 194.00 10.00 +87 21.00 24.00 28.00 0.00 197.00 10.00 +88 12.00 24.00 13.00 90.00 120.00 10.00 +89 24.00 58.00 19.00 0.00 212.00 10.00 +90 67.00 5.00 25.00 0.00 177.00 10.00 +91 37.00 47.00 6.00 0.00 225.00 10.00 +92 49.00 42.00 13.00 0.00 217.00 10.00 +93 53.00 43.00 14.00 14.00 44.00 10.00 +94 61.00 52.00 3.00 0.00 208.00 10.00 +95 57.00 48.00 23.00 0.00 212.00 10.00 +96 56.00 37.00 6.00 0.00 209.00 10.00 +97 55.00 54.00 26.00 0.00 214.00 10.00 +98 4.00 18.00 35.00 0.00 181.00 10.00 +99 26.00 52.00 9.00 0.00 215.00 10.00 +100 26.00 35.00 15.00 77.00 107.00 10.00 +101 31.00 67.00 3.00 180.00 210.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc105.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc105.dat new file mode 100644 index 000000000..97b9e9825 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc105.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 240.00 0.00 +2 25.00 85.00 20.00 71.00 191.00 10.00 +3 22.00 75.00 30.00 30.00 150.00 10.00 +4 22.00 85.00 10.00 64.00 184.00 10.00 +5 20.00 80.00 40.00 151.00 161.00 10.00 +6 20.00 85.00 20.00 40.00 160.00 10.00 +7 18.00 75.00 20.00 96.00 123.00 10.00 +8 15.00 75.00 20.00 35.00 155.00 10.00 +9 15.00 80.00 10.00 101.00 111.00 10.00 +10 10.00 35.00 20.00 101.00 111.00 10.00 +11 10.00 40.00 30.00 123.00 144.00 10.00 +12 8.00 40.00 40.00 69.00 79.00 10.00 +13 8.00 45.00 20.00 32.00 152.00 10.00 +14 5.00 35.00 10.00 152.00 162.00 10.00 +15 5.00 45.00 10.00 35.00 117.00 10.00 +16 2.00 40.00 20.00 68.00 78.00 10.00 +17 0.00 40.00 20.00 59.00 114.00 10.00 +18 0.00 45.00 20.00 147.00 180.00 10.00 +19 44.00 5.00 20.00 79.00 124.00 10.00 +20 42.00 10.00 40.00 58.00 115.00 10.00 +21 42.00 15.00 10.00 111.00 162.00 10.00 +22 40.00 5.00 10.00 45.00 165.00 10.00 +23 40.00 15.00 40.00 94.00 119.00 10.00 +24 38.00 5.00 30.00 75.00 85.00 10.00 +25 38.00 15.00 10.00 128.00 194.00 10.00 +26 35.00 5.00 20.00 171.00 181.00 10.00 +27 95.00 30.00 30.00 58.00 171.00 10.00 +28 95.00 35.00 20.00 60.00 93.00 10.00 +29 92.00 30.00 10.00 55.00 120.00 10.00 +30 90.00 35.00 10.00 52.00 112.00 10.00 +31 88.00 30.00 10.00 75.00 102.00 10.00 +32 88.00 35.00 20.00 50.00 170.00 10.00 +33 87.00 30.00 10.00 116.00 175.00 10.00 +34 85.00 25.00 10.00 51.00 85.00 10.00 +35 85.00 35.00 30.00 62.00 182.00 10.00 +36 67.00 85.00 20.00 138.00 169.00 10.00 +37 65.00 85.00 40.00 43.00 78.00 10.00 +38 65.00 82.00 10.00 69.00 189.00 10.00 +39 62.00 80.00 30.00 85.00 95.00 10.00 +40 60.00 80.00 10.00 36.00 74.00 10.00 +41 60.00 85.00 30.00 87.00 112.00 10.00 +42 58.00 75.00 20.00 92.00 121.00 10.00 +43 55.00 80.00 10.00 33.00 66.00 10.00 +44 55.00 85.00 20.00 117.00 168.00 10.00 +45 55.00 82.00 10.00 74.00 84.00 10.00 +46 20.00 82.00 10.00 37.00 72.00 10.00 +47 18.00 80.00 10.00 98.00 157.00 10.00 +48 2.00 45.00 10.00 38.00 109.00 10.00 +49 42.00 5.00 10.00 64.00 184.00 10.00 +50 42.00 12.00 10.00 109.00 128.00 10.00 +51 72.00 35.00 30.00 71.00 191.00 10.00 +52 55.00 20.00 19.00 69.00 126.00 10.00 +53 25.00 30.00 3.00 25.00 145.00 10.00 +54 20.00 50.00 5.00 101.00 111.00 10.00 +55 55.00 60.00 16.00 127.00 180.00 10.00 +56 30.00 60.00 16.00 150.00 160.00 10.00 +57 50.00 35.00 19.00 130.00 159.00 10.00 +58 30.00 25.00 23.00 82.00 139.00 10.00 +59 15.00 10.00 20.00 172.00 182.00 10.00 +60 10.00 20.00 19.00 42.00 162.00 10.00 +61 15.00 60.00 17.00 137.00 202.00 10.00 +62 45.00 65.00 9.00 55.00 106.00 10.00 +63 65.00 35.00 3.00 62.00 72.00 10.00 +64 65.00 20.00 6.00 39.00 108.00 10.00 +65 45.00 30.00 17.00 53.00 82.00 10.00 +66 35.00 40.00 16.00 11.00 43.00 10.00 +67 41.00 37.00 16.00 134.00 161.00 10.00 +68 64.00 42.00 9.00 80.00 90.00 10.00 +69 40.00 60.00 21.00 144.00 173.00 10.00 +70 31.00 52.00 27.00 51.00 61.00 10.00 +71 35.00 69.00 23.00 172.00 210.00 10.00 +72 65.00 55.00 14.00 52.00 107.00 10.00 +73 63.00 65.00 8.00 27.00 147.00 10.00 +74 2.00 60.00 5.00 65.00 118.00 10.00 +75 20.00 20.00 8.00 151.00 161.00 10.00 +76 5.00 5.00 16.00 57.00 172.00 10.00 +77 60.00 12.00 31.00 85.00 95.00 10.00 +78 23.00 3.00 7.00 163.00 173.00 10.00 +79 8.00 56.00 27.00 90.00 119.00 10.00 +80 6.00 68.00 30.00 99.00 109.00 10.00 +81 47.00 47.00 13.00 190.00 222.00 10.00 +82 49.00 58.00 10.00 80.00 121.00 10.00 +83 27.00 43.00 9.00 14.00 134.00 10.00 +84 37.00 31.00 14.00 19.00 139.00 10.00 +85 57.00 29.00 18.00 106.00 116.00 10.00 +86 63.00 23.00 2.00 42.00 162.00 10.00 +87 21.00 24.00 28.00 77.00 126.00 10.00 +88 12.00 24.00 13.00 100.00 110.00 10.00 +89 24.00 58.00 19.00 67.00 96.00 10.00 +90 67.00 5.00 25.00 105.00 177.00 10.00 +91 37.00 47.00 6.00 74.00 127.00 10.00 +92 49.00 42.00 13.00 97.00 217.00 10.00 +93 53.00 43.00 14.00 15.00 25.00 10.00 +94 61.00 52.00 3.00 173.00 208.00 10.00 +95 57.00 48.00 23.00 50.00 170.00 10.00 +96 56.00 37.00 6.00 20.00 140.00 10.00 +97 55.00 54.00 26.00 87.00 207.00 10.00 +98 4.00 18.00 35.00 112.00 157.00 10.00 +99 26.00 52.00 9.00 14.00 134.00 10.00 +100 26.00 35.00 15.00 87.00 97.00 10.00 +101 31.00 67.00 3.00 200.00 210.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc106.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc106.dat new file mode 100644 index 000000000..170215926 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc106.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 240.00 0.00 +2 25.00 85.00 20.00 130.00 190.00 10.00 +3 22.00 75.00 30.00 35.00 95.00 10.00 +4 22.00 85.00 10.00 94.00 154.00 10.00 +5 20.00 80.00 40.00 126.00 186.00 10.00 +6 20.00 85.00 20.00 40.00 100.00 10.00 +7 18.00 75.00 20.00 80.00 140.00 10.00 +8 15.00 75.00 20.00 64.00 124.00 10.00 +9 15.00 80.00 10.00 76.00 136.00 10.00 +10 10.00 35.00 20.00 76.00 136.00 10.00 +11 10.00 40.00 30.00 104.00 164.00 10.00 +12 8.00 40.00 40.00 44.00 104.00 10.00 +13 8.00 45.00 20.00 49.00 109.00 10.00 +14 5.00 35.00 10.00 127.00 187.00 10.00 +15 5.00 45.00 10.00 35.00 95.00 10.00 +16 2.00 40.00 20.00 43.00 103.00 10.00 +17 0.00 40.00 20.00 57.00 117.00 10.00 +18 0.00 45.00 20.00 129.00 189.00 10.00 +19 44.00 5.00 20.00 72.00 132.00 10.00 +20 42.00 10.00 40.00 57.00 117.00 10.00 +21 42.00 15.00 10.00 107.00 167.00 10.00 +22 40.00 5.00 10.00 52.00 112.00 10.00 +23 40.00 15.00 40.00 77.00 137.00 10.00 +24 38.00 5.00 30.00 50.00 110.00 10.00 +25 38.00 15.00 10.00 133.00 193.00 10.00 +26 35.00 5.00 20.00 124.00 184.00 10.00 +27 95.00 30.00 30.00 100.00 160.00 10.00 +28 95.00 35.00 20.00 57.00 117.00 10.00 +29 92.00 30.00 10.00 55.00 115.00 10.00 +30 90.00 35.00 10.00 52.00 112.00 10.00 +31 88.00 30.00 10.00 59.00 119.00 10.00 +32 88.00 35.00 20.00 50.00 110.00 10.00 +33 87.00 30.00 10.00 116.00 176.00 10.00 +34 85.00 25.00 10.00 51.00 111.00 10.00 +35 85.00 35.00 30.00 96.00 156.00 10.00 +36 67.00 85.00 20.00 124.00 184.00 10.00 +37 65.00 85.00 40.00 43.00 103.00 10.00 +38 65.00 82.00 10.00 109.00 169.00 10.00 +39 62.00 80.00 30.00 60.00 120.00 10.00 +40 60.00 80.00 10.00 36.00 96.00 10.00 +41 60.00 85.00 30.00 70.00 130.00 10.00 +42 58.00 75.00 20.00 77.00 137.00 10.00 +43 55.00 80.00 10.00 33.00 93.00 10.00 +44 55.00 85.00 20.00 113.00 173.00 10.00 +45 55.00 82.00 10.00 49.00 109.00 10.00 +46 20.00 82.00 10.00 37.00 97.00 10.00 +47 18.00 80.00 10.00 98.00 158.00 10.00 +48 2.00 45.00 10.00 38.00 98.00 10.00 +49 42.00 5.00 10.00 124.00 184.00 10.00 +50 42.00 12.00 10.00 89.00 149.00 10.00 +51 72.00 35.00 30.00 101.00 161.00 10.00 +52 55.00 20.00 19.00 68.00 128.00 10.00 +53 25.00 30.00 3.00 37.00 97.00 10.00 +54 20.00 50.00 5.00 76.00 136.00 10.00 +55 55.00 60.00 16.00 124.00 184.00 10.00 +56 30.00 60.00 16.00 125.00 185.00 10.00 +57 50.00 35.00 19.00 115.00 175.00 10.00 +58 30.00 25.00 23.00 81.00 141.00 10.00 +59 15.00 10.00 20.00 122.00 182.00 10.00 +60 10.00 20.00 19.00 42.00 102.00 10.00 +61 15.00 60.00 17.00 140.00 200.00 10.00 +62 45.00 65.00 9.00 51.00 111.00 10.00 +63 65.00 35.00 3.00 37.00 97.00 10.00 +64 65.00 20.00 6.00 39.00 99.00 10.00 +65 45.00 30.00 17.00 38.00 98.00 10.00 +66 35.00 40.00 16.00 11.00 71.00 10.00 +67 41.00 37.00 16.00 118.00 178.00 10.00 +68 64.00 42.00 9.00 55.00 115.00 10.00 +69 40.00 60.00 21.00 129.00 189.00 10.00 +70 31.00 52.00 27.00 26.00 86.00 10.00 +71 35.00 69.00 23.00 150.00 210.00 10.00 +72 65.00 55.00 14.00 50.00 110.00 10.00 +73 63.00 65.00 8.00 27.00 87.00 10.00 +74 2.00 60.00 5.00 62.00 122.00 10.00 +75 20.00 20.00 8.00 126.00 186.00 10.00 +76 5.00 5.00 16.00 59.00 119.00 10.00 +77 60.00 12.00 31.00 60.00 120.00 10.00 +78 23.00 3.00 7.00 120.00 180.00 10.00 +79 8.00 56.00 27.00 75.00 135.00 10.00 +80 6.00 68.00 30.00 74.00 134.00 10.00 +81 47.00 47.00 13.00 162.00 222.00 10.00 +82 49.00 58.00 10.00 71.00 131.00 10.00 +83 27.00 43.00 9.00 27.00 87.00 10.00 +84 37.00 31.00 14.00 20.00 80.00 10.00 +85 57.00 29.00 18.00 81.00 141.00 10.00 +86 63.00 23.00 2.00 72.00 132.00 10.00 +87 21.00 24.00 28.00 72.00 132.00 10.00 +88 12.00 24.00 13.00 75.00 135.00 10.00 +89 24.00 58.00 19.00 52.00 112.00 10.00 +90 67.00 5.00 25.00 117.00 177.00 10.00 +91 37.00 47.00 6.00 71.00 131.00 10.00 +92 49.00 42.00 13.00 152.00 212.00 10.00 +93 53.00 43.00 14.00 14.00 74.00 10.00 +94 61.00 52.00 3.00 148.00 208.00 10.00 +95 57.00 48.00 23.00 80.00 140.00 10.00 +96 56.00 37.00 6.00 20.00 80.00 10.00 +97 55.00 54.00 26.00 117.00 177.00 10.00 +98 4.00 18.00 35.00 105.00 165.00 10.00 +99 26.00 52.00 9.00 31.00 91.00 10.00 +100 26.00 35.00 15.00 62.00 122.00 10.00 +101 31.00 67.00 3.00 150.00 210.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc107.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc107.dat new file mode 100644 index 000000000..d2109f1d1 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc107.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 240.00 0.00 +2 25.00 85.00 20.00 125.00 191.00 10.00 +3 22.00 75.00 30.00 32.00 97.00 10.00 +4 22.00 85.00 10.00 101.00 146.00 10.00 +5 20.00 80.00 40.00 71.00 193.00 10.00 +6 20.00 85.00 20.00 40.00 113.00 10.00 +7 18.00 75.00 20.00 55.00 164.00 10.00 +8 15.00 75.00 20.00 69.00 118.00 10.00 +9 15.00 80.00 10.00 56.00 155.00 10.00 +10 10.00 35.00 20.00 51.00 160.00 10.00 +11 10.00 40.00 30.00 90.00 177.00 10.00 +12 8.00 40.00 40.00 33.00 152.00 10.00 +13 8.00 45.00 20.00 49.00 108.00 10.00 +14 5.00 35.00 10.00 62.00 191.00 10.00 +15 5.00 45.00 10.00 35.00 117.00 10.00 +16 2.00 40.00 20.00 39.00 161.00 10.00 +17 0.00 40.00 20.00 59.00 114.00 10.00 +18 0.00 45.00 20.00 60.00 189.00 10.00 +19 44.00 5.00 20.00 79.00 124.00 10.00 +20 42.00 10.00 40.00 58.00 115.00 10.00 +21 42.00 15.00 10.00 111.00 162.00 10.00 +22 40.00 5.00 10.00 52.00 111.00 10.00 +23 40.00 15.00 40.00 55.00 158.00 10.00 +24 38.00 5.00 30.00 45.00 164.00 10.00 +25 38.00 15.00 10.00 128.00 194.00 10.00 +26 35.00 5.00 20.00 54.00 184.00 10.00 +27 95.00 30.00 30.00 105.00 154.00 10.00 +28 95.00 35.00 20.00 57.00 172.00 10.00 +29 92.00 30.00 10.00 55.00 120.00 10.00 +30 90.00 35.00 10.00 52.00 112.00 10.00 +31 88.00 30.00 10.00 52.00 159.00 10.00 +32 88.00 35.00 20.00 50.00 110.00 10.00 +33 87.00 30.00 10.00 116.00 175.00 10.00 +34 85.00 25.00 10.00 51.00 178.00 10.00 +35 85.00 35.00 30.00 100.00 151.00 10.00 +36 67.00 85.00 20.00 61.00 185.00 10.00 +37 65.00 85.00 40.00 43.00 186.00 10.00 +38 65.00 82.00 10.00 113.00 164.00 10.00 +39 62.00 80.00 30.00 37.00 148.00 10.00 +40 60.00 80.00 10.00 36.00 191.00 10.00 +41 60.00 85.00 30.00 50.00 149.00 10.00 +42 58.00 75.00 20.00 48.00 165.00 10.00 +43 55.00 80.00 10.00 33.00 166.00 10.00 +44 55.00 85.00 20.00 117.00 168.00 10.00 +45 55.00 82.00 10.00 35.00 148.00 10.00 +46 20.00 82.00 10.00 37.00 177.00 10.00 +47 18.00 80.00 10.00 98.00 157.00 10.00 +48 2.00 45.00 10.00 38.00 109.00 10.00 +49 42.00 5.00 10.00 120.00 184.00 10.00 +50 42.00 12.00 10.00 79.00 158.00 10.00 +51 72.00 35.00 30.00 104.00 157.00 10.00 +52 55.00 20.00 19.00 69.00 126.00 10.00 +53 25.00 30.00 3.00 36.00 97.00 10.00 +54 20.00 50.00 5.00 57.00 154.00 10.00 +55 55.00 60.00 16.00 127.00 180.00 10.00 +56 30.00 60.00 16.00 95.00 214.00 10.00 +57 50.00 35.00 19.00 88.00 201.00 10.00 +58 30.00 25.00 23.00 82.00 139.00 10.00 +59 15.00 10.00 20.00 56.00 182.00 10.00 +60 10.00 20.00 19.00 42.00 125.00 10.00 +61 15.00 60.00 17.00 137.00 202.00 10.00 +62 45.00 65.00 9.00 55.00 106.00 10.00 +63 65.00 35.00 3.00 29.00 158.00 10.00 +64 65.00 20.00 6.00 39.00 108.00 10.00 +65 45.00 30.00 17.00 20.00 139.00 10.00 +66 35.00 40.00 16.00 11.00 140.00 10.00 +67 41.00 37.00 16.00 92.00 203.00 10.00 +68 64.00 42.00 9.00 28.00 141.00 10.00 +69 40.00 60.00 21.00 100.00 217.00 10.00 +70 31.00 52.00 27.00 9.00 134.00 10.00 +71 35.00 69.00 23.00 60.00 210.00 10.00 +72 65.00 55.00 14.00 52.00 107.00 10.00 +73 63.00 65.00 8.00 27.00 101.00 10.00 +74 2.00 60.00 5.00 65.00 118.00 10.00 +75 20.00 20.00 8.00 72.00 193.00 10.00 +76 5.00 5.00 16.00 60.00 117.00 10.00 +77 60.00 12.00 31.00 42.00 143.00 10.00 +78 23.00 3.00 7.00 52.00 180.00 10.00 +79 8.00 56.00 27.00 46.00 163.00 10.00 +80 6.00 68.00 30.00 54.00 153.00 10.00 +81 47.00 47.00 13.00 97.00 222.00 10.00 +82 49.00 58.00 10.00 80.00 121.00 10.00 +83 27.00 43.00 9.00 26.00 87.00 10.00 +84 37.00 31.00 14.00 19.00 87.00 10.00 +85 57.00 29.00 18.00 62.00 159.00 10.00 +86 63.00 23.00 2.00 76.00 127.00 10.00 +87 21.00 24.00 28.00 77.00 126.00 10.00 +88 12.00 24.00 13.00 68.00 141.00 10.00 +89 24.00 58.00 19.00 24.00 139.00 10.00 +90 67.00 5.00 25.00 105.00 177.00 10.00 +91 37.00 47.00 6.00 74.00 127.00 10.00 +92 49.00 42.00 13.00 151.00 212.00 10.00 +93 53.00 43.00 14.00 14.00 155.00 10.00 +94 61.00 52.00 3.00 69.00 208.00 10.00 +95 57.00 48.00 23.00 86.00 133.00 10.00 +96 56.00 37.00 6.00 20.00 84.00 10.00 +97 55.00 54.00 26.00 121.00 172.00 10.00 +98 4.00 18.00 35.00 112.00 157.00 10.00 +99 26.00 52.00 9.00 30.00 91.00 10.00 +100 26.00 35.00 15.00 37.00 146.00 10.00 +101 31.00 67.00 3.00 66.00 210.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc108.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc108.dat new file mode 100644 index 000000000..95a7a7e80 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc108.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 240.00 0.00 +2 25.00 85.00 20.00 49.00 191.00 10.00 +3 22.00 75.00 30.00 30.00 168.00 10.00 +4 22.00 85.00 10.00 95.00 152.00 10.00 +5 20.00 80.00 40.00 69.00 193.00 10.00 +6 20.00 85.00 20.00 40.00 189.00 10.00 +7 18.00 75.00 20.00 60.00 159.00 10.00 +8 15.00 75.00 20.00 54.00 133.00 10.00 +9 15.00 80.00 10.00 67.00 144.00 10.00 +10 10.00 35.00 20.00 57.00 154.00 10.00 +11 10.00 40.00 30.00 106.00 161.00 10.00 +12 8.00 40.00 40.00 33.00 152.00 10.00 +13 8.00 45.00 20.00 32.00 148.00 10.00 +14 5.00 35.00 10.00 53.00 191.00 10.00 +15 5.00 45.00 10.00 35.00 194.00 10.00 +16 2.00 40.00 20.00 39.00 163.00 10.00 +17 0.00 40.00 20.00 41.00 141.00 10.00 +18 0.00 45.00 20.00 51.00 189.00 10.00 +19 44.00 5.00 20.00 73.00 130.00 10.00 +20 42.00 10.00 40.00 40.00 148.00 10.00 +21 42.00 15.00 10.00 94.00 179.00 10.00 +22 40.00 5.00 10.00 45.00 161.00 10.00 +23 40.00 15.00 40.00 64.00 149.00 10.00 +24 38.00 5.00 30.00 45.00 164.00 10.00 +25 38.00 15.00 10.00 51.00 194.00 10.00 +26 35.00 5.00 20.00 45.00 183.00 10.00 +27 95.00 30.00 30.00 90.00 169.00 10.00 +28 95.00 35.00 20.00 57.00 172.00 10.00 +29 92.00 30.00 10.00 55.00 174.00 10.00 +30 90.00 35.00 10.00 52.00 174.00 10.00 +31 88.00 30.00 10.00 52.00 147.00 10.00 +32 88.00 35.00 20.00 50.00 172.00 10.00 +33 87.00 30.00 10.00 61.00 178.00 10.00 +34 85.00 25.00 10.00 51.00 178.00 10.00 +35 85.00 35.00 30.00 83.00 168.00 10.00 +36 67.00 85.00 20.00 57.00 185.00 10.00 +37 65.00 85.00 40.00 43.00 186.00 10.00 +38 65.00 82.00 10.00 95.00 182.00 10.00 +39 62.00 80.00 30.00 38.00 141.00 10.00 +40 60.00 80.00 10.00 36.00 193.00 10.00 +41 60.00 85.00 30.00 61.00 138.00 10.00 +42 58.00 75.00 20.00 49.00 164.00 10.00 +43 55.00 80.00 10.00 33.00 180.00 10.00 +44 55.00 85.00 20.00 100.00 185.00 10.00 +45 55.00 82.00 10.00 35.00 142.00 10.00 +46 20.00 82.00 10.00 37.00 192.00 10.00 +47 18.00 80.00 10.00 71.00 184.00 10.00 +48 2.00 45.00 10.00 38.00 191.00 10.00 +49 42.00 5.00 10.00 50.00 184.00 10.00 +50 42.00 12.00 10.00 99.00 138.00 10.00 +51 72.00 35.00 30.00 83.00 178.00 10.00 +52 55.00 20.00 19.00 45.00 150.00 10.00 +53 25.00 30.00 3.00 25.00 150.00 10.00 +54 20.00 50.00 5.00 68.00 143.00 10.00 +55 55.00 60.00 16.00 107.00 200.00 10.00 +56 30.00 60.00 16.00 95.00 214.00 10.00 +57 50.00 35.00 19.00 91.00 198.00 10.00 +58 30.00 25.00 23.00 56.00 165.00 10.00 +59 15.00 10.00 20.00 51.00 182.00 10.00 +60 10.00 20.00 19.00 42.00 187.00 10.00 +61 15.00 60.00 17.00 62.00 203.00 10.00 +62 45.00 65.00 9.00 37.00 124.00 10.00 +63 65.00 35.00 3.00 29.00 168.00 10.00 +64 65.00 20.00 6.00 39.00 190.00 10.00 +65 45.00 30.00 17.00 20.00 139.00 10.00 +66 35.00 40.00 16.00 11.00 150.00 10.00 +67 41.00 37.00 16.00 97.00 198.00 10.00 +68 64.00 42.00 9.00 31.00 138.00 10.00 +69 40.00 60.00 21.00 101.00 216.00 10.00 +70 31.00 52.00 27.00 9.00 139.00 10.00 +71 35.00 69.00 23.00 30.00 210.00 10.00 +72 65.00 55.00 14.00 30.00 129.00 10.00 +73 63.00 65.00 8.00 27.00 202.00 10.00 +74 2.00 60.00 5.00 46.00 137.00 10.00 +75 20.00 20.00 8.00 71.00 193.00 10.00 +76 5.00 5.00 16.00 57.00 165.00 10.00 +77 60.00 12.00 31.00 48.00 131.00 10.00 +78 23.00 3.00 7.00 49.00 180.00 10.00 +79 8.00 56.00 27.00 47.00 162.00 10.00 +80 6.00 68.00 30.00 65.00 142.00 10.00 +81 47.00 47.00 13.00 93.00 222.00 10.00 +82 49.00 58.00 10.00 78.00 123.00 10.00 +83 27.00 43.00 9.00 14.00 140.00 10.00 +84 37.00 31.00 14.00 19.00 172.00 10.00 +85 57.00 29.00 18.00 73.00 148.00 10.00 +86 63.00 23.00 2.00 59.00 144.00 10.00 +87 21.00 24.00 28.00 63.00 140.00 10.00 +88 12.00 24.00 13.00 91.00 118.00 10.00 +89 24.00 58.00 19.00 27.00 136.00 10.00 +90 67.00 5.00 25.00 52.00 177.00 10.00 +91 37.00 47.00 6.00 53.00 148.00 10.00 +92 49.00 42.00 13.00 89.00 217.00 10.00 +93 53.00 43.00 14.00 14.00 177.00 10.00 +94 61.00 52.00 3.00 50.00 208.00 10.00 +95 57.00 48.00 23.00 76.00 143.00 10.00 +96 56.00 37.00 6.00 20.00 159.00 10.00 +97 55.00 54.00 26.00 105.00 188.00 10.00 +98 4.00 18.00 35.00 104.00 165.00 10.00 +99 26.00 52.00 9.00 14.00 136.00 10.00 +100 26.00 35.00 15.00 42.00 141.00 10.00 +101 31.00 67.00 3.00 43.00 210.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc201.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc201.dat new file mode 100644 index 000000000..6bc337802 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc201.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 960.00 0.00 +2 25.00 85.00 20.00 673.00 793.00 10.00 +3 22.00 75.00 30.00 152.00 272.00 10.00 +4 22.00 85.00 10.00 471.00 591.00 10.00 +5 20.00 80.00 40.00 644.00 764.00 10.00 +6 20.00 85.00 20.00 73.00 193.00 10.00 +7 18.00 75.00 20.00 388.00 508.00 10.00 +8 15.00 75.00 20.00 300.00 420.00 10.00 +9 15.00 80.00 10.00 367.00 487.00 10.00 +10 10.00 35.00 20.00 371.00 491.00 10.00 +11 10.00 40.00 30.00 519.00 639.00 10.00 +12 8.00 40.00 40.00 195.00 315.00 10.00 +13 8.00 45.00 20.00 223.00 343.00 10.00 +14 5.00 35.00 10.00 653.00 773.00 10.00 +15 5.00 45.00 10.00 35.00 155.00 10.00 +16 2.00 40.00 20.00 174.00 294.00 10.00 +17 0.00 40.00 20.00 255.00 375.00 10.00 +18 0.00 45.00 20.00 703.00 823.00 10.00 +19 44.00 5.00 20.00 335.00 455.00 10.00 +20 42.00 10.00 40.00 254.00 374.00 10.00 +21 42.00 15.00 10.00 537.00 657.00 10.00 +22 40.00 5.00 10.00 215.00 335.00 10.00 +23 40.00 15.00 40.00 375.00 495.00 10.00 +24 38.00 5.00 30.00 201.00 321.00 10.00 +25 38.00 15.00 10.00 681.00 801.00 10.00 +26 35.00 5.00 20.00 784.00 904.00 10.00 +27 95.00 30.00 30.00 529.00 649.00 10.00 +28 95.00 35.00 20.00 146.00 266.00 10.00 +29 92.00 30.00 10.00 149.00 269.00 10.00 +30 90.00 35.00 10.00 194.00 314.00 10.00 +31 88.00 30.00 10.00 246.00 366.00 10.00 +32 88.00 35.00 20.00 165.00 285.00 10.00 +33 87.00 30.00 10.00 621.00 741.00 10.00 +34 85.00 25.00 10.00 80.00 200.00 10.00 +35 85.00 35.00 30.00 487.00 607.00 10.00 +36 67.00 85.00 20.00 657.00 777.00 10.00 +37 65.00 85.00 40.00 43.00 163.00 10.00 +38 65.00 82.00 10.00 557.00 677.00 10.00 +39 62.00 80.00 30.00 278.00 398.00 10.00 +40 60.00 80.00 10.00 64.00 184.00 10.00 +41 60.00 85.00 30.00 329.00 449.00 10.00 +42 58.00 75.00 20.00 376.00 496.00 10.00 +43 55.00 80.00 10.00 33.00 153.00 10.00 +44 55.00 85.00 20.00 574.00 694.00 10.00 +45 55.00 82.00 10.00 217.00 337.00 10.00 +46 20.00 82.00 10.00 37.00 157.00 10.00 +47 18.00 80.00 10.00 489.00 609.00 10.00 +48 2.00 45.00 10.00 105.00 225.00 10.00 +49 42.00 5.00 10.00 732.00 852.00 10.00 +50 42.00 12.00 10.00 440.00 560.00 10.00 +51 72.00 35.00 30.00 507.00 627.00 10.00 +52 55.00 20.00 19.00 326.00 446.00 10.00 +53 25.00 30.00 3.00 175.00 295.00 10.00 +54 20.00 50.00 5.00 375.00 495.00 10.00 +55 55.00 60.00 16.00 601.00 721.00 10.00 +56 30.00 60.00 16.00 599.00 719.00 10.00 +57 50.00 35.00 19.00 557.00 677.00 10.00 +58 30.00 25.00 23.00 397.00 517.00 10.00 +59 15.00 10.00 20.00 782.00 902.00 10.00 +60 10.00 20.00 19.00 42.00 162.00 10.00 +61 15.00 60.00 17.00 694.00 814.00 10.00 +62 45.00 65.00 9.00 258.00 378.00 10.00 +63 65.00 35.00 3.00 167.00 287.00 10.00 +64 65.00 20.00 6.00 39.00 159.00 10.00 +65 45.00 30.00 17.00 191.00 311.00 10.00 +66 35.00 40.00 16.00 11.00 131.00 10.00 +67 41.00 37.00 16.00 566.00 686.00 10.00 +68 64.00 42.00 9.00 268.00 388.00 10.00 +69 40.00 60.00 21.00 612.00 732.00 10.00 +70 31.00 52.00 27.00 157.00 277.00 10.00 +71 35.00 69.00 23.00 810.00 930.00 10.00 +72 65.00 55.00 14.00 241.00 361.00 10.00 +73 63.00 65.00 8.00 60.00 180.00 10.00 +74 2.00 60.00 5.00 286.00 406.00 10.00 +75 20.00 20.00 8.00 645.00 765.00 10.00 +76 5.00 5.00 16.00 232.00 352.00 10.00 +77 60.00 12.00 31.00 268.00 388.00 10.00 +78 23.00 3.00 7.00 764.00 884.00 10.00 +79 8.00 56.00 27.00 365.00 485.00 10.00 +80 6.00 68.00 30.00 352.00 472.00 10.00 +81 47.00 47.00 13.00 822.00 942.00 10.00 +82 49.00 58.00 10.00 355.00 475.00 10.00 +83 27.00 43.00 9.00 152.00 272.00 10.00 +84 37.00 31.00 14.00 105.00 225.00 10.00 +85 57.00 29.00 18.00 395.00 515.00 10.00 +86 63.00 23.00 2.00 344.00 464.00 10.00 +87 21.00 24.00 28.00 349.00 469.00 10.00 +88 12.00 24.00 13.00 359.00 479.00 10.00 +89 24.00 58.00 19.00 260.00 380.00 10.00 +90 67.00 5.00 25.00 713.00 833.00 10.00 +91 37.00 47.00 6.00 359.00 479.00 10.00 +92 49.00 42.00 13.00 719.00 839.00 10.00 +93 53.00 43.00 14.00 14.00 134.00 10.00 +94 61.00 52.00 3.00 808.00 928.00 10.00 +95 57.00 48.00 23.00 392.00 512.00 10.00 +96 56.00 37.00 6.00 100.00 220.00 10.00 +97 55.00 54.00 26.00 562.00 682.00 10.00 +98 4.00 18.00 35.00 547.00 667.00 10.00 +99 26.00 52.00 9.00 172.00 292.00 10.00 +100 26.00 35.00 15.00 308.00 428.00 10.00 +101 31.00 67.00 3.00 810.00 930.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc202.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc202.dat new file mode 100644 index 000000000..24ae5425f --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc202.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 960.00 0.00 +2 25.00 85.00 20.00 0.00 911.00 10.00 +3 22.00 75.00 30.00 0.00 919.00 10.00 +4 22.00 85.00 10.00 0.00 910.00 10.00 +5 20.00 80.00 40.00 644.00 764.00 10.00 +6 20.00 85.00 20.00 0.00 909.00 10.00 +7 18.00 75.00 20.00 388.00 508.00 10.00 +8 15.00 75.00 20.00 0.00 914.00 10.00 +9 15.00 80.00 10.00 367.00 487.00 10.00 +10 10.00 35.00 20.00 371.00 491.00 10.00 +11 10.00 40.00 30.00 519.00 639.00 10.00 +12 8.00 40.00 40.00 195.00 315.00 10.00 +13 8.00 45.00 20.00 0.00 917.00 10.00 +14 5.00 35.00 10.00 653.00 773.00 10.00 +15 5.00 45.00 10.00 35.00 155.00 10.00 +16 2.00 40.00 20.00 174.00 294.00 10.00 +17 0.00 40.00 20.00 255.00 375.00 10.00 +18 0.00 45.00 20.00 703.00 823.00 10.00 +19 44.00 5.00 20.00 335.00 455.00 10.00 +20 42.00 10.00 40.00 254.00 374.00 10.00 +21 42.00 15.00 10.00 537.00 657.00 10.00 +22 40.00 5.00 10.00 0.00 905.00 10.00 +23 40.00 15.00 40.00 375.00 495.00 10.00 +24 38.00 5.00 30.00 201.00 321.00 10.00 +25 38.00 15.00 10.00 681.00 801.00 10.00 +26 35.00 5.00 20.00 784.00 904.00 10.00 +27 95.00 30.00 30.00 0.00 891.00 10.00 +28 95.00 35.00 20.00 146.00 266.00 10.00 +29 92.00 30.00 10.00 149.00 269.00 10.00 +30 90.00 35.00 10.00 194.00 314.00 10.00 +31 88.00 30.00 10.00 246.00 366.00 10.00 +32 88.00 35.00 20.00 0.00 899.00 10.00 +33 87.00 30.00 10.00 621.00 741.00 10.00 +34 85.00 25.00 10.00 80.00 200.00 10.00 +35 85.00 35.00 30.00 0.00 902.00 10.00 +36 67.00 85.00 20.00 657.00 777.00 10.00 +37 65.00 85.00 40.00 43.00 163.00 10.00 +38 65.00 82.00 10.00 0.00 909.00 10.00 +39 62.00 80.00 30.00 278.00 398.00 10.00 +40 60.00 80.00 10.00 64.00 184.00 10.00 +41 60.00 85.00 30.00 329.00 449.00 10.00 +42 58.00 75.00 20.00 376.00 496.00 10.00 +43 55.00 80.00 10.00 33.00 153.00 10.00 +44 55.00 85.00 20.00 574.00 694.00 10.00 +45 55.00 82.00 10.00 217.00 337.00 10.00 +46 20.00 82.00 10.00 37.00 157.00 10.00 +47 18.00 80.00 10.00 489.00 609.00 10.00 +48 2.00 45.00 10.00 105.00 225.00 10.00 +49 42.00 5.00 10.00 0.00 904.00 10.00 +50 42.00 12.00 10.00 440.00 560.00 10.00 +51 72.00 35.00 30.00 0.00 914.00 10.00 +52 55.00 20.00 19.00 326.00 446.00 10.00 +53 25.00 30.00 3.00 0.00 925.00 10.00 +54 20.00 50.00 5.00 375.00 495.00 10.00 +55 55.00 60.00 16.00 601.00 721.00 10.00 +56 30.00 60.00 16.00 599.00 719.00 10.00 +57 50.00 35.00 19.00 557.00 677.00 10.00 +58 30.00 25.00 23.00 397.00 517.00 10.00 +59 15.00 10.00 20.00 782.00 902.00 10.00 +60 10.00 20.00 19.00 0.00 907.00 10.00 +61 15.00 60.00 17.00 694.00 814.00 10.00 +62 45.00 65.00 9.00 258.00 378.00 10.00 +63 65.00 35.00 3.00 167.00 287.00 10.00 +64 65.00 20.00 6.00 39.00 159.00 10.00 +65 45.00 30.00 17.00 191.00 311.00 10.00 +66 35.00 40.00 16.00 11.00 131.00 10.00 +67 41.00 37.00 16.00 566.00 686.00 10.00 +68 64.00 42.00 9.00 268.00 388.00 10.00 +69 40.00 60.00 21.00 612.00 732.00 10.00 +70 31.00 52.00 27.00 157.00 277.00 10.00 +71 35.00 69.00 23.00 810.00 930.00 10.00 +72 65.00 55.00 14.00 241.00 361.00 10.00 +73 63.00 65.00 8.00 0.00 922.00 10.00 +74 2.00 60.00 5.00 286.00 406.00 10.00 +75 20.00 20.00 8.00 645.00 765.00 10.00 +76 5.00 5.00 16.00 0.00 892.00 10.00 +77 60.00 12.00 31.00 268.00 388.00 10.00 +78 23.00 3.00 7.00 764.00 884.00 10.00 +79 8.00 56.00 27.00 365.00 485.00 10.00 +80 6.00 68.00 30.00 352.00 472.00 10.00 +81 47.00 47.00 13.00 822.00 942.00 10.00 +82 49.00 58.00 10.00 355.00 475.00 10.00 +83 27.00 43.00 9.00 0.00 935.00 10.00 +84 37.00 31.00 14.00 0.00 930.00 10.00 +85 57.00 29.00 18.00 395.00 515.00 10.00 +86 63.00 23.00 2.00 0.00 914.00 10.00 +87 21.00 24.00 28.00 349.00 469.00 10.00 +88 12.00 24.00 13.00 359.00 479.00 10.00 +89 24.00 58.00 19.00 260.00 380.00 10.00 +90 67.00 5.00 25.00 713.00 833.00 10.00 +91 37.00 47.00 6.00 359.00 479.00 10.00 +92 49.00 42.00 13.00 0.00 937.00 10.00 +93 53.00 43.00 14.00 14.00 134.00 10.00 +94 61.00 52.00 3.00 808.00 928.00 10.00 +95 57.00 48.00 23.00 0.00 932.00 10.00 +96 56.00 37.00 6.00 0.00 929.00 10.00 +97 55.00 54.00 26.00 0.00 934.00 10.00 +98 4.00 18.00 35.00 547.00 667.00 10.00 +99 26.00 52.00 9.00 0.00 935.00 10.00 +100 26.00 35.00 15.00 308.00 428.00 10.00 +101 31.00 67.00 3.00 810.00 930.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc203.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc203.dat new file mode 100644 index 000000000..c17a9d7f6 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc203.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 960.00 0.00 +2 25.00 85.00 20.00 0.00 911.00 10.00 +3 22.00 75.00 30.00 0.00 919.00 10.00 +4 22.00 85.00 10.00 0.00 910.00 10.00 +5 20.00 80.00 40.00 644.00 764.00 10.00 +6 20.00 85.00 20.00 0.00 909.00 10.00 +7 18.00 75.00 20.00 388.00 508.00 10.00 +8 15.00 75.00 20.00 0.00 914.00 10.00 +9 15.00 80.00 10.00 367.00 487.00 10.00 +10 10.00 35.00 20.00 371.00 491.00 10.00 +11 10.00 40.00 30.00 519.00 639.00 10.00 +12 8.00 40.00 40.00 195.00 315.00 10.00 +13 8.00 45.00 20.00 0.00 917.00 10.00 +14 5.00 35.00 10.00 653.00 773.00 10.00 +15 5.00 45.00 10.00 0.00 914.00 10.00 +16 2.00 40.00 20.00 174.00 294.00 10.00 +17 0.00 40.00 20.00 0.00 908.00 10.00 +18 0.00 45.00 20.00 703.00 823.00 10.00 +19 44.00 5.00 20.00 0.00 904.00 10.00 +20 42.00 10.00 40.00 0.00 909.00 10.00 +21 42.00 15.00 10.00 0.00 914.00 10.00 +22 40.00 5.00 10.00 0.00 905.00 10.00 +23 40.00 15.00 40.00 375.00 495.00 10.00 +24 38.00 5.00 30.00 201.00 321.00 10.00 +25 38.00 15.00 10.00 0.00 914.00 10.00 +26 35.00 5.00 20.00 784.00 904.00 10.00 +27 95.00 30.00 30.00 0.00 891.00 10.00 +28 95.00 35.00 20.00 146.00 266.00 10.00 +29 92.00 30.00 10.00 0.00 894.00 10.00 +30 90.00 35.00 10.00 0.00 897.00 10.00 +31 88.00 30.00 10.00 246.00 366.00 10.00 +32 88.00 35.00 20.00 0.00 899.00 10.00 +33 87.00 30.00 10.00 0.00 898.00 10.00 +34 85.00 25.00 10.00 80.00 200.00 10.00 +35 85.00 35.00 30.00 0.00 902.00 10.00 +36 67.00 85.00 20.00 657.00 777.00 10.00 +37 65.00 85.00 40.00 43.00 163.00 10.00 +38 65.00 82.00 10.00 0.00 909.00 10.00 +39 62.00 80.00 30.00 278.00 398.00 10.00 +40 60.00 80.00 10.00 64.00 184.00 10.00 +41 60.00 85.00 30.00 329.00 449.00 10.00 +42 58.00 75.00 20.00 376.00 496.00 10.00 +43 55.00 80.00 10.00 33.00 153.00 10.00 +44 55.00 85.00 20.00 0.00 911.00 10.00 +45 55.00 82.00 10.00 217.00 337.00 10.00 +46 20.00 82.00 10.00 37.00 157.00 10.00 +47 18.00 80.00 10.00 0.00 912.00 10.00 +48 2.00 45.00 10.00 0.00 911.00 10.00 +49 42.00 5.00 10.00 0.00 904.00 10.00 +50 42.00 12.00 10.00 440.00 560.00 10.00 +51 72.00 35.00 30.00 0.00 914.00 10.00 +52 55.00 20.00 19.00 0.00 916.00 10.00 +53 25.00 30.00 3.00 0.00 925.00 10.00 +54 20.00 50.00 5.00 375.00 495.00 10.00 +55 55.00 60.00 16.00 0.00 931.00 10.00 +56 30.00 60.00 16.00 599.00 719.00 10.00 +57 50.00 35.00 19.00 557.00 677.00 10.00 +58 30.00 25.00 23.00 0.00 923.00 10.00 +59 15.00 10.00 20.00 782.00 902.00 10.00 +60 10.00 20.00 19.00 0.00 907.00 10.00 +61 15.00 60.00 17.00 0.00 923.00 10.00 +62 45.00 65.00 9.00 0.00 934.00 10.00 +63 65.00 35.00 3.00 167.00 287.00 10.00 +64 65.00 20.00 6.00 0.00 910.00 10.00 +65 45.00 30.00 17.00 191.00 311.00 10.00 +66 35.00 40.00 16.00 11.00 131.00 10.00 +67 41.00 37.00 16.00 566.00 686.00 10.00 +68 64.00 42.00 9.00 268.00 388.00 10.00 +69 40.00 60.00 21.00 612.00 732.00 10.00 +70 31.00 52.00 27.00 157.00 277.00 10.00 +71 35.00 69.00 23.00 810.00 930.00 10.00 +72 65.00 55.00 14.00 0.00 924.00 10.00 +73 63.00 65.00 8.00 0.00 922.00 10.00 +74 2.00 60.00 5.00 0.00 910.00 10.00 +75 20.00 20.00 8.00 645.00 765.00 10.00 +76 5.00 5.00 16.00 0.00 892.00 10.00 +77 60.00 12.00 31.00 268.00 388.00 10.00 +78 23.00 3.00 7.00 764.00 884.00 10.00 +79 8.00 56.00 27.00 365.00 485.00 10.00 +80 6.00 68.00 30.00 352.00 472.00 10.00 +81 47.00 47.00 13.00 822.00 942.00 10.00 +82 49.00 58.00 10.00 0.00 937.00 10.00 +83 27.00 43.00 9.00 0.00 935.00 10.00 +84 37.00 31.00 14.00 0.00 930.00 10.00 +85 57.00 29.00 18.00 395.00 515.00 10.00 +86 63.00 23.00 2.00 0.00 914.00 10.00 +87 21.00 24.00 28.00 0.00 917.00 10.00 +88 12.00 24.00 13.00 359.00 479.00 10.00 +89 24.00 58.00 19.00 260.00 380.00 10.00 +90 67.00 5.00 25.00 0.00 897.00 10.00 +91 37.00 47.00 6.00 0.00 945.00 10.00 +92 49.00 42.00 13.00 0.00 937.00 10.00 +93 53.00 43.00 14.00 14.00 134.00 10.00 +94 61.00 52.00 3.00 808.00 928.00 10.00 +95 57.00 48.00 23.00 0.00 932.00 10.00 +96 56.00 37.00 6.00 0.00 929.00 10.00 +97 55.00 54.00 26.00 0.00 934.00 10.00 +98 4.00 18.00 35.00 0.00 901.00 10.00 +99 26.00 52.00 9.00 0.00 935.00 10.00 +100 26.00 35.00 15.00 308.00 428.00 10.00 +101 31.00 67.00 3.00 810.00 930.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc204.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc204.dat new file mode 100644 index 000000000..9579eec89 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc204.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 960.00 0.00 +2 25.00 85.00 20.00 0.00 911.00 10.00 +3 22.00 75.00 30.00 0.00 919.00 10.00 +4 22.00 85.00 10.00 0.00 910.00 10.00 +5 20.00 80.00 40.00 644.00 764.00 10.00 +6 20.00 85.00 20.00 0.00 909.00 10.00 +7 18.00 75.00 20.00 0.00 916.00 10.00 +8 15.00 75.00 20.00 0.00 914.00 10.00 +9 15.00 80.00 10.00 367.00 487.00 10.00 +10 10.00 35.00 20.00 371.00 491.00 10.00 +11 10.00 40.00 30.00 0.00 918.00 10.00 +12 8.00 40.00 40.00 195.00 315.00 10.00 +13 8.00 45.00 20.00 0.00 917.00 10.00 +14 5.00 35.00 10.00 653.00 773.00 10.00 +15 5.00 45.00 10.00 0.00 914.00 10.00 +16 2.00 40.00 20.00 174.00 294.00 10.00 +17 0.00 40.00 20.00 0.00 908.00 10.00 +18 0.00 45.00 20.00 0.00 909.00 10.00 +19 44.00 5.00 20.00 0.00 904.00 10.00 +20 42.00 10.00 40.00 0.00 909.00 10.00 +21 42.00 15.00 10.00 0.00 914.00 10.00 +22 40.00 5.00 10.00 0.00 905.00 10.00 +23 40.00 15.00 40.00 0.00 915.00 10.00 +24 38.00 5.00 30.00 201.00 321.00 10.00 +25 38.00 15.00 10.00 0.00 914.00 10.00 +26 35.00 5.00 20.00 784.00 904.00 10.00 +27 95.00 30.00 30.00 0.00 891.00 10.00 +28 95.00 35.00 20.00 0.00 892.00 10.00 +29 92.00 30.00 10.00 0.00 894.00 10.00 +30 90.00 35.00 10.00 0.00 897.00 10.00 +31 88.00 30.00 10.00 0.00 898.00 10.00 +32 88.00 35.00 20.00 0.00 899.00 10.00 +33 87.00 30.00 10.00 0.00 898.00 10.00 +34 85.00 25.00 10.00 0.00 898.00 10.00 +35 85.00 35.00 30.00 0.00 902.00 10.00 +36 67.00 85.00 20.00 0.00 905.00 10.00 +37 65.00 85.00 40.00 0.00 906.00 10.00 +38 65.00 82.00 10.00 0.00 909.00 10.00 +39 62.00 80.00 30.00 278.00 398.00 10.00 +40 60.00 80.00 10.00 0.00 913.00 10.00 +41 60.00 85.00 30.00 0.00 909.00 10.00 +42 58.00 75.00 20.00 0.00 919.00 10.00 +43 55.00 80.00 10.00 0.00 916.00 10.00 +44 55.00 85.00 20.00 0.00 911.00 10.00 +45 55.00 82.00 10.00 217.00 337.00 10.00 +46 20.00 82.00 10.00 0.00 912.00 10.00 +47 18.00 80.00 10.00 0.00 912.00 10.00 +48 2.00 45.00 10.00 0.00 911.00 10.00 +49 42.00 5.00 10.00 0.00 904.00 10.00 +50 42.00 12.00 10.00 0.00 911.00 10.00 +51 72.00 35.00 30.00 0.00 914.00 10.00 +52 55.00 20.00 19.00 0.00 916.00 10.00 +53 25.00 30.00 3.00 0.00 925.00 10.00 +54 20.00 50.00 5.00 375.00 495.00 10.00 +55 55.00 60.00 16.00 0.00 931.00 10.00 +56 30.00 60.00 16.00 599.00 719.00 10.00 +57 50.00 35.00 19.00 0.00 931.00 10.00 +58 30.00 25.00 23.00 0.00 923.00 10.00 +59 15.00 10.00 20.00 782.00 902.00 10.00 +60 10.00 20.00 19.00 0.00 907.00 10.00 +61 15.00 60.00 17.00 0.00 923.00 10.00 +62 45.00 65.00 9.00 0.00 934.00 10.00 +63 65.00 35.00 3.00 167.00 287.00 10.00 +64 65.00 20.00 6.00 0.00 910.00 10.00 +65 45.00 30.00 17.00 0.00 929.00 10.00 +66 35.00 40.00 16.00 0.00 938.00 10.00 +67 41.00 37.00 16.00 0.00 936.00 10.00 +68 64.00 42.00 9.00 268.00 388.00 10.00 +69 40.00 60.00 21.00 0.00 940.00 10.00 +70 31.00 52.00 27.00 157.00 277.00 10.00 +71 35.00 69.00 23.00 0.00 930.00 10.00 +72 65.00 55.00 14.00 0.00 924.00 10.00 +73 63.00 65.00 8.00 0.00 922.00 10.00 +74 2.00 60.00 5.00 0.00 910.00 10.00 +75 20.00 20.00 8.00 645.00 765.00 10.00 +76 5.00 5.00 16.00 0.00 892.00 10.00 +77 60.00 12.00 31.00 268.00 388.00 10.00 +78 23.00 3.00 7.00 764.00 884.00 10.00 +79 8.00 56.00 27.00 0.00 917.00 10.00 +80 6.00 68.00 30.00 352.00 472.00 10.00 +81 47.00 47.00 13.00 0.00 942.00 10.00 +82 49.00 58.00 10.00 0.00 937.00 10.00 +83 27.00 43.00 9.00 0.00 935.00 10.00 +84 37.00 31.00 14.00 0.00 930.00 10.00 +85 57.00 29.00 18.00 395.00 515.00 10.00 +86 63.00 23.00 2.00 0.00 914.00 10.00 +87 21.00 24.00 28.00 0.00 917.00 10.00 +88 12.00 24.00 13.00 359.00 479.00 10.00 +89 24.00 58.00 19.00 0.00 932.00 10.00 +90 67.00 5.00 25.00 0.00 897.00 10.00 +91 37.00 47.00 6.00 0.00 945.00 10.00 +92 49.00 42.00 13.00 0.00 937.00 10.00 +93 53.00 43.00 14.00 14.00 134.00 10.00 +94 61.00 52.00 3.00 0.00 928.00 10.00 +95 57.00 48.00 23.00 0.00 932.00 10.00 +96 56.00 37.00 6.00 0.00 929.00 10.00 +97 55.00 54.00 26.00 0.00 934.00 10.00 +98 4.00 18.00 35.00 0.00 901.00 10.00 +99 26.00 52.00 9.00 0.00 935.00 10.00 +100 26.00 35.00 15.00 308.00 428.00 10.00 +101 31.00 67.00 3.00 810.00 930.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc205.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc205.dat new file mode 100644 index 000000000..6a06bc56c --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc205.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 960.00 0.00 +2 25.00 85.00 20.00 431.00 911.00 10.00 +3 22.00 75.00 30.00 30.00 510.00 10.00 +4 22.00 85.00 10.00 291.00 771.00 10.00 +5 20.00 80.00 40.00 674.00 734.00 10.00 +6 20.00 85.00 20.00 40.00 520.00 10.00 +7 18.00 75.00 20.00 393.00 502.00 10.00 +8 15.00 75.00 20.00 120.00 600.00 10.00 +9 15.00 80.00 10.00 397.00 457.00 10.00 +10 10.00 35.00 20.00 401.00 461.00 10.00 +11 10.00 40.00 30.00 535.00 622.00 10.00 +12 8.00 40.00 40.00 225.00 285.00 10.00 +13 8.00 45.00 20.00 43.00 523.00 10.00 +14 5.00 35.00 10.00 683.00 743.00 10.00 +15 5.00 45.00 10.00 35.00 366.00 10.00 +16 2.00 40.00 20.00 204.00 264.00 10.00 +17 0.00 40.00 20.00 204.00 425.00 10.00 +18 0.00 45.00 20.00 698.00 827.00 10.00 +19 44.00 5.00 20.00 306.00 483.00 10.00 +20 42.00 10.00 40.00 199.00 428.00 10.00 +21 42.00 15.00 10.00 494.00 699.00 10.00 +22 40.00 5.00 10.00 45.00 525.00 10.00 +23 40.00 15.00 40.00 383.00 486.00 10.00 +24 38.00 5.00 30.00 231.00 291.00 10.00 +25 38.00 15.00 10.00 609.00 872.00 10.00 +26 35.00 5.00 20.00 821.00 881.00 10.00 +27 95.00 30.00 30.00 349.00 829.00 10.00 +28 95.00 35.00 20.00 138.00 273.00 10.00 +29 92.00 30.00 10.00 78.00 339.00 10.00 +30 90.00 35.00 10.00 132.00 375.00 10.00 +31 88.00 30.00 10.00 252.00 359.00 10.00 +32 88.00 35.00 20.00 50.00 530.00 10.00 +33 87.00 30.00 10.00 562.00 799.00 10.00 +34 85.00 25.00 10.00 71.00 208.00 10.00 +35 85.00 35.00 30.00 307.00 787.00 10.00 +36 67.00 85.00 20.00 655.00 778.00 10.00 +37 65.00 85.00 40.00 43.00 186.00 10.00 +38 65.00 82.00 10.00 377.00 857.00 10.00 +39 62.00 80.00 30.00 308.00 368.00 10.00 +40 60.00 80.00 10.00 46.00 201.00 10.00 +41 60.00 85.00 30.00 339.00 438.00 10.00 +42 58.00 75.00 20.00 377.00 494.00 10.00 +43 55.00 80.00 10.00 33.00 166.00 10.00 +44 55.00 85.00 20.00 531.00 736.00 10.00 +45 55.00 82.00 10.00 247.00 307.00 10.00 +46 20.00 82.00 10.00 37.00 177.00 10.00 +47 18.00 80.00 10.00 432.00 665.00 10.00 +48 2.00 45.00 10.00 38.00 322.00 10.00 +49 42.00 5.00 10.00 424.00 904.00 10.00 +50 42.00 12.00 10.00 460.00 539.00 10.00 +51 72.00 35.00 30.00 327.00 807.00 10.00 +52 55.00 20.00 19.00 273.00 498.00 10.00 +53 25.00 30.00 3.00 25.00 505.00 10.00 +54 20.00 50.00 5.00 405.00 465.00 10.00 +55 55.00 60.00 16.00 554.00 767.00 10.00 +56 30.00 60.00 16.00 629.00 689.00 10.00 +57 50.00 35.00 19.00 560.00 673.00 10.00 +58 30.00 25.00 23.00 342.00 571.00 10.00 +59 15.00 10.00 20.00 842.00 902.00 10.00 +60 10.00 20.00 19.00 42.00 522.00 10.00 +61 15.00 60.00 17.00 623.00 884.00 10.00 +62 45.00 65.00 9.00 214.00 421.00 10.00 +63 65.00 35.00 3.00 197.00 257.00 10.00 +64 65.00 20.00 6.00 39.00 316.00 10.00 +65 45.00 30.00 17.00 191.00 310.00 10.00 +66 35.00 40.00 16.00 11.00 140.00 10.00 +67 41.00 37.00 16.00 570.00 681.00 10.00 +68 64.00 42.00 9.00 298.00 358.00 10.00 +69 40.00 60.00 21.00 613.00 730.00 10.00 +70 31.00 52.00 27.00 187.00 247.00 10.00 +71 35.00 69.00 23.00 780.00 930.00 10.00 +72 65.00 55.00 14.00 191.00 410.00 10.00 +73 63.00 65.00 8.00 27.00 507.00 10.00 +74 2.00 60.00 5.00 240.00 451.00 10.00 +75 20.00 20.00 8.00 675.00 735.00 10.00 +76 5.00 5.00 16.00 57.00 537.00 10.00 +77 60.00 12.00 31.00 298.00 358.00 10.00 +78 23.00 3.00 7.00 794.00 854.00 10.00 +79 8.00 56.00 27.00 366.00 483.00 10.00 +80 6.00 68.00 30.00 382.00 442.00 10.00 +81 47.00 47.00 13.00 817.00 942.00 10.00 +82 49.00 58.00 10.00 332.00 497.00 10.00 +83 27.00 43.00 9.00 14.00 494.00 10.00 +84 37.00 31.00 14.00 19.00 499.00 10.00 +85 57.00 29.00 18.00 425.00 485.00 10.00 +86 63.00 23.00 2.00 164.00 644.00 10.00 +87 21.00 24.00 28.00 310.00 507.00 10.00 +88 12.00 24.00 13.00 389.00 449.00 10.00 +89 24.00 58.00 19.00 262.00 377.00 10.00 +90 67.00 5.00 25.00 611.00 897.00 10.00 +91 37.00 47.00 6.00 311.00 526.00 10.00 +92 49.00 42.00 13.00 457.00 937.00 10.00 +93 53.00 43.00 14.00 14.00 74.00 10.00 +94 61.00 52.00 3.00 789.00 928.00 10.00 +95 57.00 48.00 23.00 212.00 692.00 10.00 +96 56.00 37.00 6.00 20.00 500.00 10.00 +97 55.00 54.00 26.00 382.00 862.00 10.00 +98 4.00 18.00 35.00 516.00 697.00 10.00 +99 26.00 52.00 9.00 14.00 494.00 10.00 +100 26.00 35.00 15.00 338.00 398.00 10.00 +101 31.00 67.00 3.00 870.00 930.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc206.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc206.dat new file mode 100644 index 000000000..1a193f43d --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc206.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 960.00 0.00 +2 25.00 85.00 20.00 613.00 853.00 10.00 +3 22.00 75.00 30.00 92.00 332.00 10.00 +4 22.00 85.00 10.00 411.00 651.00 10.00 +5 20.00 80.00 40.00 584.00 824.00 10.00 +6 20.00 85.00 20.00 40.00 280.00 10.00 +7 18.00 75.00 20.00 328.00 568.00 10.00 +8 15.00 75.00 20.00 240.00 480.00 10.00 +9 15.00 80.00 10.00 307.00 547.00 10.00 +10 10.00 35.00 20.00 311.00 551.00 10.00 +11 10.00 40.00 30.00 459.00 699.00 10.00 +12 8.00 40.00 40.00 135.00 375.00 10.00 +13 8.00 45.00 20.00 163.00 403.00 10.00 +14 5.00 35.00 10.00 593.00 833.00 10.00 +15 5.00 45.00 10.00 35.00 275.00 10.00 +16 2.00 40.00 20.00 114.00 354.00 10.00 +17 0.00 40.00 20.00 195.00 435.00 10.00 +18 0.00 45.00 20.00 643.00 883.00 10.00 +19 44.00 5.00 20.00 275.00 515.00 10.00 +20 42.00 10.00 40.00 194.00 434.00 10.00 +21 42.00 15.00 10.00 477.00 717.00 10.00 +22 40.00 5.00 10.00 155.00 395.00 10.00 +23 40.00 15.00 40.00 315.00 555.00 10.00 +24 38.00 5.00 30.00 141.00 381.00 10.00 +25 38.00 15.00 10.00 621.00 861.00 10.00 +26 35.00 5.00 20.00 664.00 904.00 10.00 +27 95.00 30.00 30.00 469.00 709.00 10.00 +28 95.00 35.00 20.00 86.00 326.00 10.00 +29 92.00 30.00 10.00 89.00 329.00 10.00 +30 90.00 35.00 10.00 134.00 374.00 10.00 +31 88.00 30.00 10.00 186.00 426.00 10.00 +32 88.00 35.00 20.00 105.00 345.00 10.00 +33 87.00 30.00 10.00 561.00 801.00 10.00 +34 85.00 25.00 10.00 51.00 291.00 10.00 +35 85.00 35.00 30.00 427.00 667.00 10.00 +36 67.00 85.00 20.00 597.00 837.00 10.00 +37 65.00 85.00 40.00 43.00 283.00 10.00 +38 65.00 82.00 10.00 497.00 737.00 10.00 +39 62.00 80.00 30.00 218.00 458.00 10.00 +40 60.00 80.00 10.00 36.00 276.00 10.00 +41 60.00 85.00 30.00 269.00 509.00 10.00 +42 58.00 75.00 20.00 316.00 556.00 10.00 +43 55.00 80.00 10.00 33.00 273.00 10.00 +44 55.00 85.00 20.00 514.00 754.00 10.00 +45 55.00 82.00 10.00 157.00 397.00 10.00 +46 20.00 82.00 10.00 37.00 277.00 10.00 +47 18.00 80.00 10.00 429.00 669.00 10.00 +48 2.00 45.00 10.00 45.00 285.00 10.00 +49 42.00 5.00 10.00 664.00 904.00 10.00 +50 42.00 12.00 10.00 380.00 620.00 10.00 +51 72.00 35.00 30.00 447.00 687.00 10.00 +52 55.00 20.00 19.00 266.00 506.00 10.00 +53 25.00 30.00 3.00 115.00 355.00 10.00 +54 20.00 50.00 5.00 315.00 555.00 10.00 +55 55.00 60.00 16.00 541.00 781.00 10.00 +56 30.00 60.00 16.00 539.00 779.00 10.00 +57 50.00 35.00 19.00 497.00 737.00 10.00 +58 30.00 25.00 23.00 337.00 577.00 10.00 +59 15.00 10.00 20.00 662.00 902.00 10.00 +60 10.00 20.00 19.00 42.00 282.00 10.00 +61 15.00 60.00 17.00 634.00 874.00 10.00 +62 45.00 65.00 9.00 198.00 438.00 10.00 +63 65.00 35.00 3.00 107.00 347.00 10.00 +64 65.00 20.00 6.00 39.00 279.00 10.00 +65 45.00 30.00 17.00 131.00 371.00 10.00 +66 35.00 40.00 16.00 11.00 251.00 10.00 +67 41.00 37.00 16.00 506.00 746.00 10.00 +68 64.00 42.00 9.00 208.00 448.00 10.00 +69 40.00 60.00 21.00 552.00 792.00 10.00 +70 31.00 52.00 27.00 97.00 337.00 10.00 +71 35.00 69.00 23.00 690.00 930.00 10.00 +72 65.00 55.00 14.00 181.00 421.00 10.00 +73 63.00 65.00 8.00 27.00 267.00 10.00 +74 2.00 60.00 5.00 226.00 466.00 10.00 +75 20.00 20.00 8.00 585.00 825.00 10.00 +76 5.00 5.00 16.00 172.00 412.00 10.00 +77 60.00 12.00 31.00 208.00 448.00 10.00 +78 23.00 3.00 7.00 660.00 900.00 10.00 +79 8.00 56.00 27.00 305.00 545.00 10.00 +80 6.00 68.00 30.00 292.00 532.00 10.00 +81 47.00 47.00 13.00 702.00 942.00 10.00 +82 49.00 58.00 10.00 295.00 535.00 10.00 +83 27.00 43.00 9.00 92.00 332.00 10.00 +84 37.00 31.00 14.00 45.00 285.00 10.00 +85 57.00 29.00 18.00 335.00 575.00 10.00 +86 63.00 23.00 2.00 284.00 524.00 10.00 +87 21.00 24.00 28.00 289.00 529.00 10.00 +88 12.00 24.00 13.00 299.00 539.00 10.00 +89 24.00 58.00 19.00 200.00 440.00 10.00 +90 67.00 5.00 25.00 653.00 893.00 10.00 +91 37.00 47.00 6.00 299.00 539.00 10.00 +92 49.00 42.00 13.00 659.00 899.00 10.00 +93 53.00 43.00 14.00 14.00 254.00 10.00 +94 61.00 52.00 3.00 688.00 928.00 10.00 +95 57.00 48.00 23.00 332.00 572.00 10.00 +96 56.00 37.00 6.00 40.00 280.00 10.00 +97 55.00 54.00 26.00 502.00 742.00 10.00 +98 4.00 18.00 35.00 487.00 727.00 10.00 +99 26.00 52.00 9.00 112.00 352.00 10.00 +100 26.00 35.00 15.00 248.00 488.00 10.00 +101 31.00 67.00 3.00 690.00 930.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc207.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc207.dat new file mode 100644 index 000000000..61c74c22c --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc207.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 960.00 0.00 +2 25.00 85.00 20.00 591.00 874.00 10.00 +3 22.00 75.00 30.00 73.00 350.00 10.00 +4 22.00 85.00 10.00 473.00 588.00 10.00 +5 20.00 80.00 40.00 418.00 913.00 10.00 +6 20.00 85.00 20.00 40.00 390.00 10.00 +7 18.00 75.00 20.00 249.00 646.00 10.00 +8 15.00 75.00 20.00 281.00 438.00 10.00 +9 15.00 80.00 10.00 272.00 581.00 10.00 +10 10.00 35.00 20.00 236.00 625.00 10.00 +11 10.00 40.00 30.00 470.00 687.00 10.00 +12 8.00 40.00 40.00 33.00 510.00 10.00 +13 8.00 45.00 20.00 166.00 399.00 10.00 +14 5.00 35.00 10.00 359.00 911.00 10.00 +15 5.00 45.00 10.00 35.00 457.00 10.00 +16 2.00 40.00 20.00 39.00 538.00 10.00 +17 0.00 40.00 20.00 214.00 415.00 10.00 +18 0.00 45.00 20.00 359.00 909.00 10.00 +19 44.00 5.00 20.00 338.00 451.00 10.00 +20 42.00 10.00 40.00 205.00 422.00 10.00 +21 42.00 15.00 10.00 511.00 682.00 10.00 +22 40.00 5.00 10.00 158.00 391.00 10.00 +23 40.00 15.00 40.00 263.00 606.00 10.00 +24 38.00 5.00 30.00 45.00 522.00 10.00 +25 38.00 15.00 10.00 598.00 883.00 10.00 +26 35.00 5.00 20.00 348.00 904.00 10.00 +27 95.00 30.00 30.00 509.00 668.00 10.00 +28 95.00 35.00 20.00 57.00 664.00 10.00 +29 92.00 30.00 10.00 68.00 349.00 10.00 +30 90.00 35.00 10.00 131.00 376.00 10.00 +31 88.00 30.00 10.00 114.00 497.00 10.00 +32 88.00 35.00 20.00 102.00 347.00 10.00 +33 87.00 30.00 10.00 564.00 797.00 10.00 +34 85.00 25.00 10.00 51.00 673.00 10.00 +35 85.00 35.00 30.00 462.00 631.00 10.00 +36 67.00 85.00 20.00 396.00 905.00 10.00 +37 65.00 85.00 40.00 43.00 712.00 10.00 +38 65.00 82.00 10.00 530.00 703.00 10.00 +39 62.00 80.00 30.00 131.00 544.00 10.00 +40 60.00 80.00 10.00 36.00 800.00 10.00 +41 60.00 85.00 30.00 233.00 544.00 10.00 +42 58.00 75.00 20.00 207.00 664.00 10.00 +43 55.00 80.00 10.00 33.00 624.00 10.00 +44 55.00 85.00 20.00 549.00 718.00 10.00 +45 55.00 82.00 10.00 62.00 491.00 10.00 +46 20.00 82.00 10.00 37.00 677.00 10.00 +47 18.00 80.00 10.00 435.00 662.00 10.00 +48 2.00 45.00 10.00 38.00 366.00 10.00 +49 42.00 5.00 10.00 636.00 904.00 10.00 +50 42.00 12.00 10.00 423.00 576.00 10.00 +51 72.00 35.00 30.00 471.00 662.00 10.00 +52 55.00 20.00 19.00 281.00 490.00 10.00 +53 25.00 30.00 3.00 109.00 360.00 10.00 +54 20.00 50.00 5.00 284.00 585.00 10.00 +55 55.00 60.00 16.00 568.00 753.00 10.00 +56 30.00 60.00 16.00 421.00 896.00 10.00 +57 50.00 35.00 19.00 404.00 829.00 10.00 +58 30.00 25.00 23.00 347.00 566.00 10.00 +59 15.00 10.00 20.00 380.00 902.00 10.00 +60 10.00 20.00 19.00 42.00 466.00 10.00 +61 15.00 60.00 17.00 613.00 894.00 10.00 +62 45.00 65.00 9.00 230.00 405.00 10.00 +63 65.00 35.00 3.00 29.00 587.00 10.00 +64 65.00 20.00 6.00 39.00 353.00 10.00 +65 45.00 30.00 17.00 20.00 497.00 10.00 +66 35.00 40.00 16.00 11.00 570.00 10.00 +67 41.00 37.00 16.00 423.00 828.00 10.00 +68 64.00 42.00 9.00 112.00 543.00 10.00 +69 40.00 60.00 21.00 441.00 902.00 10.00 +70 31.00 52.00 27.00 9.00 532.00 10.00 +71 35.00 69.00 23.00 211.00 930.00 10.00 +72 65.00 55.00 14.00 201.00 400.00 10.00 +73 63.00 65.00 8.00 27.00 382.00 10.00 +74 2.00 60.00 5.00 255.00 436.00 10.00 +75 20.00 20.00 8.00 427.00 913.00 10.00 +76 5.00 5.00 16.00 183.00 400.00 10.00 +77 60.00 12.00 31.00 162.00 493.00 10.00 +78 23.00 3.00 7.00 360.00 900.00 10.00 +79 8.00 56.00 27.00 195.00 654.00 10.00 +80 6.00 68.00 30.00 258.00 565.00 10.00 +81 47.00 47.00 13.00 426.00 942.00 10.00 +82 49.00 58.00 10.00 369.00 460.00 10.00 +83 27.00 43.00 9.00 85.00 338.00 10.00 +84 37.00 31.00 14.00 19.00 326.00 10.00 +85 57.00 29.00 18.00 304.00 605.00 10.00 +86 63.00 23.00 2.00 318.00 489.00 10.00 +87 21.00 24.00 28.00 332.00 485.00 10.00 +88 12.00 24.00 13.00 365.00 472.00 10.00 +89 24.00 58.00 19.00 100.00 539.00 10.00 +90 67.00 5.00 25.00 565.00 897.00 10.00 +91 37.00 47.00 6.00 324.00 513.00 10.00 +92 49.00 42.00 13.00 651.00 906.00 10.00 +93 53.00 43.00 14.00 14.00 669.00 10.00 +94 61.00 52.00 3.00 298.00 928.00 10.00 +95 57.00 48.00 23.00 385.00 518.00 10.00 +96 56.00 37.00 6.00 20.00 299.00 10.00 +97 55.00 54.00 26.00 538.00 705.00 10.00 +98 4.00 18.00 35.00 546.00 667.00 10.00 +99 26.00 52.00 9.00 109.00 354.00 10.00 +100 26.00 35.00 15.00 170.00 565.00 10.00 +101 31.00 67.00 3.00 262.00 930.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc208.dat b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc208.dat new file mode 100644 index 000000000..9f39d8422 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/application/instances/solomon/rc208.dat @@ -0,0 +1,101 @@ +1 40.00 50.00 0.00 0.00 960.00 0.00 +2 25.00 85.00 20.00 388.00 911.00 10.00 +3 22.00 75.00 30.00 30.00 546.00 10.00 +4 22.00 85.00 10.00 353.00 708.00 10.00 +5 20.00 80.00 40.00 425.00 913.00 10.00 +6 20.00 85.00 20.00 40.00 630.00 10.00 +7 18.00 75.00 20.00 228.00 667.00 10.00 +8 15.00 75.00 20.00 161.00 558.00 10.00 +9 15.00 80.00 10.00 229.00 624.00 10.00 +10 10.00 35.00 20.00 213.00 648.00 10.00 +11 10.00 40.00 30.00 404.00 753.00 10.00 +12 8.00 40.00 40.00 33.00 511.00 10.00 +13 8.00 45.00 20.00 46.00 519.00 10.00 +14 5.00 35.00 10.00 395.00 911.00 10.00 +15 5.00 45.00 10.00 35.00 697.00 10.00 +16 2.00 40.00 20.00 39.00 528.00 10.00 +17 0.00 40.00 20.00 94.00 535.00 10.00 +18 0.00 45.00 20.00 394.00 909.00 10.00 +19 44.00 5.00 20.00 218.00 571.00 10.00 +20 42.00 10.00 40.00 85.00 542.00 10.00 +21 42.00 15.00 10.00 391.00 802.00 10.00 +22 40.00 5.00 10.00 45.00 517.00 10.00 +23 40.00 15.00 40.00 229.00 640.00 10.00 +24 38.00 5.00 30.00 45.00 523.00 10.00 +25 38.00 15.00 10.00 389.00 914.00 10.00 +26 35.00 5.00 20.00 386.00 904.00 10.00 +27 95.00 30.00 30.00 389.00 788.00 10.00 +28 95.00 35.00 20.00 57.00 600.00 10.00 +29 92.00 30.00 10.00 55.00 575.00 10.00 +30 90.00 35.00 10.00 52.00 536.00 10.00 +31 88.00 30.00 10.00 90.00 521.00 10.00 +32 88.00 35.00 20.00 50.00 534.00 10.00 +33 87.00 30.00 10.00 425.00 898.00 10.00 +34 85.00 25.00 10.00 51.00 602.00 10.00 +35 85.00 35.00 30.00 342.00 751.00 10.00 +36 67.00 85.00 20.00 410.00 905.00 10.00 +37 65.00 85.00 40.00 43.00 617.00 10.00 +38 65.00 82.00 10.00 410.00 823.00 10.00 +39 62.00 80.00 30.00 114.00 561.00 10.00 +40 60.00 80.00 10.00 36.00 658.00 10.00 +41 60.00 85.00 30.00 191.00 586.00 10.00 +42 58.00 75.00 20.00 201.00 670.00 10.00 +43 55.00 80.00 10.00 33.00 568.00 10.00 +44 55.00 85.00 20.00 429.00 838.00 10.00 +45 55.00 82.00 10.00 49.00 504.00 10.00 +46 20.00 82.00 10.00 37.00 597.00 10.00 +47 18.00 80.00 10.00 315.00 782.00 10.00 +48 2.00 45.00 10.00 38.00 606.00 10.00 +49 42.00 5.00 10.00 396.00 904.00 10.00 +50 42.00 12.00 10.00 341.00 658.00 10.00 +51 72.00 35.00 30.00 351.00 782.00 10.00 +52 55.00 20.00 19.00 161.00 610.00 10.00 +53 25.00 30.00 3.00 25.00 516.00 10.00 +54 20.00 50.00 5.00 239.00 630.00 10.00 +55 55.00 60.00 16.00 448.00 873.00 10.00 +56 30.00 60.00 16.00 420.00 897.00 10.00 +57 50.00 35.00 19.00 390.00 843.00 10.00 +58 30.00 25.00 23.00 227.00 686.00 10.00 +59 15.00 10.00 20.00 401.00 902.00 10.00 +60 10.00 20.00 19.00 42.00 706.00 10.00 +61 15.00 60.00 17.00 401.00 923.00 10.00 +62 45.00 65.00 9.00 110.00 525.00 10.00 +63 65.00 35.00 3.00 29.00 548.00 10.00 +64 65.00 20.00 6.00 39.00 593.00 10.00 +65 45.00 30.00 17.00 20.00 498.00 10.00 +66 35.00 40.00 16.00 11.00 530.00 10.00 +67 41.00 37.00 16.00 404.00 847.00 10.00 +68 64.00 42.00 9.00 100.00 555.00 10.00 +69 40.00 60.00 21.00 436.00 907.00 10.00 +70 31.00 52.00 27.00 9.00 510.00 10.00 +71 35.00 69.00 23.00 330.00 930.00 10.00 +72 65.00 55.00 14.00 81.00 520.00 10.00 +73 63.00 65.00 8.00 27.00 622.00 10.00 +74 2.00 60.00 5.00 135.00 556.00 10.00 +75 20.00 20.00 8.00 430.00 913.00 10.00 +76 5.00 5.00 16.00 63.00 520.00 10.00 +77 60.00 12.00 31.00 125.00 530.00 10.00 +78 23.00 3.00 7.00 390.00 900.00 10.00 +79 8.00 56.00 27.00 190.00 659.00 10.00 +80 6.00 68.00 30.00 215.00 608.00 10.00 +81 47.00 47.00 13.00 444.00 942.00 10.00 +82 49.00 58.00 10.00 249.00 580.00 10.00 +83 27.00 43.00 9.00 14.00 506.00 10.00 +84 37.00 31.00 14.00 19.00 566.00 10.00 +85 57.00 29.00 18.00 259.00 650.00 10.00 +86 63.00 23.00 2.00 198.00 609.00 10.00 +87 21.00 24.00 28.00 212.00 605.00 10.00 +88 12.00 24.00 13.00 272.00 565.00 10.00 +89 24.00 58.00 19.00 90.00 549.00 10.00 +90 67.00 5.00 25.00 325.00 897.00 10.00 +91 37.00 47.00 6.00 204.00 633.00 10.00 +92 49.00 42.00 13.00 442.00 937.00 10.00 +93 53.00 43.00 14.00 14.00 581.00 10.00 +94 61.00 52.00 3.00 373.00 928.00 10.00 +95 57.00 48.00 23.00 265.00 638.00 10.00 +96 56.00 37.00 6.00 20.00 539.00 10.00 +97 55.00 54.00 26.00 418.00 825.00 10.00 +98 4.00 18.00 35.00 426.00 787.00 10.00 +99 26.00 52.00 9.00 14.00 499.00 10.00 +100 26.00 35.00 15.00 149.00 586.00 10.00 +101 31.00 67.00 3.00 356.00 930.00 10.00 \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/CMakeLists.txt b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/CMakeLists.txt new file mode 100644 index 000000000..a9d92a120 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/CMakeLists.txt @@ -0,0 +1,26 @@ + +########################################################################################## +### VRP-TW Doc generation using Doxygen +########################################################################################## + +IF (DOXYGEN_FOUND) + + SET(DOC_DIR ${CMAKE_BINARY_DIR}/doc CACHE PATH "VRP-TW contribution documentation directory") + SET(VRPTW_DOC_CONFIG_FILE "doxyfile" CACHE PATH "VRP-TW documentation configuration file") + # define the doc target + IF (DOXYGEN_EXECUTABLE) + ADD_CUSTOM_TARGET(doc + COMMAND ${DOXYGEN_EXECUTABLE} ${VRPTW_DOC_CONFIG_FILE} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + ENDIF (DOXYGEN_EXECUTABLE) + + # configure doxyfile file + CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/doc/${VRPTW_DOC_CONFIG_FILE}.cmake" + "${CMAKE_BINARY_DIR}/doc/${VRPTW_DOC_CONFIG_FILE}") + +ELSE (DOXYGEN_FOUND) + MESSAGE(STATUS "Unable to generate the documentation, Doxygen package not found") +ENDIF (DOXYGEN_FOUND) + +########################################################################################## diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/doxyfile.cmake b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/doxyfile.cmake new file mode 100644 index 000000000..a75c48455 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/doxyfile.cmake @@ -0,0 +1,1269 @@ +# Doxyfile 1.5.2 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file that +# follow. The default is UTF-8 which is also the encoding used for all text before +# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into +# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of +# possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = @PACKAGE_NAME@ + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = @PACKAGE_VERSION@ + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = @CMAKE_BINARY_DIR@/doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, +# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, +# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, +# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@ + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = NO + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = NO + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = @CMAKE_SOURCE_DIR@/src + +# This tag can be used to specify the character encoding of the source files that +# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default +# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. +# See http://www.gnu.org/software/libiconv for the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = *.cpp \ + *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the output. +# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, +# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 3 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = mo + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = YES + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = YES + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = @PARADISEO_EO_BIN_DIR@/doc/eo.doxytag=http://eodev.sourceforge.net/eo/doc/html + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = @CMAKE_BINARY_DIR@/doc/vrptw.doxytag + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to +# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to +# specify the directory where the mscgen tool resides. If left empty the tool is assumed to +# be found in the default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a caller dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen will always +# show the root nodes and its direct children regardless of this setting. + +DOT_GRAPH_MAX_NODES = 50 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = YES + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/annotated.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/annotated.html new file mode 100644 index 000000000..67c4677f6 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/annotated.html @@ -0,0 +1,47 @@ + + +CVRP-TW: Class List + + + + +
+
+ +

CVRP-TW Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + +
eoVRPUtils::ClientDataInformation regarding each client in the dataset
eoVRPDefines the getoype used to solve the VRP-TW problem
eoVRPEdgeCrossoverImplementation of the classic Edge Crossover from the TSP
eoVRPEvalFuncEvaluates an individual of type eoVRP
eoVRPGenericCrossoverImplementation of the generic crossover for the VRP-TW by Tavares et al
eoVRPInitClass defining the initializer functor
eoVRPMutationImplementation of variations of the four mutation operators for the VRP-TW defined by Tavares et al
eoVRPOnePointCrossoverImplementation of the simple One Point Crossover
eoVRPStatManages the statistics of the VRP problem
+
Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p-members.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p-members.html new file mode 100644 index 000000000..f7b40f22c --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p-members.html @@ -0,0 +1,90 @@ + + +CVRP-TW: Member List + + + + +
+
+ +

eoVRP Member List

This is the complete list of members for eoVRP, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AtomType typedefeoVector< eoMinimizingFitness, int >
className() const eoVRP [inline, virtual]
clean()eoVRP [inline]
cleanRoutes()eoVRP [inline]
ContainerType typedefeoVector< eoMinimizingFitness, int >
decode()eoVRP [inline]
decoded() const eoVRP [inline]
encode(Routes &_routes)eoVRP [inline]
EO()EO< F >
EO()EO< F >
eoVector(unsigned size=0, intvalue=int())eoVector< eoMinimizingFitness, int >
eoVector(const eoVector< OtherFitnessType, int > &_vec)eoVector< eoMinimizingFitness, int >
eoVRP()eoVRP [inline]
eoVRP(const eoVRP &_orig)eoVRP [inline]
fitness() const EO< F >
fitness(const Fitness &_fitness)EO< F >
fitness(performance_type perf)EO< F >
fitness(void) const EO< F >
Fitness typedefEO< F >
fitness_traits typedefEO< F >
fitnessReference()EO< F >
invalid() const EO< F >
invalidate()EO< F >
invalidate(void)EO< F >
invalidate_worth(void)EO< F >
length()eoVRP [inline]
mLengtheoVRP [private]
mRouteseoVRP [private]
operator<(const eoVector< eoMinimizingFitness, int > &_eo) const eoVector< eoMinimizingFitness, int >
EO::operator<(const EO &_eo2) const EO< F >
EO::operator<(const EO< Fitness, Traits > &other) const EO< F >
operator=(const eoVRP &_orig)eoVRP [inline]
operator>(const EO &_eo2) const EO< F >
operator>(const EO< Fitness, Traits > &other) const EO< F >
performance(performance_type perf)EO< F >
performance(void) const EO< F >
performance_type typedefEO< F >
printAllOn(std::ostream &_os) const eoVRP [inline]
printOn(std::ostream &_os) const eoVRP [inline, virtual]
printRoute(std::ostream &_os, unsigned _p) const eoVRP [inline]
printRoutes(std::ostream &_os) const eoVRP [inline]
readFrom(std::istream &_is)eoVRP [inline, virtual]
routes()eoVRP [inline]
storage_type typedefEO< F >
value(const std::vector< int > &_v)eoVector< eoMinimizingFitness, int >
worth(worth_type worth)EO< F >
worth(void) const EO< F >
worth_type typedefEO< F >
~EO()EO< F > [virtual]
~eoObject()eoObject [virtual]
~eoPersistent()eoPersistent [virtual]
~eoPrintable()eoPrintable [virtual]
~eoVRP()eoVRP [inline, virtual]


Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p.html new file mode 100644 index 000000000..62afaa029 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p.html @@ -0,0 +1,589 @@ + + +CVRP-TW: eoVRP Class Reference + + + + +
+
+ +

eoVRP Class Reference

Defines the getoype used to solve the VRP-TW problem. +More... +

+#include <eoVRP.h> +

+

Inheritance diagram for eoVRP: +

+ +eoVector< eoMinimizingFitness, int > +EO< F > +eoObject +eoPersistent +eoPrintable + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

eoVRP ()
 Default constructor: initializes variables to safe values.
 eoVRP (const eoVRP &_orig)
 Copy contructor: creates a new individual from a given one.
+virtual ~eoVRP ()
 Default destructor: nothing to do here.
eoVRPoperator= (const eoVRP &_orig)
 Performs a copy from the invidual passed as argument.
virtual std::string className () const
 Returns a string containing the name of the class.
void printOn (std::ostream &_os) const
 Prints the individual to a given stream.
void printAllOn (std::ostream &_os) const
 Prints a detailed version of the individual (decoding information, unsatisfied contraints, etc.
void readFrom (std::istream &_is)
 Reads an individual from a given stream.
const Routes & routes ()
 Returns a reference to the decoded individual.
double length ()
 Returns the total cost (length) of traveling all the routes.
void printRoutes (std::ostream &_os) const
 Aux.
void printRoute (std::ostream &_os, unsigned _p) const
 Aux.
bool clean ()
 Cleans the individual (the vector of clients and also the decoding information).
bool cleanRoutes ()
 Invalidates the decoding information (usually after crossover or mutation).
bool decoded () const
 Has this individual been decoded?
bool encode (Routes &_routes)
 Encodes an individual from a set of routes (usually used within crossover).
double decode ()
 Decodes an individual in a set of routes and calculates its cost (length) of traveling.

Private Attributes

+Routes mRoutes
 A set of routes containing the decoding information of the individual.
+double mLength
 Cached cost (length) of traveling the set of routes defined by the individual.
+

Detailed Description

+Defines the getoype used to solve the VRP-TW problem. +

+ +

+Definition at line 50 of file eoVRP.h.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
eoVRP::eoVRP (const eoVRP _orig  )  [inline]
+
+
+ +

+Copy contructor: creates a new individual from a given one. +

+

Parameters:
+ + +
_orig The individual used to create the new one.
+
+ +

+Definition at line 68 of file eoVRP.h. +

+References operator=(). +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
eoVRP& eoVRP::operator= (const eoVRP _orig  )  [inline]
+
+
+ +

+Performs a copy from the invidual passed as argument. +

+

Parameters:
+ + +
_orig The individual to copy from.
+
+
Returns:
A reference to this.
+ +

+Definition at line 90 of file eoVRP.h. +

+References clean(), mLength, and mRoutes. +

+Referenced by eoVRP(). +

+

+ +

+
+ + + + + + + + + +
virtual std::string eoVRP::className (void   )  const [inline, virtual]
+
+
+ +

+Returns a string containing the name of the class. +

+

Returns:
The string containing the name of the class.
+ +

+Reimplemented from EO< F >. +

+Definition at line 117 of file eoVRP.h. +

+

+ +

+
+ + + + + + + + + +
void eoVRP::printOn (std::ostream &  _os  )  const [inline, virtual]
+
+
+ +

+Prints the individual to a given stream. +

+

Parameters:
+ + +
_os The stream to print to.
+
+ +

+Reimplemented from eoVector< eoMinimizingFitness, int >. +

+Definition at line 129 of file eoVRP.h. +

+References eoVector< FitT, GeneType >::printOn(). +

+Referenced by decode(). +

+

+ +

+
+ + + + + + + + + +
void eoVRP::printAllOn (std::ostream &  _os  )  const [inline]
+
+
+ +

+Prints a detailed version of the individual (decoding information, unsatisfied contraints, etc. +

+) to a given stream.

Parameters:
+ + +
_os The stream to print to.
+
+ +

+Definition at line 146 of file eoVRP.h. +

+References decoded(), EO< F >::fitness(), eoVector< FitT, GeneType >::printOn(), and printRoutes(). +

+

+ +

+
+ + + + + + + + + +
void eoVRP::readFrom (std::istream &  _is  )  [inline, virtual]
+
+
+ +

+Reads an individual from a given stream. +

+

Parameters:
+ + +
_is The stream to read from.
+
+ +

+Reimplemented from eoVector< eoMinimizingFitness, int >. +

+Definition at line 177 of file eoVRP.h. +

+References eoVector< FitT, GeneType >::readFrom(). +

+

+ +

+
+ + + + + + + + +
const Routes& eoVRP::routes (  )  [inline]
+
+
+ +

+Returns a reference to the decoded individual. +

+

Returns:
A reference to the decoded individual.
+ +

+Definition at line 190 of file eoVRP.h. +

+References mRoutes. +

+Referenced by eoVRPGenericCrossover::operator()(). +

+

+ +

+
+ + + + + + + + +
double eoVRP::length (  )  [inline]
+
+
+ +

+Returns the total cost (length) of traveling all the routes. +

+

Returns:
The total cost (length) of traveling all the routes.
+ +

+Definition at line 205 of file eoVRP.h. +

+References mLength. +

+Referenced by eoVRPEvalFunc::operator()(). +

+

+ +

+
+ + + + + + + + + +
void eoVRP::printRoutes (std::ostream &  _os  )  const [inline]
+
+
+ +

+Aux. +

+method to print a structure of routes.

Parameters:
+ + +
_os The stream to print to.
+
+ +

+Definition at line 217 of file eoVRP.h. +

+References mRoutes, and printRoute(). +

+Referenced by printAllOn(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void eoVRP::printRoute (std::ostream &  _os,
unsigned  _p 
) const [inline]
+
+
+ +

+Aux. +

+method to print only one route.

Parameters:
+ + + +
_os The stream to print to.
_p The route to print.
+
+ +

+Definition at line 244 of file eoVRP.h. +

+References mRoutes. +

+Referenced by printRoutes(). +

+

+ +

+
+ + + + + + + + +
bool eoVRP::clean (  )  [inline]
+
+
+ +

+Cleans the individual (the vector of clients and also the decoding information). +

+

Returns:
True if the operation finishes correctly. False otherwise.
+ +

+Definition at line 267 of file eoVRP.h. +

+References mLength, and mRoutes. +

+Referenced by encode(), eoVRPEdgeCrossover::operator()(), and operator=(). +

+

+ +

+
+ + + + + + + + +
bool eoVRP::cleanRoutes (  )  [inline]
+
+
+ +

+Invalidates the decoding information (usually after crossover or mutation). +

+

Returns:
True if the operation finishes correctly. False otherwise.
+ +

+Definition at line 283 of file eoVRP.h. +

+References mLength, and mRoutes. +

+Referenced by decode(), eoVRPOnePointCrossover::operator()(), and eoVRPMutation::operator()(). +

+

+ +

+
+ + + + + + + + +
bool eoVRP::decoded (  )  const [inline]
+
+
+ +

+Has this individual been decoded? +

+

Returns:
True if has decoding information. False otherwise.
+ +

+Definition at line 298 of file eoVRP.h. +

+References mRoutes. +

+Referenced by eoVRPEvalFunc::operator()(), and printAllOn(). +

+

+ +

+
+ + + + + + + + + +
bool eoVRP::encode (Routes &  _routes  )  [inline]
+
+
+ +

+Encodes an individual from a set of routes (usually used within crossover). +

+

Returns:
True if the operation finishes correctly. False otherwise.
+ +

+Definition at line 313 of file eoVRP.h. +

+References clean(). +

+Referenced by eoVRPGenericCrossover::operator()(). +

+

+ +

+
+ + + + + + + + +
double eoVRP::decode (  )  [inline]
+
+
+ +

+Decodes an individual in a set of routes and calculates its cost (length) of traveling. +

+

Returns:
The cost (length) of traveling the set of routes.
+ +

+Definition at line 334 of file eoVRP.h. +

+References cleanRoutes(), eoVRPUtils::clients, eoVRPUtils::distance(), eoVRPUtils::getTimeWindow(), mLength, mRoutes, and printOn(). +

+Referenced by eoVRPEvalFunc::operator()(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p.png new file mode 100644 index 000000000..003d63618 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_edge_crossover-members.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_edge_crossover-members.html new file mode 100644 index 000000000..834c9b75b --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_edge_crossover-members.html @@ -0,0 +1,52 @@ + + +CVRP-TW: Member List + + + + +
+
+ +

eoVRPEdgeCrossover Member List

This is the complete list of members for eoVRPEdgeCrossover, including all inherited members.

+ + + + + + + + + + + + + + + +
add_vertex(unsigned _vertex, std::vector< bool > &_visited, std::vector< std::set< unsigned > > &_map, eoVRP &_child)eoVRPEdgeCrossover [inline, private]
className() const eoVRPEdgeCrossover [inline, virtual]
EdgeCrossover(eoVRP &_genotype1, eoVRP &_genotype2, eoVRP &_child)eoVRPEdgeCrossover [inline, private]
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
eoQuadOp()eoQuadOp< eoVRP >
eoVRPEdgeCrossover()eoVRPEdgeCrossover [inline]
functor_category()eoBF< eoVRP &, eoVRP &, bool > [static]
getType() const eoOp< EOType >
operator()(eoVRP &_genotype1, eoVRP &_genotype2)eoVRPEdgeCrossover [inline, virtual]
OpType enum nameeoOp< EOType >
remove_entry(unsigned _vertex, std::vector< std::set< unsigned > > &_map)eoVRPEdgeCrossover [inline, private]
~eoBF()eoBF< eoVRP &, eoVRP &, bool > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]


Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_edge_crossover.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_edge_crossover.html new file mode 100644 index 000000000..fed5f69a0 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_edge_crossover.html @@ -0,0 +1,301 @@ + + +CVRP-TW: eoVRPEdgeCrossover Class Reference + + + + +
+
+ +

eoVRPEdgeCrossover Class Reference

Implementation of the classic Edge Crossover from the TSP. +More... +

+#include <eoVRPQuadCrossover.h> +

+

Inheritance diagram for eoVRPEdgeCrossover: +

+ +eoQuadOp< eoVRP > +eoOp< EOType > +eoBF< eoVRP &, eoVRP &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

eoVRPEdgeCrossover ()
 Deafult constructor.
std::string className () const
 Returns a string containing the name of the class.
bool operator() (eoVRP &_genotype1, eoVRP &_genotype2)
 Both parameters are the parents and the (future) children of the crossover.

Private Member Functions

bool EdgeCrossover (eoVRP &_genotype1, eoVRP &_genotype2, eoVRP &_child)
 Actually performs the edge crossover.
void remove_entry (unsigned _vertex, std::vector< std::set< unsigned > > &_map)
 Removes a vertex from all his neighbours.
void add_vertex (unsigned _vertex, std::vector< bool > &_visited, std::vector< std::set< unsigned > > &_map, eoVRP &_child)
 Adds a vertex to a child and erases it from the list of available vertices.
+

Detailed Description

+Implementation of the classic Edge Crossover from the TSP. +

+ +

+Definition at line 240 of file eoVRPQuadCrossover.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
std::string eoVRPEdgeCrossover::className (void   )  const [inline, virtual]
+
+
+ +

+Returns a string containing the name of the class. +

+Used to display statistics.

Returns:
The string containing the name of the class.
+ +

+Reimplemented from eoQuadOp< eoVRP >. +

+Definition at line 258 of file eoVRPQuadCrossover.h. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool eoVRPEdgeCrossover::operator() (eoVRP _genotype1,
eoVRP _genotype2 
) [inline, virtual]
+
+
+ +

+Both parameters are the parents and the (future) children of the crossover. +

+

Parameters:
+ + + +
_genotype1 The first parent.
_genotype2 The second parent.
+
+
Returns:
True if any of the parents was modified. False otherwise.
+ +

+Implements eoBF< eoVRP &, eoVRP &, bool >. +

+Definition at line 272 of file eoVRPQuadCrossover.h. +

+References eoVRP::clean(), and EdgeCrossover(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool eoVRPEdgeCrossover::EdgeCrossover (eoVRP _genotype1,
eoVRP _genotype2,
eoVRP _child 
) [inline, private]
+
+
+ +

+Actually performs the edge crossover. +

+

Parameters:
+ + + + +
_genotype1 First parent.
_genotype2 Second parent.
_child Child.
+
+
Returns:
True if the second parent was modified. False otherwise.
+ +

+Definition at line 301 of file eoVRPQuadCrossover.h. +

+References add_vertex(), and eoRng::random(). +

+Referenced by operator()(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void eoVRPEdgeCrossover::remove_entry (unsigned  _vertex,
std::vector< std::set< unsigned > > &  _map 
) [inline, private]
+
+
+ +

+Removes a vertex from all his neighbours. +

+

Parameters:
+ + + +
_vertex The vertex being erased.
_map The structure containing the neighbourhood relationship.
+
+ +

+Definition at line 380 of file eoVRPQuadCrossover.h. +

+Referenced by add_vertex(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void eoVRPEdgeCrossover::add_vertex (unsigned  _vertex,
std::vector< bool > &  _visited,
std::vector< std::set< unsigned > > &  _map,
eoVRP _child 
) [inline, private]
+
+
+ +

+Adds a vertex to a child and erases it from the list of available vertices. +

+

Parameters:
+ + + + + +
_vertex The vertex being added to the child.
_visited The vector of visited vertices.
_map The structure containing the neighbourhood relationship.
_child The child where we add the vertex.
+
+ +

+Definition at line 398 of file eoVRPQuadCrossover.h. +

+References remove_entry(). +

+Referenced by EdgeCrossover(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_edge_crossover.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_edge_crossover.png new file mode 100644 index 000000000..40b28088f Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_edge_crossover.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_eval_func-members.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_eval_func-members.html new file mode 100644 index 000000000..9ab13b3d9 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_eval_func-members.html @@ -0,0 +1,45 @@ + + +CVRP-TW: Member List + + + + +
+
+ +

eoVRPEvalFunc Member List

This is the complete list of members for eoVRPEvalFunc, including all inherited members.

+ + + + + + + + +
EOFitT typedefeoEvalFunc< eoVRP >
EOType typedefeoEvalFunc< eoVRP >
eoVRPEvalFunc()eoVRPEvalFunc [inline]
functor_category()eoUF< A1, R > [static]
operator()(eoVRP &_eo)eoVRPEvalFunc [inline]
eoEvalFunc< eoVRP >::operator()(A1)=0eoUF< A1, R > [pure virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_eval_func.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_eval_func.html new file mode 100644 index 000000000..012b3c7b9 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_eval_func.html @@ -0,0 +1,98 @@ + + +CVRP-TW: eoVRPEvalFunc Class Reference + + + + +
+
+ +

eoVRPEvalFunc Class Reference

Evaluates an individual of type eoVRP. +More... +

+#include <eoVRPEvalFunc.h> +

+

Inheritance diagram for eoVRPEvalFunc: +

+ +eoEvalFunc< eoVRP > +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + + + + + +

Public Member Functions

eoVRPEvalFunc ()
 Constructor: nothing to do here.
void operator() (eoVRP &_eo)
 Computes the (penalized) fitness.
+

Detailed Description

+Evaluates an individual of type eoVRP. +

+ +

+Definition at line 54 of file eoVRPEvalFunc.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
void eoVRPEvalFunc::operator() (eoVRP _eo  )  [inline]
+
+
+ +

+Computes the (penalized) fitness. +

+

Parameters:
+ + +
_eo The individual to be evaluated.
+
+ +

+Definition at line 72 of file eoVRPEvalFunc.h. +

+References eoVRP::decode(), eoVRP::decoded(), EO< F >::fitness(), EO< F >::invalid(), and eoVRP::length(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_eval_func.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_eval_func.png new file mode 100644 index 000000000..2f15f89bc Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_eval_func.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_generic_crossover-members.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_generic_crossover-members.html new file mode 100644 index 000000000..bf755f671 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_generic_crossover-members.html @@ -0,0 +1,50 @@ + + +CVRP-TW: Member List + + + + +
+
+ +

eoVRPGenericCrossover Member List

This is the complete list of members for eoVRPGenericCrossover, including all inherited members.

+ + + + + + + + + + + + + +
className() const eoVRPGenericCrossover [inline, virtual]
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
eoQuadOp()eoQuadOp< eoVRP >
eoVRPGenericCrossover()eoVRPGenericCrossover [inline]
functor_category()eoBF< eoVRP &, eoVRP &, bool > [static]
GenericCrossover(const Routes &_donor, Routes &_receiver) const eoVRPGenericCrossover [inline, private]
getType() const eoOp< EOType >
operator()(eoVRP &_genotype1, eoVRP &_genotype2)eoVRPGenericCrossover [inline, virtual]
OpType enum nameeoOp< EOType >
~eoBF()eoBF< eoVRP &, eoVRP &, bool > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]


Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_generic_crossover.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_generic_crossover.html new file mode 100644 index 000000000..236363931 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_generic_crossover.html @@ -0,0 +1,190 @@ + + +CVRP-TW: eoVRPGenericCrossover Class Reference + + + + +
+
+ +

eoVRPGenericCrossover Class Reference

Implementation of the generic crossover for the VRP-TW by Tavares et al. +More... +

+#include <eoVRPQuadCrossover.h> +

+

Inheritance diagram for eoVRPGenericCrossover: +

+ +eoQuadOp< eoVRP > +eoOp< EOType > +eoBF< eoVRP &, eoVRP &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

eoVRPGenericCrossover ()
 Deafult constructor.
std::string className () const
 Returns a string containing the name of the class.
bool operator() (eoVRP &_genotype1, eoVRP &_genotype2)
 Both parameters are the parents and the (future) children of the crossover.

Private Member Functions

bool GenericCrossover (const Routes &_donor, Routes &_receiver) const
 Actually performs the generic crossover.
+

Detailed Description

+Implementation of the generic crossover for the VRP-TW by Tavares et al. +

+ +

+Definition at line 53 of file eoVRPQuadCrossover.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
std::string eoVRPGenericCrossover::className (void   )  const [inline, virtual]
+
+
+ +

+Returns a string containing the name of the class. +

+Used to display statistics.

Returns:
The string containing the name of the class.
+ +

+Reimplemented from eoQuadOp< eoVRP >. +

+Definition at line 71 of file eoVRPQuadCrossover.h. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool eoVRPGenericCrossover::operator() (eoVRP _genotype1,
eoVRP _genotype2 
) [inline, virtual]
+
+
+ +

+Both parameters are the parents and the (future) children of the crossover. +

+

Parameters:
+ + + +
_genotype1 The first parent.
_genotype2 The second parent.
+
+
Returns:
True if any of the parents was modified. False otherwise.
+ +

+Implements eoBF< eoVRP &, eoVRP &, bool >. +

+Definition at line 85 of file eoVRPQuadCrossover.h. +

+References eoVRP::encode(), GenericCrossover(), and eoVRP::routes(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool eoVRPGenericCrossover::GenericCrossover (const Routes &  _donor,
Routes &  _receiver 
) const [inline, private]
+
+
+ +

+Actually performs the generic crossover. +

+

Parameters:
+ + + +
_donor Set of routes from the first parent.
_receiver Set of routes from the second parent
+
+
Returns:
True if the second parent was modified. False otherwise.
+ +

+Definition at line 110 of file eoVRPQuadCrossover.h. +

+References eoRng::random(). +

+Referenced by operator()(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_generic_crossover.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_generic_crossover.png new file mode 100644 index 000000000..eef33ab46 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_generic_crossover.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_init-members.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_init-members.html new file mode 100644 index 000000000..86253c3cb --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_init-members.html @@ -0,0 +1,54 @@ + + +CVRP-TW: Member List + + + + +
+
+ +

eoVRPInit Member List

This is the complete list of members for eoVRPInit, including all inherited members.

+ + + + + + + + + + + + + + + + + +
className(void) const eoInit< eoVRP > [virtual]
createNewRoute(std::vector< int > &_unvisited, int &_unvisitedIdx, bool _seedCheckingOverride, Route &_route)eoVRPInit [inline, private]
eoVRPInit()eoVRPInit [inline]
evaluateInsertion(Route &_route, unsigned _newClient, int _afterClient, double &_cost)eoVRPInit [inline, private]
functor_category()eoUF< A1, R > [static]
HeuristicInitialization(eoVRP &_gen)eoVRPInit [inline, private]
mSeedsUsedeoVRPInit [private]
mSeedsUsedCounteoVRPInit [private]
operator()(eoVRP &_gen)eoVRPInit [inline]
eoInit< eoVRP >::operator()(A1)=0eoUF< A1, R > [pure virtual]
RandomInitializationNoCheck(eoVRP &_gen)eoVRPInit [inline, private]
selectBestClientAsSeed(const std::vector< int > &_unvisited, int _unvisitedIdx, bool _seedCheckingOverride)eoVRPInit [inline, private]
selectBestInsertion(std::vector< int > &_unvisited, unsigned _unvisitedIdx, Route &_route, unsigned &_nextClient, Route::iterator &_it)eoVRPInit [inline, private]
selectCheapestClient(const std::vector< int > &_unvisited, int _unvisitedIdx, bool _seedCheckingOverride)eoVRPInit [inline, private]
selectFarthestClientAsSeed(const std::vector< int > &_unvisited, int _unvisitedIdx)eoVRPInit [inline, private]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_init.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_init.html new file mode 100644 index 000000000..5e694c95e --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_init.html @@ -0,0 +1,521 @@ + + +CVRP-TW: eoVRPInit Class Reference + + + + +
+
+ +

eoVRPInit Class Reference

Class defining the initializer functor. +More... +

+#include <eoVRPInit.h> +

+

Inheritance diagram for eoVRPInit: +

+ +eoInit< eoVRP > +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

eoVRPInit ()
 Default constructor: nothing to do here.
void operator() (eoVRP &_gen)
 Functor member.

Private Member Functions

void HeuristicInitialization (eoVRP &_gen)
 Heuristic initializer.
bool createNewRoute (std::vector< int > &_unvisited, int &_unvisitedIdx, bool _seedCheckingOverride, Route &_route)
 Creates a new route.
bool selectBestInsertion (std::vector< int > &_unvisited, unsigned _unvisitedIdx, Route &_route, unsigned &_nextClient, Route::iterator &_it)
 Selects the best client and the best position for its insertion in a given route.
bool evaluateInsertion (Route &_route, unsigned _newClient, int _afterClient, double &_cost)
 Evaluates the feasibility and the cost of inserting a new client in a given subroute.
unsigned selectFarthestClientAsSeed (const std::vector< int > &_unvisited, int _unvisitedIdx)
 Selects the farthest client as seed for a new route.
unsigned selectCheapestClient (const std::vector< int > &_unvisited, int _unvisitedIdx, bool _seedCheckingOverride)
 Selects the cheapest client as seed for a new route.
unsigned selectBestClientAsSeed (const std::vector< int > &_unvisited, int _unvisitedIdx, bool _seedCheckingOverride)
 Selects the best (the "hardest" one) client as seed for a new route.
void RandomInitializationNoCheck (eoVRP &_gen)
 Random initializer.

Private Attributes

+unsigned mSeedsUsedCount
 Number of clients already used as seeds.
+std::vector< bool > mSeedsUsed
 Vector storing if a client has been used as a seed or not.
+

Detailed Description

+Class defining the initializer functor. +

+This class initializes an individual of the VRP problem using an heuristic initializer. +

+ +

+Definition at line 65 of file eoVRPInit.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
void eoVRPInit::operator() (eoVRP _gen  )  [inline]
+
+
+ +

+Functor member. +

+Initializes a genotype using an heuristic initializer.

Parameters:
+ + +
_gen Generally a genotype that has been default-constructed. Whatever it contains will be lost.
+
+ +

+Definition at line 99 of file eoVRPInit.h. +

+References HeuristicInitialization(). +

+

+ +

+
+ + + + + + + + + +
void eoVRPInit::HeuristicInitialization (eoVRP _gen  )  [inline, private]
+
+
+ +

+Heuristic initializer. +

+This initializer constructs and individual from routes. Each route is built in a constructive way. The first client of each route is selected trying to maximize a function depending on its time window and how far it is from the depot. We always try to select the hardest clients as seeds. Used seeds are stored so that different seeds are selected for different individuals and thus guarantee the diversity of the initial population.

Parameters:
+ + +
_gen The individual to be initialized.
+
+ +

+Definition at line 123 of file eoVRPInit.h. +

+References eoVRPUtils::clients, createNewRoute(), and EO< F >::invalidate(). +

+Referenced by operator()(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool eoVRPInit::createNewRoute (std::vector< int > &  _unvisited,
int &  _unvisitedIdx,
bool  _seedCheckingOverride,
Route &  _route 
) [inline, private]
+
+
+ +

+Creates a new route. +

+Creates a new route selecting the best (hardest) client as seed and then adding the cheapest clients until one of the constraints (time window or vehicle's capacity) is broken.

Parameters:
+ + + + + +
_unvisited Vector of unvisited and thus available clients for constructing the new route.
_unvisitedIdx Position of the last univisted client in _unvisited vector.
_seedCheckingOverride If true, it overrides the seed checking mecanism. It must be always false for the first route and then true for the following ones. This way we will preserve diversity in our initial population as every individual will be initialized from a different initial route.
_route The brand new route we have constructed.
+
+
Returns:
True if everything went ok.
+ +

+Definition at line 176 of file eoVRPInit.h. +

+References mSeedsUsed, mSeedsUsedCount, selectBestClientAsSeed(), and selectBestInsertion(). +

+Referenced by HeuristicInitialization(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool eoVRPInit::selectBestInsertion (std::vector< int > &  _unvisited,
unsigned  _unvisitedIdx,
Route &  _route,
unsigned &  _nextClient,
Route::iterator &  _it 
) [inline, private]
+
+
+ +

+Selects the best client and the best position for its insertion in a given route. +

+Given a subroute, this method tries to find the best client and the best position for it among all the univisited clients.

Parameters:
+ + + + + + +
_unvisited Vector of unvisited and thus available clients for constructing the new route.
_unvisitedIdx Position of the last univisted client in _unvisited vector.
_route The route where we are trying to insert a new client.
_nextClient A return value. The selected client to be inserted.
_it A return value. The position for selected client to be inserted.
+
+
Returns:
True if a new insertion is possible. False otherwise.
+ +

+Definition at line 249 of file eoVRPInit.h. +

+References evaluateInsertion(). +

+Referenced by createNewRoute(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool eoVRPInit::evaluateInsertion (Route &  _route,
unsigned  _newClient,
int  _afterClient,
double &  _cost 
) [inline, private]
+
+
+ +

+Evaluates the feasibility and the cost of inserting a new client in a given subroute. +

+Given a subroute, this method tries evaluates if it is possible to insert a client in a position. It will return the cost of the resulting route if this insertion is possible.

Parameters:
+ + + + + +
_route The route where we are trying to insert a new client.
_newClient The client we are trying to insert.
_afterClient The position of insertion.
_cost A return value. The cost of inserting the given client at the given position.
+
+
Returns:
True if the new insertion is possible. False otherwise.
+ +

+Definition at line 308 of file eoVRPInit.h. +

+References eoVRPUtils::clients, eoVRPUtils::distance(), and eoVRPUtils::getTimeWindow(). +

+Referenced by selectBestInsertion(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
unsigned eoVRPInit::selectFarthestClientAsSeed (const std::vector< int > &  _unvisited,
int  _unvisitedIdx 
) [inline, private]
+
+
+ +

+Selects the farthest client as seed for a new route. +

+

Parameters:
+ + + +
_unvisited Vector of unvisited and thus available clients for constructing the new route.
_unvisitedIdx Position of the last univisted client in _unvisited vector.
+
+
Returns:
The position of the client farthest from the depot.
+ +

+Definition at line 472 of file eoVRPInit.h. +

+References eoVRPUtils::distance(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
unsigned eoVRPInit::selectCheapestClient (const std::vector< int > &  _unvisited,
int  _unvisitedIdx,
bool  _seedCheckingOverride 
) [inline, private]
+
+
+ +

+Selects the cheapest client as seed for a new route. +

+

Parameters:
+ + + + +
_unvisited Vector of unvisited and thus available clients for constructing the new route.
_unvisitedIdx Position of the last univisted client in _unvisited vector.
_seedCheckingOverride If true, it overrides the seed checking mecanism.
+
+
Returns:
The position of the cheapest client.
+ +

+Definition at line 498 of file eoVRPInit.h. +

+References eoVRPUtils::clients, eoVRPUtils::distance(), eoRng::flip(), mSeedsUsed, and eoVRPUtils::polarAngle(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
unsigned eoVRPInit::selectBestClientAsSeed (const std::vector< int > &  _unvisited,
int  _unvisitedIdx,
bool  _seedCheckingOverride 
) [inline, private]
+
+
+ +

+Selects the best (the "hardest" one) client as seed for a new route. +

+

Parameters:
+ + + + +
_unvisited Vector of unvisited and thus available clients for constructing the new route.
_unvisitedIdx Position of the last univisted client in _unvisited vector.
_seedCheckingOverride If true, it overrides the seed checking mecanism.
+
+
Returns:
The position of the best client.
+ +

+Definition at line 532 of file eoVRPInit.h. +

+References eoVRPUtils::clients, eoVRPUtils::distance(), eoRng::flip(), mSeedsUsed, and eoRng::uniform(). +

+Referenced by createNewRoute(). +

+

+ +

+
+ + + + + + + + + +
void eoVRPInit::RandomInitializationNoCheck (eoVRP _gen  )  [inline, private]
+
+
+ +

+Random initializer. +

+Initializes a genotype using a random initializer.

Parameters:
+ + +
_gen Generally a genotype that has been default-constructed. Whatever it contains will be lost.
+
+ +

+Definition at line 569 of file eoVRPInit.h. +

+References eoVRPUtils::clients, and eoRng::random(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_init.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_init.png new file mode 100644 index 000000000..79241afad Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_init.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_mutation-members.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_mutation-members.html new file mode 100644 index 000000000..6b0e3bb65 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_mutation-members.html @@ -0,0 +1,53 @@ + + +CVRP-TW: Member List + + + + +
+
+ +

eoVRPMutation Member List

This is the complete list of members for eoVRPMutation, including all inherited members.

+ + + + + + + + + + + + + + + + +
className() const eoVRPMutation [inline, virtual]
DisplacementMutation(eoVRP &_genotype)eoVRPMutation [inline, private]
eoMonOp()eoMonOp< eoVRP >
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
eoVRPMutation()eoVRPMutation [inline]
functor_category()eoUF< eoVRP &, bool > [static]
getType() const eoOp< EOType >
insertionMutation(eoVRP &_genotype)eoVRPMutation [inline, private]
inversionMutation(eoVRP &_genotype)eoVRPMutation [inline, private]
operator()(eoVRP &_genotype)eoVRPMutation [inline, virtual]
OpType enum nameeoOp< EOType >
swapMutation(eoVRP &_genotype)eoVRPMutation [inline, private]
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]
~eoUF()eoUF< eoVRP &, bool > [virtual]


Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_mutation.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_mutation.html new file mode 100644 index 000000000..b76e950bb --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_mutation.html @@ -0,0 +1,283 @@ + + +CVRP-TW: eoVRPMutation Class Reference + + + + +
+
+ +

eoVRPMutation Class Reference

Implementation of variations of the four mutation operators for the VRP-TW defined by Tavares et al. +More... +

+#include <eoVRPMutation.h> +

+

Inheritance diagram for eoVRPMutation: +

+ +eoMonOp< eoVRP > +eoOp< EOType > +eoUF< eoVRP &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

eoVRPMutation ()
 Default constructor: nothing to do here.
std::string className () const
 Returns a string containing the name of the class.
bool operator() (eoVRP &_genotype)
 Functor operator.

Private Member Functions

bool swapMutation (eoVRP &_genotype)
 It exhanges the positions of two clients within the individual.
bool inversionMutation (eoVRP &_genotype)
 It selects two positions in the genotype and inverts the clients between them.
bool insertionMutation (eoVRP &_genotype)
 It selects and individual, erases it from its original position and inserts it somewhere else.
bool DisplacementMutation (eoVRP &_genotype)
 It selects a set of clients, erases them from their original position and inserts them somewhere else.
+

Detailed Description

+Implementation of variations of the four mutation operators for the VRP-TW defined by Tavares et al. +

+These four operators should be separated in different classes and their probabilities made parameterizable. +

+ +

+Definition at line 52 of file eoVRPMutation.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
std::string eoVRPMutation::className (void   )  const [inline, virtual]
+
+
+ +

+Returns a string containing the name of the class. +

+Used to display statistics.

Returns:
The string containing the name of the class.
+ +

+Reimplemented from eoMonOp< eoVRP >. +

+Definition at line 70 of file eoVRPMutation.h. +

+

+ +

+
+ + + + + + + + + +
bool eoVRPMutation::operator() (eoVRP _genotype  )  [inline, virtual]
+
+
+ +

+Functor operator. +

+Applies one of the four mutation operators available, each of them with a predefined (hard-coded) probability. These operators should be separated in different classes and their probabilities made parameterizable to do it in a more "paradisEO" way.

Parameters:
+ + +
_genotype The genotype being mutated (it will be probably modified).
+
+
Returns:
True if the individual has been modified. False otherwise.
+ +

+Implements eoUF< eoVRP &, bool >. +

+Definition at line 86 of file eoVRPMutation.h. +

+References eoVRP::cleanRoutes(), DisplacementMutation(), insertionMutation(), inversionMutation(), swapMutation(), and eoRng::uniform(). +

+

+ +

+
+ + + + + + + + + +
bool eoVRPMutation::swapMutation (eoVRP _genotype  )  [inline, private]
+
+
+ +

+It exhanges the positions of two clients within the individual. +

+Clients may or may not be in the same route.

Parameters:
+ + +
_genotype The genotype being mutated (it will be probably modified).
+
+
Returns:
True if the individual has been modified. False otherwise.
+ +

+Definition at line 119 of file eoVRPMutation.h. +

+References eoRng::random(). +

+Referenced by operator()(). +

+

+ +

+
+ + + + + + + + + +
bool eoVRPMutation::inversionMutation (eoVRP _genotype  )  [inline, private]
+
+
+ +

+It selects two positions in the genotype and inverts the clients between them. +

+Clients may or may not be in the same route.

Parameters:
+ + +
_genotype The genotype being mutated (it will be probably modified).
+
+
Returns:
True if the individual has been modified. False otherwise.
+ +

+Definition at line 142 of file eoVRPMutation.h. +

+References eoRng::random(). +

+Referenced by operator()(). +

+

+ +

+
+ + + + + + + + + +
bool eoVRPMutation::insertionMutation (eoVRP _genotype  )  [inline, private]
+
+
+ +

+It selects and individual, erases it from its original position and inserts it somewhere else. +

+The insertion may or may not be within the same route.

Parameters:
+ + +
_genotype The genotype being mutated (it will be probably modified).
+
+
Returns:
True if the individual has been modified. False otherwise.
+ +

+Definition at line 170 of file eoVRPMutation.h. +

+References eoRng::random(). +

+Referenced by operator()(). +

+

+ +

+
+ + + + + + + + + +
bool eoVRPMutation::DisplacementMutation (eoVRP _genotype  )  [inline, private]
+
+
+ +

+It selects a set of clients, erases them from their original position and inserts them somewhere else. +

+The selected set of clients may cover different routes.

Parameters:
+ + +
_genotype The genotype being mutated (it will be probably modified).
+
+
Returns:
True if the individual has been modified. False otherwise.
+ +

+Definition at line 199 of file eoVRPMutation.h. +

+References eoRng::random(). +

+Referenced by operator()(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_mutation.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_mutation.png new file mode 100644 index 000000000..87103b834 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_mutation.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_one_point_crossover-members.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_one_point_crossover-members.html new file mode 100644 index 000000000..f53841149 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_one_point_crossover-members.html @@ -0,0 +1,49 @@ + + +CVRP-TW: Member List + + + + +
+
+ +

eoVRPOnePointCrossover Member List

This is the complete list of members for eoVRPOnePointCrossover, including all inherited members.

+ + + + + + + + + + + + +
className() const eoVRPOnePointCrossover [inline, virtual]
eoOp(OpType _type)eoOp< EOType >
eoOp(const eoOp &_eop)eoOp< EOType >
eoQuadOp()eoQuadOp< eoVRP >
eoVRPOnePointCrossover()eoVRPOnePointCrossover [inline]
functor_category()eoBF< eoVRP &, eoVRP &, bool > [static]
getType() const eoOp< EOType >
operator()(eoVRP &_genotype1, eoVRP &_genotype2)eoVRPOnePointCrossover [inline, virtual]
OpType enum nameeoOp< EOType >
~eoBF()eoBF< eoVRP &, eoVRP &, bool > [virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoOp()eoOp< EOType > [virtual]


Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_one_point_crossover.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_one_point_crossover.html new file mode 100644 index 000000000..7ac9cdeb7 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_one_point_crossover.html @@ -0,0 +1,142 @@ + + +CVRP-TW: eoVRPOnePointCrossover Class Reference + + + + +
+
+ +

eoVRPOnePointCrossover Class Reference

Implementation of the simple One Point Crossover. +More... +

+#include <eoVRPQuadCrossover.h> +

+

Inheritance diagram for eoVRPOnePointCrossover: +

+ +eoQuadOp< eoVRP > +eoOp< EOType > +eoBF< eoVRP &, eoVRP &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + +

Public Member Functions

eoVRPOnePointCrossover ()
 Deafult constructor.
std::string className () const
 Returns a string containing the name of the class.
bool operator() (eoVRP &_genotype1, eoVRP &_genotype2)
 Performs a one point crossover.
+

Detailed Description

+Implementation of the simple One Point Crossover. +

+ +

+Definition at line 159 of file eoVRPQuadCrossover.h.


Member Function Documentation

+ +
+
+ + + + + + + + + +
std::string eoVRPOnePointCrossover::className (void   )  const [inline, virtual]
+
+
+ +

+Returns a string containing the name of the class. +

+Used to display statistics.

Returns:
The string containing the name of the class.
+ +

+Reimplemented from eoQuadOp< eoVRP >. +

+Definition at line 177 of file eoVRPQuadCrossover.h. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool eoVRPOnePointCrossover::operator() (eoVRP _genotype1,
eoVRP _genotype2 
) [inline, virtual]
+
+
+ +

+Performs a one point crossover. +

+Both parameters are the parents and the (future) children of the crossover.

Parameters:
+ + + +
_genotype1 The first parent.
_genotype2 The second parent.
+
+
Returns:
True if any of the parents was modified. False otherwise.
+ +

+Implements eoBF< eoVRP &, eoVRP &, bool >. +

+Definition at line 191 of file eoVRPQuadCrossover.h. +

+References eoVRP::cleanRoutes(), and eoRng::random(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_one_point_crossover.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_one_point_crossover.png new file mode 100644 index 000000000..52014fd38 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_one_point_crossover.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_stat-members.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_stat-members.html new file mode 100644 index 000000000..81ca895cb --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_stat-members.html @@ -0,0 +1,71 @@ + + +CVRP-TW: Member List + + + + +
+
+ +

eoVRPStat Member List

This is the complete list of members for eoVRPStat, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addTo(eoCheckPoint< eoVRP > &cp)eoStat< eoVRP, double >
addTo(eoMonitor &mon)eoStat< eoVRP, double >
className(void) const eoVRPStat [inline, virtual]
defValue() const eoParam
defValue(const std::string &str)eoParam
description() const eoParam
eoParam()eoParam
eoParam(std::string _longName, std::string _default, std::string _description, char _shortName=0, bool _required=false)eoParam
eoStat(double_value, std::string _description)eoStat< eoVRP, double >
eoValueParam(void)eoValueParam< double >
eoValueParam(double_defaultValue, std::string _longName, std::string _description="No description", char _shortHand=0, bool _required=false)eoValueParam< double >
eoVRPStat(std::string _description="eoVRPStat ")eoVRPStat [inline]
functor_category()eoUF< A1, R > [static]
getValue(void) const eoValueParam< double > [virtual]
getValue(void) consteoValueParam< double > [virtual]
getValue(void) consteoValueParam< double > [virtual]
getValue(void) consteoValueParam< double > [virtual]
lastCall(const eoPop< EOT > &)eoStatBase< EOT > [virtual]
longName() const eoParam
operator()(const eoPop< eoVRP > &_pop)eoVRPStat [inline]
eoStat< eoVRP, double >::operator()(A1)=0eoUF< A1, R > [pure virtual]
repValueeoValueParam< double > [protected]
required() const eoParam
setLongName(std::string _longName)eoParam
setValue(const std::string &_value)eoValueParam< double > [virtual]
setValue(const std::string &_value)eoValueParam< double > [virtual]
setValue(const std::string &_value)eoValueParam< double > [virtual]
setValue(const std::string &)eoValueParam< double > [virtual]
shortName() const eoParam
value()eoValueParam< double >
value() const eoValueParam< double >
~eoFunctorBase()eoFunctorBase [virtual]
~eoParam()eoParam [virtual]
~eoUF()eoUF< A1, R > [virtual]


Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_stat.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_stat.html new file mode 100644 index 000000000..3c107f0c1 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_stat.html @@ -0,0 +1,160 @@ + + +CVRP-TW: eoVRPStat Class Reference + + + + +
+
+ +

eoVRPStat Class Reference

Manages the statistics of the VRP problem. +More... +

+#include <eoVRPStat.h> +

+

Inheritance diagram for eoVRPStat: +

+ +eoStat< eoVRP, double > +eoValueParam< double > +eoStatBase< EOT > +eoParam +eoUF< A1, R > +eoFunctorBase + +List of all members. + + + + + + + + + + + +

Public Member Functions

 eoVRPStat (std::string _description="eoVRPStat ")
 Constructor: initializes variables properly.
void operator() (const eoPop< eoVRP > &_pop)
 Gets statistics from a population.
virtual std::string className (void) const
 Returns a string containing the name of the class.
+

Detailed Description

+Manages the statistics of the VRP problem. +

+ +

+Definition at line 47 of file eoVRPStat.h.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
eoVRPStat::eoVRPStat (std::string  _description = "eoVRPStat "  )  [inline]
+
+
+ +

+Constructor: initializes variables properly. +

+

Parameters:
+ + +
_description A string identifying the class.
+
+ +

+Definition at line 56 of file eoVRPStat.h. +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
void eoVRPStat::operator() (const eoPop< eoVRP > &  _pop  )  [inline]
+
+
+ +

+Gets statistics from a population. +

+

Parameters:
+ + +
_pop The population that will be analyzed.
+
+ +

+Definition at line 66 of file eoVRPStat.h. +

+References eoValueParam< T >::value(). +

+

+ +

+
+ + + + + + + + + +
virtual std::string eoVRPStat::className (void   )  const [inline, virtual]
+
+
+ +

+Returns a string containing the name of the class. +

+Used to display statistics.

Returns:
The string containing the name of the class.
+ +

+Reimplemented from eoStat< eoVRP, double >. +

+Definition at line 79 of file eoVRPStat.h. +

+

+


The documentation for this class was generated from the following file: +
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_stat.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_stat.png new file mode 100644 index 000000000..3963a1911 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classeo_v_r_p_stat.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classes.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classes.html new file mode 100644 index 000000000..80da428bd --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/classes.html @@ -0,0 +1,41 @@ + + +CVRP-TW: Alphabetical List + + + + +
+
+ +

CVRP-TW Class Index

C | E

+ +
  C  
+
eoVRPEdgeCrossover   eoVRPMutation   
ClientData (eoVRPUtils)   eoVRPEvalFunc   eoVRPOnePointCrossover   
  E  
+
eoVRPGenericCrossover   eoVRPStat   
eoVRP   eoVRPInit   

C | E

+


Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/doxygen.css b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/doxygen.css new file mode 100644 index 000000000..5d583694e --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/doxygen.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/doxygen.png new file mode 100644 index 000000000..f0a274bba Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/doxygen.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_8h-source.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_8h-source.html new file mode 100644 index 000000000..bce2ad5c2 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_8h-source.html @@ -0,0 +1,393 @@ + + +CVRP-TW: eoVRP.h Source File + + + + +
+
+

eoVRP.h

00001 /*
+00002  * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00003  * (C) OPAC Team, LIFL, 2002-2007
+00004  *
+00005  * (c) Antonio LaTorre <atorre@fi.upm.es>, 2007
+00006  *
+00007  * This software is governed by the CeCILL license under French law and
+00008  * abiding by the rules of distribution of free software.  You can  use,
+00009  * modify and/ or redistribute the software under the terms of the CeCILL
+00010  * license as circulated by CEA, CNRS and INRIA at the following URL
+00011  * "http://www.cecill.info".
+00012  *
+00013  * As a counterpart to the access to the source code and  rights to copy,
+00014  * modify and redistribute granted by the license, users are provided only
+00015  * with a limited warranty  and the software's author,  the holder of the
+00016  * economic rights,  and the successive licensors  have only  limited liability.
+00017  *
+00018  * In this respect, the user's attention is drawn to the risks associated
+00019  * with loading,  using,  modifying and/or developing or reproducing the
+00020  * software by the user in light of its specific status of free software,
+00021  * that may mean  that it is complicated to manipulate,  and  that  also
+00022  * therefore means  that it is reserved for developers  and  experienced
+00023  * professionals having in-depth computer knowledge. Users are therefore
+00024  * encouraged to load and test the software's suitability as regards their
+00025  * requirements in conditions enabling the security of their systems and/or
+00026  * data to be ensured and,  more generally, to use and operate it in the
+00027  * same conditions as regards security.
+00028  * The fact that you are presently reading this means that you have had
+00029  * knowledge of the CeCILL license and that you accept its terms.
+00030  *
+00031  * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00032  * Contact: paradiseo-help@lists.gforge.inria.fr
+00033  *
+00034  */
+00035 
+00036 #ifndef _eoVRP_h
+00037 #define _eoVRP_h
+00038 
+00039 // The base definition of eoVector
+00040 #include <eoVector.h>
+00041 
+00042 // Utilities for the VRP-TW problem
+00043 #include "eoVRPUtils.h"
+00044 
+00050 class eoVRP: public eoVector<eoMinimizingFitness, int> {
+00051 
+00052 public:
+00053 
+00058     eoVRP () : mLength (0.0) {
+00059 
+00060     }
+00061 
+00062 
+00068     eoVRP (const eoVRP& _orig) {
+00069 
+00070         operator= (_orig);
+00071 
+00072     }
+00073 
+00074 
+00079     virtual ~eoVRP () {
+00080 
+00081     }
+00082 
+00083 
+00090     eoVRP& operator= (const eoVRP& _orig) {
+00091 
+00092         // Sanity check
+00093         if (&_orig != this) {
+00094 
+00095             // Cleans both individual and decoding information
+00096             clean ();
+00097 
+00098             // We call the assignment operator from the base class
+00099             eoVector<eoMinimizingFitness, int>::operator= (_orig);
+00100 
+00101             // And then copy all our attributes
+00102             mRoutes  = _orig.mRoutes;
+00103             mLength  = _orig.mLength;
+00104 
+00105         }
+00106 
+00107         return *this;
+00108 
+00109     }
+00110 
+00111 
+00117     virtual std::string className () const {
+00118 
+00119         return "eoVRP";
+00120 
+00121     }
+00122 
+00123 
+00129     void printOn (std::ostream& _os) const {
+00130 
+00131         // First write the fitness
+00132         _os << std::endl;
+00133 
+00134         // Then the individual itself using the base printing method
+00135         eoVector<eoMinimizingFitness, int>::printOn (_os);
+00136         _os << std::endl << std::endl;
+00137 
+00138     }
+00139 
+00140 
+00146     void printAllOn (std::ostream& _os) const {
+00147 
+00148         // Print the individual itself using the base printing method
+00149         eoVector<eoMinimizingFitness, int>::printOn (_os);
+00150         _os << std::endl << std::endl;
+00151 
+00152         // Check if we have decoding information to print
+00153         if (decoded ()) {
+00154 
+00155             // First, we print the decoded routes (stored in mRoutes)
+00156             _os << " => Routes: " << std::endl << std::endl;
+00157             printRoutes (_os);
+00158             _os << std::endl << std::endl;
+00159 
+00160             if (this->invalid ())
+00161                 _os << " => Fitness: INVALID." << std::endl << std::endl;
+00162             else
+00163                 _os << " => Fitness: " << this->fitness () << std::endl << std::endl;
+00164 
+00165         }
+00166         else
+00167             std::cerr << "Warning: 'printAllOn' called but the individual was not already decoded." << std::endl;
+00168 
+00169     }
+00170 
+00171 
+00177     void readFrom (std::istream& _is) {
+00178 
+00179         // Read the individual using the method from the base class
+00180         eoVector<eoMinimizingFitness, int>::readFrom (_is);
+00181 
+00182     }
+00183 
+00184 
+00190     const Routes& routes () {
+00191 
+00192         if (mRoutes.size () == 0)
+00193             std::cerr << "Warning: This individual has not been already decoded." << std::endl;
+00194 
+00195         return mRoutes;
+00196 
+00197     }
+00198 
+00199 
+00205     double length () {
+00206 
+00207         return mLength;
+00208 
+00209     }
+00210 
+00211 
+00217     void printRoutes (std::ostream& _os) const {
+00218 
+00219         _os << "[";
+00220 
+00221         for (unsigned i = 0; i < mRoutes.size (); i++) {
+00222 
+00223             _os << "[";
+00224 
+00225             printRoute (_os, i);
+00226 
+00227             if (i == mRoutes.size () - 1)
+00228                 _os << "]";
+00229             else
+00230                 _os << "]," << std::endl;
+00231         }
+00232 
+00233         _os << "]";
+00234 
+00235     }
+00236 
+00237 
+00244     void printRoute (std::ostream& _os, unsigned _p) const {
+00245 
+00246         _os << "[";
+00247 
+00248         for (unsigned i = 0; i < mRoutes [_p].size (); i++) {
+00249 
+00250             _os << mRoutes [_p][i];
+00251 
+00252             if (i != mRoutes [_p].size () - 1)
+00253                 _os << ", ";
+00254 
+00255         }
+00256 
+00257         _os << "]";
+00258 
+00259     }
+00260 
+00261 
+00267     bool clean () {
+00268 
+00269         this->clear ();
+00270         mRoutes.clear ();
+00271         mLength = 0.0;
+00272 
+00273         return true;
+00274 
+00275     }
+00276 
+00277 
+00283     bool cleanRoutes () {
+00284 
+00285         mRoutes.clear ();
+00286         mLength = 0.0;
+00287 
+00288         return true;
+00289 
+00290     }
+00291 
+00292 
+00298     bool decoded () const {
+00299 
+00300         if (mRoutes.size () == 0)
+00301             return false;
+00302 
+00303         return true;
+00304 
+00305     }
+00306 
+00307 
+00313     bool encode (Routes& _routes) {
+00314 
+00315         clean ();
+00316 
+00317         for (unsigned i = 0; i < _routes.size (); i++) {
+00318 
+00319             for (unsigned j = 0; j < _routes [i].size (); j++)
+00320                 this->push_back (_routes [i][j]);
+00321 
+00322         }
+00323 
+00324         return true;
+00325 
+00326     }
+00327 
+00328 
+00334     double decode () {
+00335 
+00336         bool routeStart = true;
+00337 
+00338         double demand = 0.0, route_len = 0.0, time = 0.0;
+00339         double readyTime, dueTime, serviceTime;
+00340         double depotReadyTime, depotDueTime, depotServiceTime;
+00341 
+00342         cleanRoutes ();
+00343 
+00344         Route route;
+00345 
+00346         eoVRPUtils::getTimeWindow (0, depotReadyTime, depotDueTime, depotServiceTime);
+00347 
+00348         for (unsigned i = 0; i < this->size (); i++) {
+00349 
+00350             if (routeStart) {
+00351 
+00352                 demand = eoVRPUtils::clients [this->operator[] (i)].demand;
+00353                 route_len = eoVRPUtils::distance (0, this->operator[] (i));
+00354                 time = eoVRPUtils::distance (0, this->operator[] (i));
+00355 
+00356                 // The capacity of the vehicle must NEVER be exceeded by the first client
+00357                 // (it would be an instance impossible to solve in that case)
+00358                 if (demand > VEHICLE_CAPACITY) {
+00359 
+00360                     std::cerr << "This should never happen: " << std::endl;
+00361                     abort ();
+00362 
+00363                 }
+00364 
+00365                 // Check that its TW is not exceeded
+00366                 eoVRPUtils::getTimeWindow (this->operator[] (i), readyTime, dueTime, serviceTime);
+00367 
+00368                 // Same thing as with capacity and first client, but now with the TW
+00369                 if (time > dueTime) {
+00370 
+00371                     std::cerr << "This should never happen: " << std::endl;
+00372                     abort ();
+00373 
+00374                 }
+00375                 else if (time < readyTime)
+00376                     time = readyTime;
+00377 
+00378                 time += serviceTime;
+00379 
+00380                 route.push_back (this->operator[] (i));
+00381 
+00382                 routeStart = false;
+00383 
+00384             }
+00385             else {
+00386 
+00387                 time += eoVRPUtils::distance (this->operator[] (i - 1), this->operator[] (i));
+00388 
+00389                 // Check that its TW is not exceeded
+00390                 eoVRPUtils::getTimeWindow (this->operator[] (i), readyTime, dueTime, serviceTime);
+00391 
+00392                 if ((time > dueTime) || (time + serviceTime + eoVRPUtils::distance (this->operator[] (i), 0) > depotDueTime) ||
+00393                         (demand + eoVRPUtils::clients [this->operator[] (i)].demand > VEHICLE_CAPACITY)                             ) {
+00394 
+00395                     route_len += eoVRPUtils::distance (this->operator[] (i - 1), 0);
+00396 
+00397                     mLength += route_len;
+00398 
+00399                     i--;
+00400                     routeStart = true;
+00401 
+00402                     // A route should contain, at least, one client. This should never happen, anyway...
+00403                     if (route.size () == 0) {
+00404 
+00405                         std::cerr << "Error: empty route detected while decoding. The wrong genome follows..." << std::endl;
+00406                         this->printOn (std::cerr);
+00407                         abort ();
+00408 
+00409                     }
+00410 
+00411                     mRoutes.push_back (route);
+00412                     route.clear ();
+00413 
+00414                 }
+00415                 else {
+00416 
+00417                     if (time < readyTime)
+00418                         time = readyTime;
+00419 
+00420                     time += serviceTime;
+00421 
+00422                     route_len += eoVRPUtils::distance (this->operator[] (i - 1), this->operator[] (i));
+00423                     demand += eoVRPUtils::clients [this->operator[] (i)].demand;
+00424 
+00425                     route.push_back (this->operator[] (i));
+00426 
+00427                 }
+00428 
+00429             }
+00430 
+00431         }
+00432 
+00433         if (route.size () > 0) {
+00434 
+00435             route_len += eoVRPUtils::distance (route [route.size () - 1], 0);
+00436 
+00437             mLength += route_len;
+00438             mRoutes.push_back (route);
+00439             route.clear ();
+00440 
+00441         }
+00442 
+00443         return mLength;
+00444 
+00445     }
+00446 
+00447 
+00448 private:
+00449 
+00450     Routes mRoutes;   
+00451     double mLength;   
+00453 };
+00454 
+00455 #endif
+

Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_eval_func_8h-source.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_eval_func_8h-source.html new file mode 100644 index 000000000..c2ac1f146 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_eval_func_8h-source.html @@ -0,0 +1,126 @@ + + +CVRP-TW: eoVRPEvalFunc.h Source File + + + + +
+
+

eoVRPEvalFunc.h

00001 /*
+00002  * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00003  * (C) OPAC Team, LIFL, 2002-2007
+00004  *
+00005  * (c) Antonio LaTorre <atorre@fi.upm.es>, 2007
+00006  *
+00007  * This software is governed by the CeCILL license under French law and
+00008  * abiding by the rules of distribution of free software.  You can  use,
+00009  * modify and/ or redistribute the software under the terms of the CeCILL
+00010  * license as circulated by CEA, CNRS and INRIA at the following URL
+00011  * "http://www.cecill.info".
+00012  *
+00013  * As a counterpart to the access to the source code and  rights to copy,
+00014  * modify and redistribute granted by the license, users are provided only
+00015  * with a limited warranty  and the software's author,  the holder of the
+00016  * economic rights,  and the successive licensors  have only  limited liability.
+00017  *
+00018  * In this respect, the user's attention is drawn to the risks associated
+00019  * with loading,  using,  modifying and/or developing or reproducing the
+00020  * software by the user in light of its specific status of free software,
+00021  * that may mean  that it is complicated to manipulate,  and  that  also
+00022  * therefore means  that it is reserved for developers  and  experienced
+00023  * professionals having in-depth computer knowledge. Users are therefore
+00024  * encouraged to load and test the software's suitability as regards their
+00025  * requirements in conditions enabling the security of their systems and/or
+00026  * data to be ensured and,  more generally, to use and operate it in the
+00027  * same conditions as regards security.
+00028  * The fact that you are presently reading this means that you have had
+00029  * knowledge of the CeCILL license and that you accept its terms.
+00030  *
+00031  * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00032  * Contact: paradiseo-help@lists.gforge.inria.fr
+00033  *
+00034  */
+00035 
+00036 #ifndef _eoVRPEvalFunc_h
+00037 #define _eoVRPEvalFunc_h
+00038 
+00039 // General includes
+00040 #include <stdexcept>
+00041 #include <fstream>
+00042 
+00043 // The base definition of eoEvalFunc
+00044 #include "eoEvalFunc.h"
+00045 
+00046 // Utilities for the VRP-TW problem
+00047 #include "eoVRPUtils.h"
+00048 
+00054 class eoVRPEvalFunc : public eoEvalFunc<eoVRP> {
+00055 
+00056 public:
+00057 
+00062     eoVRPEvalFunc () {
+00063 
+00064     }
+00065 
+00066 
+00072     void operator () (eoVRP& _eo) {
+00073 
+00074         double fit = 0.0;
+00075 
+00076         if (_eo.decoded ()) {
+00077 
+00078             if (_eo.invalid ()) {
+00079 
+00080                 std::cerr << "Warning: invalid individual presents decoding information." << std::endl;
+00081                 fit = _eo.decode ();
+00082 
+00083             }
+00084             else
+00085                 fit = _eo.length ();
+00086 
+00087         }
+00088         else {
+00089 
+00090             if (!_eo.invalid ()) {
+00091 
+00092                 std::cerr << "Warning: valid individual does not present decoding information." << std::endl;
+00093                 std::cerr << "         Proceeding to decode..." << std::endl;
+00094 
+00095             }
+00096 
+00097             fit = _eo.decode ();
+00098 
+00099         }
+00100 
+00101         _eo.fitness (fit);
+00102 
+00103     }
+00104 
+00105 
+00106 private:
+00107 
+00108 
+00109 };
+00110 
+00111 #endif
+

Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_init_8h-source.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_init_8h-source.html new file mode 100644 index 000000000..592c51fb1 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_init_8h-source.html @@ -0,0 +1,527 @@ + + +CVRP-TW: eoVRPInit.h Source File + + + + +
+
+

eoVRPInit.h

00001 /*
+00002  * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00003  * (C) OPAC Team, LIFL, 2002-2007
+00004  *
+00005  * (c) Antonio LaTorre <atorre@fi.upm.es>, 2007
+00006  *
+00007  * This software is governed by the CeCILL license under French law and
+00008  * abiding by the rules of distribution of free software.  You can  use,
+00009  * modify and/ or redistribute the software under the terms of the CeCILL
+00010  * license as circulated by CEA, CNRS and INRIA at the following URL
+00011  * "http://www.cecill.info".
+00012  *
+00013  * As a counterpart to the access to the source code and  rights to copy,
+00014  * modify and redistribute granted by the license, users are provided only
+00015  * with a limited warranty  and the software's author,  the holder of the
+00016  * economic rights,  and the successive licensors  have only  limited liability.
+00017  *
+00018  * In this respect, the user's attention is drawn to the risks associated
+00019  * with loading,  using,  modifying and/or developing or reproducing the
+00020  * software by the user in light of its specific status of free software,
+00021  * that may mean  that it is complicated to manipulate,  and  that  also
+00022  * therefore means  that it is reserved for developers  and  experienced
+00023  * professionals having in-depth computer knowledge. Users are therefore
+00024  * encouraged to load and test the software's suitability as regards their
+00025  * requirements in conditions enabling the security of their systems and/or
+00026  * data to be ensured and,  more generally, to use and operate it in the
+00027  * same conditions as regards security.
+00028  * The fact that you are presently reading this means that you have had
+00029  * knowledge of the CeCILL license and that you accept its terms.
+00030  *
+00031  * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00032  * Contact: paradiseo-help@lists.gforge.inria.fr
+00033  *
+00034  */
+00035 
+00036 #ifndef _eoVRPInit_h
+00037 #define _eoVRPInit_h
+00038 
+00039 // The base definition of eoInit
+00040 #include <eoInit.h>
+00041 
+00042 // Utilities for the VRP-TW problem
+00043 #include "eoVRPUtils.h"
+00044 
+00054 #define ALFA                 0.7
+00055 #define BETA                 0.1
+00056 #define GAMMA                0.2
+00057 
+00065 class eoVRPInit: public eoInit <eoVRP> {
+00066 
+00067 public:
+00068 
+00073     eoVRPInit () {
+00074 
+00075         unsigned sz = eoVRPUtils::clients.size ();
+00076 
+00077         if (sz <= 0) {
+00078 
+00079             std::cerr << "Error: the dataset MUST be read before creating the initializer object." << std::endl;
+00080             abort ();
+00081 
+00082         }
+00083 
+00084         mSeedsUsedCount = 0;
+00085 
+00086         for (unsigned i = 0; i < sz; i++)
+00087             mSeedsUsed.push_back (false);
+00088 
+00089     }
+00090 
+00091 
+00099     void operator () (eoVRP& _gen) {
+00100 
+00101         HeuristicInitialization (_gen);
+00102 
+00103     }
+00104 
+00105 
+00106 private:
+00107 
+00108     unsigned mSeedsUsedCount;        
+00109     std::vector<bool> mSeedsUsed;    
+00123     void HeuristicInitialization (eoVRP& _gen) {
+00124 
+00125         // Aux var to override seed used checking
+00126         bool seedCheckingOverride = false;
+00127 
+00128         // Erase any previous contents
+00129         _gen.clear ();
+00130 
+00131         // Aux vector to store unvisited clients
+00132         std::vector<int> unvisited;
+00133 
+00134         // And an index to point to the last unvisited cutomer
+00135         int unvisitedIdx = eoVRPUtils::clients.size () - 2;
+00136 
+00137         // Initialization of the unvisited vector with all the clients
+00138         for (unsigned i = 1; i < eoVRPUtils::clients.size (); i++)
+00139             unvisited.push_back (i);
+00140 
+00141         // Main loop: keep iterating until all clients are visited
+00142         while (unvisitedIdx >= 0) {
+00143 
+00144             // Aux var to store the new route
+00145             Route route;
+00146 
+00147             createNewRoute (unvisited, unvisitedIdx, seedCheckingOverride, route);
+00148             seedCheckingOverride = true;
+00149 
+00150             for (unsigned i = 0; i < route.size (); i++)
+00151                 _gen.push_back (route [i]);
+00152 
+00153         }
+00154 
+00155         // Invalidates the genotype forcing its re-evaluation
+00156         _gen.invalidate ();
+00157 
+00158     }
+00159 
+00160 
+00176     bool createNewRoute (std::vector<int>& _unvisited, int& _unvisitedIdx,
+00177                          bool _seedCheckingOverride, Route& _route         ) {
+00178 
+00179         // Selection of seed client for current route
+00180         unsigned seed = selectBestClientAsSeed (_unvisited, _unvisitedIdx, _seedCheckingOverride);
+00181 
+00182         // Add the seed client to the route
+00183         _route.push_back (_unvisited [seed]);
+00184 
+00185         // Mark the client as already selected as a main seed
+00186         // (i.e., as a seed for the first subroute of an individual)
+00187         if (!_seedCheckingOverride) {
+00188 
+00189             mSeedsUsed [_unvisited [seed]] = true;
+00190             mSeedsUsedCount++;
+00191 
+00192             if (mSeedsUsedCount == mSeedsUsed.size () - 1) {
+00193 
+00194                 mSeedsUsedCount = 0;
+00195 
+00196                 for (unsigned i = 0; i < mSeedsUsed.size (); i++)
+00197                     mSeedsUsed [i] = false;
+00198 
+00199             }
+00200 
+00201         }
+00202 
+00203         // Delete the selected client from the unvisited vector
+00204         _unvisited [seed] = _unvisited [_unvisitedIdx];
+00205         _unvisitedIdx--;
+00206 
+00207         bool feasibleInsert = true;
+00208 
+00209         while (feasibleInsert && _unvisitedIdx >= 0) {
+00210 
+00211             // Aux var to store the position to insert new clients in the route
+00212             Route::iterator it;
+00213 
+00214             unsigned next;
+00215 
+00216             if (selectBestInsertion (_unvisited, _unvisitedIdx, _route, next, it)) {
+00217 
+00218                 if (it == _route.end ())
+00219                     _route.insert (_route.begin (), _unvisited [next]);
+00220                 else
+00221                     _route.insert (it + 1, _unvisited [next]);
+00222 
+00223                 _unvisited [next] = _unvisited [_unvisitedIdx];
+00224                 _unvisitedIdx--;
+00225 
+00226             }
+00227             else
+00228                 feasibleInsert = false;
+00229 
+00230         }
+00231 
+00232         return true;
+00233 
+00234     }
+00235 
+00236 
+00249     bool selectBestInsertion (std::vector<int>& _unvisited, unsigned _unvisitedIdx, Route& _route,
+00250                               unsigned& _nextClient, Route::iterator& _it                          ) {
+00251 
+00252         double minCost = 999999999;
+00253         bool found = false;
+00254 
+00255         bool insertionPossible = false;
+00256         double cost = 0.0;
+00257 
+00258         for (unsigned i = 0; i < _unvisitedIdx; i++) {
+00259 
+00260             insertionPossible = evaluateInsertion (_route, _unvisited [i], -1, cost);
+00261 
+00262             if (insertionPossible && cost < minCost) {
+00263 
+00264                 _it = _route.end ();
+00265                 _nextClient = i;
+00266                 minCost = cost;
+00267                 found = true;
+00268 
+00269             }
+00270 
+00271         }
+00272 
+00273         for (Route::iterator it = _route.begin (); it != _route.end (); it++) {
+00274 
+00275             for (unsigned i = 0; i < _unvisitedIdx; i++) {
+00276 
+00277                 insertionPossible = evaluateInsertion (_route, _unvisited [i], *it, cost);
+00278 
+00279                 if (insertionPossible && cost < minCost) {
+00280 
+00281                     _it = it;
+00282                     _nextClient = i;
+00283                     minCost = cost;
+00284                     found = true;
+00285 
+00286                 }
+00287 
+00288             }
+00289 
+00290         }
+00291 
+00292         return found;
+00293 
+00294     }
+00295 
+00296 
+00308     bool evaluateInsertion (Route& _route, unsigned _newClient, int _afterClient, double& _cost) {
+00309 
+00310         // First of all, we check for capacity constraint to be satisfied
+00311         // before trying to insert the new client in the route
+00312         double demand = 0.0;
+00313 
+00314         // Cummulate the demand of all the clients in the current route
+00315         for (unsigned i = 0; i < _route.size (); i++)
+00316             demand += eoVRPUtils::clients [i].demand;
+00317 
+00318         // And then the demand of the new client
+00319         demand += eoVRPUtils::clients [_newClient].demand;
+00320 
+00321         // And finally, check if the cummulated demand exceeds vehicle's capacity
+00322         if (demand > VEHICLE_CAPACITY)
+00323             return false;
+00324 
+00325         // Now check for insertion position and TW constraints
+00326         double readyTime, dueTime, serviceTime;
+00327 
+00328         // If the client must be inserted after client "-1" that means that it
+00329         // has to be inserted at the very beginning of the route
+00330         if (_afterClient == - 1) {
+00331 
+00332             // We calculate the distante from the depot to the inserted client
+00333             _cost = eoVRPUtils::distance (0, _newClient);
+00334 
+00335             // And check that its TW is not exceeded
+00336             eoVRPUtils::getTimeWindow (_newClient, readyTime, dueTime, serviceTime);
+00337 
+00338             if (_cost > dueTime)
+00339                 return false;
+00340 
+00341             // If the vehicle arrives before client's ready time, it has
+00342             // to wait until the client is ready
+00343             if (_cost < readyTime)
+00344                 _cost = readyTime;
+00345 
+00346             // Add the service time for the newly inserted client
+00347             _cost += serviceTime;
+00348 
+00349             // And the cost of traveling to the next one (the first one in the old route)
+00350             _cost = _cost + eoVRPUtils::distance (_newClient, _route [0]);
+00351 
+00352         }
+00353         else
+00354             // We just need to add the cost of traveling from the depot to the first client
+00355             _cost = eoVRPUtils::distance (0, _route [0]);
+00356 
+00357         // Main loop to evaluate the rest of the route (except the last position)
+00358         for (unsigned i = 0; i < _route.size () - 1; i++) {
+00359 
+00360             // Check that the TW is not exceeded for the current client
+00361             eoVRPUtils::getTimeWindow (_route [i], readyTime, dueTime, serviceTime);
+00362 
+00363             if (_cost > dueTime)
+00364                 return false;
+00365 
+00366             // If it is not exceeded, we check wether the vehicle arrives before
+00367             // the client is ready. If that's the case, it has to wait
+00368             if (_cost < readyTime)
+00369                 _cost = readyTime;
+00370 
+00371             // We add the service time for this client
+00372             _cost += serviceTime;
+00373 
+00374             // And now check if we have to insert the new client after the current one
+00375             if (_route [i] == _afterClient) {
+00376 
+00377                 // If that's the case, we add the cost of traveling from current client
+00378                 // to the new one
+00379                 _cost = _cost + eoVRPUtils::distance (_route [i], _newClient);
+00380 
+00381                 // And check for its TW to be not exceeded
+00382                 eoVRPUtils::getTimeWindow (_newClient, readyTime, dueTime, serviceTime);
+00383 
+00384                 if (_cost > dueTime)
+00385                     return false;
+00386 
+00387                 // If the vehicle arrives before client's ready time, it has
+00388                 // to wait until the client is ready
+00389                 if (_cost < readyTime)
+00390                     _cost = readyTime;
+00391 
+00392                 // Add the service time for the newly inserted client
+00393                 _cost += serviceTime;
+00394 
+00395                 // And the cost of traveling to the next one
+00396                 _cost = _cost + eoVRPUtils::distance (_newClient, _route [i + 1]);
+00397 
+00398             }
+00399             else
+00400                 // We simply add the cost of traveling to the next client
+00401                 _cost = _cost + eoVRPUtils::distance (_route [i], _route [i + 1]);
+00402 
+00403         }
+00404 
+00405         // Consider the special case where the new client has
+00406         // to be inserted at the end of the route
+00407         unsigned last =_route [_route.size () - 1];
+00408 
+00409         // We first check that the TW of the last client in the old route
+00410         // has not been exedeed
+00411         eoVRPUtils::getTimeWindow (last, readyTime, dueTime, serviceTime);
+00412 
+00413         if (_cost > dueTime)
+00414             return false;
+00415 
+00416         // If the vehicle arrives before the client is ready, it waits
+00417         if (_cost < readyTime)
+00418             _cost = readyTime;
+00419 
+00420         // Now we add its service time
+00421         _cost += serviceTime;
+00422 
+00423         // And check if the new client has to be inserted at the end
+00424         // of the old route
+00425         if (_afterClient == last) {
+00426 
+00427             // In that case, we add the cost of traveling from the last client
+00428             // to the one being inserted
+00429             _cost = _cost + eoVRPUtils::distance (last, _newClient);
+00430 
+00431             // Check for its TW not being exceeded
+00432             eoVRPUtils::getTimeWindow (_newClient, readyTime, dueTime, serviceTime);
+00433 
+00434             if (_cost > dueTime)
+00435                 return false;
+00436 
+00437             // If the vehicle arrives before the new client is ready, it waits
+00438             if (_cost < readyTime)
+00439                 _cost = readyTime;
+00440 
+00441             // Now we add its service time
+00442             _cost += serviceTime;
+00443 
+00444             // And, finally, the time to travel back to the depot
+00445             _cost = _cost + eoVRPUtils::distance (_newClient, 0);
+00446 
+00447         }
+00448         else
+00449             // In this case we just add the cost of traveling back to the depot
+00450             _cost = _cost + eoVRPUtils::distance (last, 0);
+00451 
+00452         // Last thing to check is that the vehicle is back on time to the depot
+00453         eoVRPUtils::getTimeWindow (0, readyTime, dueTime, serviceTime);
+00454 
+00455         if (_cost > dueTime)
+00456             return false;
+00457 
+00458         // If all constraints are satisfied, we return true, and the cost of the
+00459         // insertion in the variable "_cost"
+00460         return true;
+00461 
+00462     }
+00463 
+00464 
+00472     unsigned selectFarthestClientAsSeed (const std::vector<int>& _unvisited, int _unvisitedIdx) {
+00473 
+00474         unsigned maxPos  = 0;
+00475         double   maxDist = eoVRPUtils::distance (0, _unvisited [0]);
+00476 
+00477         for (unsigned i = 1; i <= _unvisitedIdx; i++)
+00478             if (eoVRPUtils::distance (0, _unvisited [i]) > maxDist) {
+00479 
+00480                 maxPos  = i;
+00481                 maxDist = eoVRPUtils::distance (0, _unvisited [i]);
+00482 
+00483             }
+00484 
+00485         return maxPos;
+00486 
+00487     }
+00488 
+00489 
+00498     unsigned selectCheapestClient (const std::vector<int>& _unvisited, int _unvisitedIdx, bool _seedCheckingOverride) {
+00499 
+00500         int    cheapestPos  = -1;
+00501         double cheapestCost = 999999999;
+00502 
+00503         for (unsigned i = 0; i <= _unvisitedIdx; i++) {
+00504 
+00505             double cost = (-ALFA * eoVRPUtils::distance (0, _unvisited [i])    ) +
+00506                           ( BETA * eoVRPUtils::clients [_unvisited [i]].dueTime) +
+00507                           (GAMMA * eoVRPUtils::polarAngle (0, _unvisited [i]) / 360 * eoVRPUtils::distance (0, _unvisited [i]));
+00508 
+00509             if ((cost <  cheapestCost        || (cost == cheapestCost && rng.flip ())) &&
+00510                     (!mSeedsUsed [_unvisited [i]] ||  _seedCheckingOverride               )    ) {
+00511 
+00512                 cheapestPos  = i;
+00513                 cheapestCost = cost;
+00514 
+00515             }
+00516 
+00517         }
+00518 
+00519         return cheapestPos;
+00520 
+00521     }
+00522 
+00523 
+00532     unsigned selectBestClientAsSeed (const std::vector<int>& _unvisited, int _unvisitedIdx, bool _seedCheckingOverride) {
+00533 
+00534         int    cheapestPos  = -1;
+00535         double cheapestCost = 999999999;
+00536         double alfa, beta;
+00537 
+00538         alfa = rng.uniform ();
+00539         beta = rng.uniform ();
+00540 
+00541         for (unsigned i = 0; i <= _unvisitedIdx; i++) {
+00542 
+00543             double cost = (alfa * eoVRPUtils::distance (0, _unvisited [i])) +
+00544                           (beta * (eoVRPUtils::clients [_unvisited [i]].dueTime - eoVRPUtils::clients [_unvisited [i]].readyTime));
+00545 
+00546 
+00547             if ((cost <  cheapestCost        || (cost == cheapestCost && rng.flip ())) &&
+00548                     (!mSeedsUsed [_unvisited [i]] ||  _seedCheckingOverride               )    ) {
+00549 
+00550                 cheapestPos  = i;
+00551                 cheapestCost = cost;
+00552 
+00553             }
+00554 
+00555         }
+00556 
+00557         return cheapestPos;
+00558 
+00559     }
+00560 
+00561 
+00569     void RandomInitializationNoCheck (eoVRP& _gen) {
+00570 
+00571         // Erase any previous contents
+00572         _gen.clear ();
+00573 
+00574         // Aux vector to store unvisited clients
+00575         std::vector<int> unvisited;
+00576 
+00577         // And an index to point to the last unvisited cutomer
+00578         int unvisitedIdx = eoVRPUtils::clients.size () - 2;
+00579 
+00580         // Initialization of the unvisited vector with all the clients
+00581         for (unsigned i = 1; i < eoVRPUtils::clients.size (); i++)
+00582             unvisited.push_back (i);
+00583 
+00584         while (unvisitedIdx >= 0) {
+00585 
+00586             unsigned n = rng.random (unvisitedIdx);
+00587 
+00588             for (unsigned i = 0; i <= n; i++) {
+00589 
+00590                 unsigned pos = rng.random (unvisitedIdx);
+00591 
+00592                 _gen.push_back (unvisited [pos]);
+00593 
+00594                 unvisited [pos] = unvisited [unvisitedIdx];
+00595                 unvisitedIdx--;
+00596 
+00597             }
+00598 
+00599         }
+00600 
+00601     }
+00602 
+00603 
+00604 };
+00605 
+00606 #endif
+

Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_mutation_8h-source.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_mutation_8h-source.html new file mode 100644 index 000000000..f35a9a1b6 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_mutation_8h-source.html @@ -0,0 +1,205 @@ + + +CVRP-TW: eoVRPMutation.h Source File + + + + +
+
+

eoVRPMutation.h

00001 /*
+00002  * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00003  * (C) OPAC Team, LIFL, 2002-2007
+00004  *
+00005  * (c) Antonio LaTorre <atorre@fi.upm.es>, 2007
+00006  *
+00007  * This software is governed by the CeCILL license under French law and
+00008  * abiding by the rules of distribution of free software.  You can  use,
+00009  * modify and/ or redistribute the software under the terms of the CeCILL
+00010  * license as circulated by CEA, CNRS and INRIA at the following URL
+00011  * "http://www.cecill.info".
+00012  *
+00013  * As a counterpart to the access to the source code and  rights to copy,
+00014  * modify and redistribute granted by the license, users are provided only
+00015  * with a limited warranty  and the software's author,  the holder of the
+00016  * economic rights,  and the successive licensors  have only  limited liability.
+00017  *
+00018  * In this respect, the user's attention is drawn to the risks associated
+00019  * with loading,  using,  modifying and/or developing or reproducing the
+00020  * software by the user in light of its specific status of free software,
+00021  * that may mean  that it is complicated to manipulate,  and  that  also
+00022  * therefore means  that it is reserved for developers  and  experienced
+00023  * professionals having in-depth computer knowledge. Users are therefore
+00024  * encouraged to load and test the software's suitability as regards their
+00025  * requirements in conditions enabling the security of their systems and/or
+00026  * data to be ensured and,  more generally, to use and operate it in the
+00027  * same conditions as regards security.
+00028  * The fact that you are presently reading this means that you have had
+00029  * knowledge of the CeCILL license and that you accept its terms.
+00030  *
+00031  * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00032  * Contact: paradiseo-help@lists.gforge.inria.fr
+00033  *
+00034  */
+00035 
+00036 #ifndef eoVRPMutation_H
+00037 #define eoVRPMutation_H
+00038 
+00039 // General includes
+00040 #include <algorithm>
+00041 
+00042 // The base definition of eoMonOp
+00043 #include <eoOp.h>
+00044 
+00052 class eoVRPMutation: public eoMonOp <eoVRP> {
+00053 
+00054 public:
+00055 
+00060     eoVRPMutation () {
+00061 
+00062     }
+00063 
+00064 
+00070     std::string className () const {
+00071 
+00072         return "eoVRPMutation";
+00073 
+00074     }
+00075 
+00076 
+00086     bool operator () (eoVRP& _genotype) {
+00087 
+00088         bool   res = false;
+00089         double op  = rng.uniform ();
+00090 
+00091 
+00092         if (op <= 0.05)
+00093             res = swapMutation (_genotype);
+00094         else if ((op > 0.05) && (op <= 0.20))
+00095             res = inversionMutation (_genotype);
+00096         else if ((op > 0.20) && (op <= 0.25))
+00097             res = insertionMutation (_genotype);
+00098         else if ((op > 0.25) && (op <= 0.45))
+00099             res = DisplacementMutation (_genotype);
+00100 
+00101         if (res)
+00102             _genotype.cleanRoutes ();
+00103 
+00104         return res;
+00105 
+00106     }
+00107 
+00108 
+00109 private:
+00110 
+00111 
+00119     bool swapMutation (eoVRP& _genotype) {
+00120 
+00121         int p1 = rng.random (_genotype.size ());
+00122         int p2 = -1;
+00123 
+00124         do {
+00125             p2 = rng.random (_genotype.size ());
+00126         } while (_genotype [p2] == _genotype [p1]);
+00127 
+00128         std::swap (_genotype [p1], _genotype [p2]);
+00129 
+00130         return true;
+00131 
+00132     }
+00133 
+00134 
+00142     bool inversionMutation (eoVRP& _genotype) {
+00143 
+00144         int p1 = rng.random (_genotype.size ());
+00145         int p2 = -1;
+00146 
+00147         do {
+00148             p2 = rng.random (_genotype.size ());
+00149         } while (_genotype [p2] == _genotype [p1]);
+00150 
+00151         if (p1 > p2)
+00152             std::swap (p1, p2);
+00153 
+00154         // Reverse the subroute
+00155         reverse (_genotype.begin () + p1, _genotype.begin () + p2 + 1);
+00156 
+00157 
+00158         return false;
+00159 
+00160     }
+00161 
+00162 
+00170     bool insertionMutation (eoVRP& _genotype) {
+00171 
+00172         int p = -1;
+00173 
+00174         // Selection of the client to be moved
+00175         do {
+00176             p = rng.random (_genotype.size ());
+00177         } while (_genotype [p] == -1);
+00178 
+00179         // Temporary copy of the client
+00180         unsigned client = _genotype [p];
+00181 
+00182         _genotype.erase (_genotype.begin () + p);
+00183 
+00184         p = rng.random (_genotype.size () - 1);
+00185         _genotype.insert (_genotype.begin () + p, client);
+00186 
+00187         return true;
+00188 
+00189     }
+00190 
+00191 
+00199     bool DisplacementMutation (eoVRP& _genotype) {
+00200 
+00201         int p1 = rng.random (_genotype.size ());
+00202         int p2 = -1;
+00203 
+00204         do {
+00205             p2 = rng.random (_genotype.size ());
+00206         } while (_genotype [p2] == _genotype [p1]);
+00207 
+00208         if (p1 > p2)
+00209             std::swap (p1, p2);
+00210 
+00211         // Temporary copy of the fragment being moved
+00212         Route route;
+00213 
+00214         for (unsigned i = p1; i <= p2; i++)
+00215             route.push_back (_genotype [i]);
+00216 
+00217         _genotype.erase (_genotype.begin () + p1, _genotype.begin () + p2 + 1);
+00218 
+00219         unsigned p = rng.random ((_genotype.size () > 0) ? _genotype.size () - 1 : 0);
+00220         _genotype.insert (_genotype.begin () + p, route.begin (), route.end ());
+00221 
+00222         return true;
+00223 
+00224     }
+00225 
+00226 
+00227 };
+00228 
+00229 #endif
+

Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_quad_crossover_8h-source.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_quad_crossover_8h-source.html new file mode 100644 index 000000000..c5912e070 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_quad_crossover_8h-source.html @@ -0,0 +1,345 @@ + + +CVRP-TW: eoVRPQuadCrossover.h Source File + + + + +
+
+

eoVRPQuadCrossover.h

00001 /*
+00002  * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00003  * (C) OPAC Team, LIFL, 2002-2007
+00004  *
+00005  * (c) Antonio LaTorre <atorre@fi.upm.es>, 2007
+00006  *
+00007  * This software is governed by the CeCILL license under French law and
+00008  * abiding by the rules of distribution of free software.  You can  use,
+00009  * modify and/ or redistribute the software under the terms of the CeCILL
+00010  * license as circulated by CEA, CNRS and INRIA at the following URL
+00011  * "http://www.cecill.info".
+00012  *
+00013  * As a counterpart to the access to the source code and  rights to copy,
+00014  * modify and redistribute granted by the license, users are provided only
+00015  * with a limited warranty  and the software's author,  the holder of the
+00016  * economic rights,  and the successive licensors  have only  limited liability.
+00017  *
+00018  * In this respect, the user's attention is drawn to the risks associated
+00019  * with loading,  using,  modifying and/or developing or reproducing the
+00020  * software by the user in light of its specific status of free software,
+00021  * that may mean  that it is complicated to manipulate,  and  that  also
+00022  * therefore means  that it is reserved for developers  and  experienced
+00023  * professionals having in-depth computer knowledge. Users are therefore
+00024  * encouraged to load and test the software's suitability as regards their
+00025  * requirements in conditions enabling the security of their systems and/or
+00026  * data to be ensured and,  more generally, to use and operate it in the
+00027  * same conditions as regards security.
+00028  * The fact that you are presently reading this means that you have had
+00029  * knowledge of the CeCILL license and that you accept its terms.
+00030  *
+00031  * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00032  * Contact: paradiseo-help@lists.gforge.inria.fr
+00033  *
+00034  */
+00035 
+00036 #ifndef eoVRPQuadCrossover_H
+00037 #define eoVRPQuadCrossover_H
+00038 
+00039 // General includes
+00040 #include <assert.h>
+00041 #include <values.h>
+00042 #include <utils/eoRNG.h>
+00043 #include <set>
+00044 
+00045 // The base definition of eoQuadOp
+00046 #include <eoOp.h>
+00047 
+00053 class eoVRPGenericCrossover: public eoQuadOp <eoVRP> {
+00054 
+00055 public:
+00056 
+00061     eoVRPGenericCrossover () {
+00062 
+00063     }
+00064 
+00065 
+00071     std::string className () const {
+00072 
+00073         return "eoVRPGenericCrossover";
+00074 
+00075     }
+00076 
+00077 
+00085     bool operator () (eoVRP& _genotype1, eoVRP& _genotype2) {
+00086 
+00087         Routes c1 = _genotype1.routes ();
+00088         Routes c2 = _genotype2.routes ();
+00089 
+00090         GenericCrossover (_genotype1.routes (), c2);
+00091         GenericCrossover (_genotype2.routes (), c1);
+00092 
+00093         _genotype1.encode (c1);
+00094         _genotype2.encode (c2);
+00095 
+00096         return true;
+00097 
+00098     }
+00099 
+00100 
+00101 private:
+00102 
+00110     bool GenericCrossover (const Routes& _donor, Routes& _receiver) const {
+00111 
+00112         unsigned srcRoute = rng.random (_donor.size ());
+00113         unsigned srcPos1  = rng.random (_donor [srcRoute].size ());
+00114         unsigned srcPos2  = rng.random (_donor [srcRoute].size ());
+00115 
+00116         if (srcPos1 > srcPos2)
+00117             std::swap (srcPos1, srcPos2);
+00118 
+00119         Route::iterator it;
+00120 
+00121         for (unsigned i = srcPos1; i <= srcPos2; i++)
+00122             for (unsigned j = 0; j < _receiver.size (); j++) {
+00123 
+00124                 it = find (_receiver [j].begin (), _receiver [j].end (), _donor [srcRoute][i]);
+00125 
+00126                 if (it != _receiver [j].end ()) {
+00127 
+00128                     // Deletion of the repeated client
+00129                     _receiver [j].erase (it);
+00130 
+00131                     // Deletion of empty route, if necessary
+00132                     if (_receiver [j].size () == 0)
+00133                         _receiver.erase (_receiver.begin () + j);
+00134 
+00135                     break;
+00136 
+00137                 }
+00138 
+00139             }
+00140 
+00141         unsigned dstRoute = rng.random (_receiver.size ());
+00142 
+00143         it = _receiver [dstRoute].begin () + rng.random (_receiver [dstRoute].size ());
+00144 
+00145         _receiver [dstRoute].insert (it + 1, _donor [srcRoute].begin () + srcPos1, _donor [srcRoute].begin () + srcPos2 + 1);
+00146 
+00147         return true;
+00148 
+00149     }
+00150 
+00151 };
+00152 
+00153 
+00159 class eoVRPOnePointCrossover: public eoQuadOp <eoVRP> {
+00160 
+00161 public:
+00162 
+00167     eoVRPOnePointCrossover () {
+00168 
+00169     }
+00170 
+00171 
+00177     std::string className () const {
+00178 
+00179         return "eoVRPOnePointCrossover";
+00180 
+00181     }
+00182 
+00183 
+00191     bool operator () (eoVRP& _genotype1, eoVRP& _genotype2) {
+00192 
+00193         eoVRP& _gen = _genotype1;
+00194 
+00195         unsigned orig1, orig2, dest;
+00196 
+00197         // First child
+00198         orig1 = rng.random (_genotype2.size ());
+00199         orig2 = rng.random (_genotype2.size ());
+00200 
+00201         if (orig1 > orig2)
+00202             std::swap (orig1, orig2);
+00203 
+00204         for (unsigned i = orig1; i <= orig2; i++)
+00205             _genotype1.erase (find (_genotype1.begin (), _genotype1.end (), _genotype2 [i]));
+00206 
+00207         dest = rng.random (_genotype1.size ());
+00208 
+00209         _genotype1.insert (_genotype1.begin () + dest, _genotype2.begin () + orig1, _genotype2.begin () + orig2 + 1);
+00210 
+00211         // Second child
+00212         orig1 = rng.random (_gen.size ());
+00213         orig2 = rng.random (_gen.size ());
+00214 
+00215         if (orig1 > orig2)
+00216             std::swap (orig1, orig2);
+00217 
+00218         for (unsigned i = orig1; i <= orig2; i++)
+00219             _genotype2.erase (find (_genotype2.begin (), _genotype2.end (), _gen [i]));
+00220 
+00221         dest = rng.random (_genotype2.size ());
+00222 
+00223         _genotype2.insert (_genotype2.begin () + dest, _gen.begin () + orig1, _gen.begin () + orig2 + 1);
+00224 
+00225         _genotype1.cleanRoutes ();
+00226         _genotype2.cleanRoutes ();
+00227 
+00228         return true;
+00229 
+00230     }
+00231 
+00232 };
+00233 
+00234 
+00240 class eoVRPEdgeCrossover: public eoQuadOp <eoVRP> {
+00241 
+00242 public:
+00243 
+00248     eoVRPEdgeCrossover () {
+00249 
+00250     }
+00251 
+00252 
+00258     std::string className () const {
+00259 
+00260         return "eoVRPEdgeCrossover";
+00261 
+00262     }
+00263 
+00264 
+00272     bool operator () (eoVRP& _genotype1, eoVRP& _genotype2) {
+00273 
+00274         eoVRP par [2];
+00275 
+00276         // Backup of the parents
+00277         par [0] = _genotype1;
+00278         par [1] = _genotype2;
+00279 
+00280         _genotype1.clean ();
+00281         _genotype2.clean ();
+00282 
+00283         EdgeCrossover (par [0], par [1], _genotype1);
+00284         EdgeCrossover (par [0], par [1], _genotype2);
+00285 
+00286         return true;
+00287 
+00288     }
+00289 
+00290 
+00291 private:
+00292 
+00301     bool EdgeCrossover (eoVRP& _genotype1, eoVRP& _genotype2, eoVRP& _child) {
+00302 
+00303         std::vector <std::set <unsigned> > _map;
+00304         std::vector <bool> visited;
+00305 
+00306         // Build map
+00307         unsigned len = _genotype1.size () ;
+00308 
+00309         _map.resize (len+1) ;
+00310 
+00311         for (unsigned i = 0 ; i < len ; i ++) {
+00312 
+00313             _map [_genotype1 [i]].insert (_genotype1 [(i + 1) % len]) ;
+00314             _map [_genotype2 [i]].insert (_genotype2 [(i + 1) % len]) ;
+00315             _map [_genotype1 [i]].insert (_genotype1 [(i - 1 + len) % len]) ;
+00316             _map [_genotype2 [i]].insert (_genotype2 [(i - 1 + len) % len]) ;
+00317 
+00318         }
+00319 
+00320         visited.clear () ;
+00321         visited.resize (len+1, false) ;
+00322 
+00323 
+00324         _child.clear () ;
+00325 
+00326         unsigned cur_vertex = rng.random (len)+1;
+00327 
+00328         add_vertex (cur_vertex, visited, _map, _child);
+00329 
+00330         for (unsigned i = 1; i < len; i ++) {
+00331 
+00332             unsigned len_min_entry = MAXINT;
+00333 
+00334             std::set <unsigned>& neigh = _map [cur_vertex];
+00335 
+00336             for (std::set <unsigned>::iterator it = neigh.begin (); it != neigh.end (); it ++) {
+00337 
+00338                     unsigned l = _map [*it].size ();
+00339 
+00340                     if (len_min_entry > l)
+00341                         len_min_entry = l;
+00342 
+00343                 }
+00344 
+00345             std::vector <unsigned> cand; /* Candidates */
+00346 
+00347             for (std::set <unsigned>::iterator it = neigh.begin (); it != neigh.end (); it ++) {
+00348 
+00349                     unsigned l = _map [*it].size ();
+00350 
+00351                     if (len_min_entry == l)
+00352                         cand.push_back (*it);
+00353 
+00354                 }
+00355 
+00356             if (!cand.size ()) {
+00357 
+00358                 /* Oh no ! Implicit mutation */
+00359                 for (unsigned j = 1; j <= len; j ++)
+00360                     if (!visited [j])
+00361                         cand.push_back (j);
+00362 
+00363             }
+00364 
+00365             cur_vertex = cand [rng.random (cand.size ())] ;
+00366 
+00367             add_vertex (cur_vertex, visited, _map, _child);
+00368 
+00369         }
+00370 
+00371     }
+00372 
+00373 
+00380     void remove_entry (unsigned _vertex, std::vector <std::set <unsigned> >& _map) {
+00381 
+00382         std::set <unsigned>& neigh = _map [_vertex];
+00383 
+00384         for (std::set <unsigned>::iterator it = neigh.begin (); it != neigh.end (); it++)
+00385                 _map [*it].erase (_vertex);
+00386 
+00387     }
+00388 
+00389 
+00398     void add_vertex (unsigned _vertex, std::vector <bool>& _visited, std::vector <std::set <unsigned> >& _map, eoVRP& _child) {
+00399 
+00400         _visited [_vertex] = true;
+00401         _child.push_back (_vertex);
+00402         remove_entry (_vertex, _map);
+00403 
+00404     }
+00405 
+00406 };
+00407 
+00408 #endif
+

Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_stat_8h-source.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_stat_8h-source.html new file mode 100644 index 000000000..7c4191a96 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_stat_8h-source.html @@ -0,0 +1,99 @@ + + +CVRP-TW: eoVRPStat.h Source File + + + + +
+
+

eoVRPStat.h

00001 /*
+00002  * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00003  * (C) OPAC Team, LIFL, 2002-2007
+00004  *
+00005  * (c) Antonio LaTorre <atorre@fi.upm.es>, 2007
+00006  *
+00007  * This software is governed by the CeCILL license under French law and
+00008  * abiding by the rules of distribution of free software.  You can  use,
+00009  * modify and/ or redistribute the software under the terms of the CeCILL
+00010  * license as circulated by CEA, CNRS and INRIA at the following URL
+00011  * "http://www.cecill.info".
+00012  *
+00013  * As a counterpart to the access to the source code and  rights to copy,
+00014  * modify and redistribute granted by the license, users are provided only
+00015  * with a limited warranty  and the software's author,  the holder of the
+00016  * economic rights,  and the successive licensors  have only  limited liability.
+00017  *
+00018  * In this respect, the user's attention is drawn to the risks associated
+00019  * with loading,  using,  modifying and/or developing or reproducing the
+00020  * software by the user in light of its specific status of free software,
+00021  * that may mean  that it is complicated to manipulate,  and  that  also
+00022  * therefore means  that it is reserved for developers  and  experienced
+00023  * professionals having in-depth computer knowledge. Users are therefore
+00024  * encouraged to load and test the software's suitability as regards their
+00025  * requirements in conditions enabling the security of their systems and/or
+00026  * data to be ensured and,  more generally, to use and operate it in the
+00027  * same conditions as regards security.
+00028  * The fact that you are presently reading this means that you have had
+00029  * knowledge of the CeCILL license and that you accept its terms.
+00030  *
+00031  * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00032  * Contact: paradiseo-help@lists.gforge.inria.fr
+00033  *
+00034  */
+00035 
+00036 #ifndef _eoVRPStat_h
+00037 #define _eoVRPStat_h
+00038 
+00039 // The base definition of eoInit
+00040 #include <utils/eoStat.h>
+00041 
+00047 class eoVRPStat : public eoStat<eoVRP, double> {
+00048 
+00049 public:
+00050 
+00056     eoVRPStat (std::string _description = "eoVRPStat ") : eoStat<eoVRP, double> (0.0, _description) {
+00057 
+00058     }
+00059 
+00060 
+00066     void operator() (const eoPop<eoVRP>& _pop) {
+00067 
+00068         double tmpStat (0.);
+00069         eoStat<eoVRP, double>::value () = tmpStat;
+00070 
+00071     }
+00072 
+00073 
+00079     virtual std::string className (void) const {
+00080 
+00081         return "eoVRPStat";
+00082 
+00083     }
+00084 
+00085 
+00086 private:
+00087 
+00088 };
+00089 
+00090 #endif
+

Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_utils_8h-source.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_utils_8h-source.html new file mode 100644 index 000000000..0e174e47c --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/eo_v_r_p_utils_8h-source.html @@ -0,0 +1,249 @@ + + +CVRP-TW: eoVRPUtils.h Source File + + + + +
+
+

eoVRPUtils.h

00001 /*
+00002  * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007
+00003  * (C) OPAC Team, LIFL, 2002-2007
+00004  *
+00005  * (c) Antonio LaTorre <atorre@fi.upm.es>, 2007
+00006  *
+00007  * This software is governed by the CeCILL license under French law and
+00008  * abiding by the rules of distribution of free software.  You can  use,
+00009  * modify and/ or redistribute the software under the terms of the CeCILL
+00010  * license as circulated by CEA, CNRS and INRIA at the following URL
+00011  * "http://www.cecill.info".
+00012  *
+00013  * As a counterpart to the access to the source code and  rights to copy,
+00014  * modify and redistribute granted by the license, users are provided only
+00015  * with a limited warranty  and the software's author,  the holder of the
+00016  * economic rights,  and the successive licensors  have only  limited liability.
+00017  *
+00018  * In this respect, the user's attention is drawn to the risks associated
+00019  * with loading,  using,  modifying and/or developing or reproducing the
+00020  * software by the user in light of its specific status of free software,
+00021  * that may mean  that it is complicated to manipulate,  and  that  also
+00022  * therefore means  that it is reserved for developers  and  experienced
+00023  * professionals having in-depth computer knowledge. Users are therefore
+00024  * encouraged to load and test the software's suitability as regards their
+00025  * requirements in conditions enabling the security of their systems and/or
+00026  * data to be ensured and,  more generally, to use and operate it in the
+00027  * same conditions as regards security.
+00028  * The fact that you are presently reading this means that you have had
+00029  * knowledge of the CeCILL license and that you accept its terms.
+00030  *
+00031  * ParadisEO WebSite : http://paradiseo.gforge.inria.fr
+00032  * Contact: paradiseo-help@lists.gforge.inria.fr
+00033  *
+00034  */
+00035 
+00036 #ifndef eoVRPUtils_h
+00037 #define eoVRPUtils_h
+00038 
+00039 // General includes
+00040 #include <vector>
+00041 #include <utility>
+00042 #include <fstream>
+00043 #include <iostream>
+00044 #include <sstream>
+00045 #include <math.h>
+00046 
+00052 #define PI                   3.14159265
+00053 
+00060 #define VEHICLE_CAPACITY   200
+00061 
+00062 
+00063 typedef std::vector<int> Route;
+00064 typedef std::vector< Route > Routes;
+00065 
+00066 
+00072 namespace eoVRPUtils {
+00073 
+00086 typedef struct ClientData {
+00087 
+00088     unsigned id;            
+00089     double   x;             
+00090     double   y;             
+00091     double   demand;        
+00092     double   readyTime;     
+00093     double   dueTime;       
+00094     double   serviceTime;   
+00096 } ClientDataT;
+00097 
+00098 
+00099 static std::vector <ClientDataT> clients;             
+00100 static std::vector <std::vector <double> > dist;      
+00108 void computeDistances () {
+00109 
+00110     unsigned numClients = clients.size ();
+00111 
+00112     dist.resize (numClients) ;
+00113 
+00114     for (unsigned i = 0; i < dist.size (); i ++)
+00115         dist [i].resize (numClients);
+00116 
+00117     // Distances computation
+00118     for (unsigned i = 0; i < dist.size (); i ++)
+00119         for (unsigned j = i + 1 ; j < dist.size (); j ++) {
+00120 
+00121             double distX = clients [i].x - clients [j].x;
+00122             double distY = clients [i].y - clients [j].y;
+00123 
+00124             dist [i][j] = dist [j][i] = sqrt (distX * distX + distY * distY);
+00125 
+00126         }
+00127 
+00128 }
+00129 
+00130 
+00139 void getTimeWindow (unsigned _client, double& _readyTime, double& _dueTime, double& _serviceTime) {
+00140 
+00141     assert (_client >= 0 && _client < clients.size ());
+00142 
+00143     _readyTime = clients [_client].readyTime;
+00144     _dueTime = clients [_client].dueTime;
+00145     _serviceTime = clients [_client].serviceTime;
+00146 
+00147 }
+00148 
+00149 
+00157 float distance (unsigned _from,  unsigned _to) {
+00158 
+00159     assert (_from >= 0 && _from < clients.size ());
+00160     assert (_to   >= 0 && _to   < clients.size ());
+00161 
+00162     return dist [_from][_to];
+00163 
+00164 }
+00165 
+00166 
+00174 float polarAngle (unsigned _from, unsigned _to) {
+00175 
+00176     assert (_from >= 0 && _from < clients.size ());
+00177     assert (_to   >= 0 && _to   < clients.size ());
+00178 
+00179     double angle = atan2 (clients [_from].y - clients [_to].y,
+00180                           clients [_from].x - clients [_to].x);
+00181 
+00182     // To convert it from radians to degrees
+00183     angle *= 180 / PI;
+00184 
+00185     if (angle < 0)
+00186         angle *= -1;
+00187 
+00188     return angle;
+00189 
+00190 }
+00191 
+00192 
+00199 void load (const char* _fileName) {
+00200 
+00201     std::ifstream f (_fileName);
+00202 
+00203     if (f) {
+00204 
+00205         while (!f.eof ()) {
+00206 
+00207             ClientDataT client;
+00208 
+00209             f >> client.id;
+00210             f >> client.x;
+00211             f >> client.y;
+00212             f >> client.demand;
+00213             f >> client.readyTime;
+00214             f >> client.dueTime;
+00215             f >> client.serviceTime;
+00216 
+00217             clients.push_back (client);
+00218 
+00219         }
+00220 
+00221         f.close ();
+00222 
+00223         computeDistances ();
+00224 
+00225     }
+00226     else {
+00227 
+00228         std::cerr << "Error: the file: " << _fileName << " doesn't exist !!!" << std::endl ;
+00229         exit (1);
+00230 
+00231     }
+00232 
+00233 }
+00234 
+00235 
+00241 void printRoute (const Route& _route) {
+00242 
+00243     std::cout << "[";
+00244 
+00245     for (unsigned i = 0; i < _route.size (); i++) {
+00246 
+00247         std::cout << _route [i];
+00248 
+00249         if (i != _route.size () -1)
+00250             std::cout << ", ";
+00251 
+00252     }
+00253 
+00254     std::cout << "]";
+00255 
+00256 }
+00257 
+00258 
+00264 void printRoutes (Routes& _routes) {
+00265 
+00266     std::cout << "[";
+00267 
+00268     for (unsigned i = 0; i < _routes.size (); i++) {
+00269 
+00270         std::cout << "[";
+00271 
+00272         for (unsigned j = 0; j < _routes [i].size (); j++) {
+00273 
+00274             std::cout << _routes [i][j];
+00275 
+00276             if (j != _routes [i].size () -1)
+00277                 std::cout << ", ";
+00278 
+00279         }
+00280 
+00281         if (i == _routes.size () -1)
+00282             std::cout << "]";
+00283         else
+00284             std::cout << "]," << std::endl;
+00285     }
+00286 
+00287     std::cout << "]";
+00288 
+00289 }
+00290 
+00291 
+00292 };
+00293 
+00294 #endif
+

Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/files.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/files.html new file mode 100644 index 000000000..b11d679c3 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/files.html @@ -0,0 +1,39 @@ + + +CVRP-TW: File Index + + + + +
+
+

CVRP-TW File List

Here is a list of all documented files with brief descriptions: + + + + + + + + +
eoVRP.h [code]
eoVRPEvalFunc.h [code]
eoVRPInit.h [code]
eoVRPMutation.h [code]
eoVRPQuadCrossover.h [code]
eoVRPStat.h [code]
eoVRPUtils.h [code]
index.h [code]
+
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2blank.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2blank.png new file mode 100644 index 000000000..493c3c0b6 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2blank.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2doc.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2doc.png new file mode 100644 index 000000000..f72999f92 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2doc.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2folderclosed.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2folderclosed.png new file mode 100644 index 000000000..d6d063440 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2folderclosed.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2folderopen.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2folderopen.png new file mode 100644 index 000000000..bbe2c913c Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2folderopen.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2lastnode.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2lastnode.png new file mode 100644 index 000000000..e7b9ba90c Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2lastnode.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2link.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2link.png new file mode 100644 index 000000000..14f3fed00 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2link.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2mlastnode.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2mlastnode.png new file mode 100644 index 000000000..09ceb6adb Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2mlastnode.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2mnode.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2mnode.png new file mode 100644 index 000000000..3254c0511 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2mnode.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2node.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2node.png new file mode 100644 index 000000000..c9f06a57f Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2node.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2plastnode.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2plastnode.png new file mode 100644 index 000000000..0b07e0091 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2plastnode.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2pnode.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2pnode.png new file mode 100644 index 000000000..2001b797b Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2pnode.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2vertline.png b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2vertline.png new file mode 100644 index 000000000..b330f3a33 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/ftv2vertline.png differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/functions.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/functions.html new file mode 100644 index 000000000..5f2912d67 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/functions.html @@ -0,0 +1,150 @@ + + +CVRP-TW: Class Members + + + + +
+
+ +
+ +
+
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- a -

+

- c -

+

- d -

+

- e -

+

- g -

+

- h -

+

- i -

+

- l -

+

- m -

+

- o -

+

- p -

+

- r -

+

- s -

+

- x -

+

- y -

+

- ~ -

+
Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/functions_func.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/functions_func.html new file mode 100644 index 000000000..b43e86277 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/functions_func.html @@ -0,0 +1,130 @@ + + +CVRP-TW: Class Members - Functions + + + + +
+
+ +
+ +
+
+ +
+ +

+  +

+

- a -

+

- c -

+

- d -

+

- e -

+

- g -

+

- h -

+

- i -

+

- l -

+

- o -

+

- p -

+

- r -

+

- s -

+

- ~ -

+
Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/functions_vars.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/functions_vars.html new file mode 100644 index 000000000..b3df787d8 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/functions_vars.html @@ -0,0 +1,58 @@ + + +CVRP-TW: Class Members - Variables + + + + +
+
+ +
+ +
+  +

+

+
Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/hierarchy.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/hierarchy.html new file mode 100644 index 000000000..57e647b4e --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/hierarchy.html @@ -0,0 +1,108 @@ + + +CVRP-TW: Hierarchical Index + + + + +
+
+ +

CVRP-TW Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: +
Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/index.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/index.html new file mode 100644 index 000000000..1eb1976cf --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/index.html @@ -0,0 +1,8 @@ + + +CVRP-TW + + + + + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/index_8h-source.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/index_8h-source.html new file mode 100644 index 000000000..25a58996e --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/index_8h-source.html @@ -0,0 +1,30 @@ + + +CVRP-TW: index.h Source File + + + + +
+
+

index.h

00001 
+

Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/installdox b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/installdox new file mode 100755 index 000000000..1628445b3 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( "eo.doxytag", ""); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/main.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/main.html new file mode 100644 index 000000000..036f60bd7 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/main.html @@ -0,0 +1,46 @@ + + +CVRP-TW: Welcome to PARADISEO - CVRP-TW contribution + + + + +
+
+

Welcome to PARADISEO - CVRP-TW contribution

+

+

1.0

+Introduction

+The capacitated vehicle routing problem with time windows or CVRP-TW is a combinatorial optimization problem seeking to service a number of customers with a fleet of vehicles where the vehicles have a mimited capacity and the delivery locations have time windows within which the deliveries (or visits) must be made. Often the context is that of delivering goods located at a central depot to customers who have placed orders for such goods. Implicit is the goal of minimizing the cost of distributing the goods. Finding the global minimum for the cost function, except for the smallest instances, is computationally complex.

+AUTHORS

+ + + +
Dolphin project-team INRIA Futurs, 2007. Antonio LaTorre atorre[at]fi.upm.es Thomas Legrand paradiseo-help[at]lists.gforge.inria.fr
+

+LICENSE

+This software is governed by the CeCILL license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info".

+As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability.

+In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security. The fact that you are presently reading this means that you have had knowledge of the CeCILL license and that you accept its terms.

+ParadisEO WebSite : http://paradiseo.gforge.inria.fr Contact: paradiseo-help@lists.gforge.inria.fr

+Home Page

+http://paradiseo.gforge.inria.fr
Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespaceeo_v_r_p_utils.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespaceeo_v_r_p_utils.html new file mode 100644 index 000000000..f186dc4e2 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespaceeo_v_r_p_utils.html @@ -0,0 +1,345 @@ + + +CVRP-TW: eoVRPUtils Namespace Reference + + + + +
+
+ +

eoVRPUtils Namespace Reference

A set of structures and utility functions for the VRP-TW problem. +More... +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  ClientData
 Information regarding each client in the dataset. More...

Typedefs

+typedef eoVRPUtils::ClientData ClientDataT
 Renaming of struct ClientData.

Functions

void computeDistances ()
 Computes the distance between two clients.
void getTimeWindow (unsigned _client, double &_readyTime, double &_dueTime, double &_serviceTime)
 Returns the time window information of a given client.
float distance (unsigned _from, unsigned _to)
 A function to get the distance between two clients.
float polarAngle (unsigned _from, unsigned _to)
 Computes de polar angle between clients.
void load (const char *_fileName)
 Loads the problem data from a given file.
void printRoute (const Route &_route)
 Prints a route to the standard output.
void printRoutes (Routes &_routes)
 Prints a set of routes to the standard output.

Variables

+static std::vector< ClientDataTclients
 Vector to store clients's information.
+static std::vector< std::vector<
+ double > > 
dist
 Distance matrix.
+


Detailed Description

+A set of structures and utility functions for the VRP-TW problem.

Function Documentation

+ +
+
+ + + + + + + + +
void eoVRPUtils::computeDistances (  ) 
+
+
+ +

+Computes the distance between two clients. +

+The computed distances will be stored in dist. +

+Definition at line 108 of file eoVRPUtils.h. +

+References clients, and dist. +

+Referenced by load(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void eoVRPUtils::getTimeWindow (unsigned  _client,
double &  _readyTime,
double &  _dueTime,
double &  _serviceTime 
)
+
+
+ +

+Returns the time window information of a given client. +

+

Parameters:
+ + + + + +
_client The client whose information we want to know.
_readyTime Return value. The beginning of the client's time window.
_dueTime Return value. The end of the client's time window.
_serviceTime Return value. The client's service time.
+
+ +

+Definition at line 139 of file eoVRPUtils.h. +

+References clients. +

+Referenced by eoVRP::decode(), and eoVRPInit::evaluateInsertion(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
float eoVRPUtils::distance (unsigned  _from,
unsigned  _to 
)
+
+
+ +

+A function to get the distance between two clients. +

+

Parameters:
+ + + +
_from The first client.
_to The second client.
+
+
Returns:
The distance between _from and _to.
+ +

+Definition at line 157 of file eoVRPUtils.h. +

+References clients, and dist. +

+Referenced by eoVRP::decode(), eoVRPInit::evaluateInsertion(), eoVRPInit::selectBestClientAsSeed(), eoVRPInit::selectCheapestClient(), and eoVRPInit::selectFarthestClientAsSeed(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
float eoVRPUtils::polarAngle (unsigned  _from,
unsigned  _to 
)
+
+
+ +

+Computes de polar angle between clients. +

+

Parameters:
+ + + +
_from The first client.
_to The second client.
+
+
Returns:
The polar angle between _from and _to.
+ +

+Definition at line 174 of file eoVRPUtils.h. +

+References clients. +

+Referenced by eoVRPInit::selectCheapestClient(). +

+

+ +

+
+ + + + + + + + + +
void eoVRPUtils::load (const char *  _fileName  ) 
+
+
+ +

+Loads the problem data from a given file. +

+

Parameters:
+ + +
_fileName The file to load data from.
+
+
Warning:
No error check is performed!
+ +

+Definition at line 199 of file eoVRPUtils.h. +

+References clients, and computeDistances(). +

+

+ +

+
+ + + + + + + + + +
void eoVRPUtils::printRoute (const Route &  _route  ) 
+
+
+ +

+Prints a route to the standard output. +

+

Parameters:
+ + +
_route The route to print.
+
+ +

+Definition at line 241 of file eoVRPUtils.h. +

+

+ +

+
+ + + + + + + + + +
void eoVRPUtils::printRoutes (Routes &  _routes  ) 
+
+
+ +

+Prints a set of routes to the standard output. +

+

Parameters:
+ + +
_routes The set of routes to print.
+
+ +

+Definition at line 264 of file eoVRPUtils.h. +

+

+


Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers.html new file mode 100644 index 000000000..b1a2c4995 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers.html @@ -0,0 +1,56 @@ + + +CVRP-TW: Class Members + + + + +
+
+ + +Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

+
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers_func.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers_func.html new file mode 100644 index 000000000..3a5a2ee49 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers_func.html @@ -0,0 +1,53 @@ + + +CVRP-TW: Class Members + + + + +
+
+ + +  +

+

+
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers_type.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers_type.html new file mode 100644 index 000000000..408ea945c --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers_type.html @@ -0,0 +1,47 @@ + + +CVRP-TW: Class Members + + + + +
+
+ + +  +

+

+
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers_vars.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers_vars.html new file mode 100644 index 000000000..c17e46fb7 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespacemembers_vars.html @@ -0,0 +1,48 @@ + + +CVRP-TW: Class Members + + + + +
+
+ + +  +

+

+
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespaces.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespaces.html new file mode 100644 index 000000000..9f951708d --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/namespaces.html @@ -0,0 +1,37 @@ + + +CVRP-TW: Namespace Index + + + + +
+
+ +

CVRP-TW Namespace List

Here is a list of all documented namespaces with brief descriptions: + +
eoVRPUtilsA set of structures and utility functions for the VRP-TW problem
+
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/search.idx b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/search.idx new file mode 100644 index 000000000..c29e5b385 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/search.idx differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/search.php b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/search.php new file mode 100644 index 000000000..f1910e78c --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/search.php @@ -0,0 +1,382 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Namespaces
  • +
  • Classes
  • +
  • Files
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/structeo_v_r_p_utils_1_1_client_data-members.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/structeo_v_r_p_utils_1_1_client_data-members.html new file mode 100644 index 000000000..07a3243ba --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/structeo_v_r_p_utils_1_1_client_data-members.html @@ -0,0 +1,44 @@ + + +CVRP-TW: Member List + + + + +
+
+ +

eoVRPUtils::ClientData Member List

This is the complete list of members for eoVRPUtils::ClientData, including all inherited members.

+ + + + + + + +
demandeoVRPUtils::ClientData
dueTimeeoVRPUtils::ClientData
ideoVRPUtils::ClientData
readyTimeeoVRPUtils::ClientData
serviceTimeeoVRPUtils::ClientData
xeoVRPUtils::ClientData
yeoVRPUtils::ClientData


Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/structeo_v_r_p_utils_1_1_client_data.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/structeo_v_r_p_utils_1_1_client_data.html new file mode 100644 index 000000000..8ebd25fd6 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/structeo_v_r_p_utils_1_1_client_data.html @@ -0,0 +1,84 @@ + + +CVRP-TW: eoVRPUtils::ClientData Struct Reference + + + + +
+
+ + +

eoVRPUtils::ClientData Struct Reference

Information regarding each client in the dataset. +More... +

+#include <eoVRPUtils.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

+unsigned id
 Client ID number.
+double x
 Client's 'x' position in the map.
+double y
 Client's 'y' position in the map.
+double demand
 Client's demand of delivered product.
+double readyTime
 Client's beginning of the time window.
+double dueTime
 Client's end of the time window.
+double serviceTime
 Client's service time (time needed to serve the product).
+


Detailed Description

+Information regarding each client in the dataset. +

+This structure is intended to be used to store the information of each client read from the data file. +

+ +

+Definition at line 86 of file eoVRPUtils.h.


The documentation for this struct was generated from the following file: +
Generated on Fri Dec 7 16:57:20 2007 for CVRP-TW by  + +doxygen 1.4.7
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tab_b.gif b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tab_b.gif new file mode 100644 index 000000000..0d623483f Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tab_b.gif differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tab_l.gif b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tab_l.gif new file mode 100644 index 000000000..9b1e6337c Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tab_l.gif differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tab_r.gif b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tab_r.gif new file mode 100644 index 000000000..ce9dd9f53 Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tab_r.gif differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tabs.css b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tabs.css new file mode 100644 index 000000000..a61552a67 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tree.html b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tree.html new file mode 100644 index 000000000..c3a6323ee --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/html/tree.html @@ -0,0 +1,172 @@ + + + + + + + TreeView + + + + +
+

CVRP-TW

+
+

o*Welcome to PARADISEO - CVRP-TW contribution

+

o+Class List

+ +

o+Class Hierarchy

+
+

|o*eoVRPUtils::ClientData

+

|o+eoFunctorBase [external]

+
+

||o*eoBF< EOType &, EOType &, bool > [external]

+

||o+eoBF< eoVRP &, eoVRP &, bool > [external]

+ +

||o+eoUF< A1, R > [external]

+
+

|||o+eoEvalFunc< eoVRP > [external]

+ +

|||o+eoInit< eoVRP > [external]

+
+

||||\*eoVRPInit

+
+

|||\+eoStatBase< EOT > [external]

+
+

||| \+eoStat< eoVRP, double > [external]

+
+

|||  \*eoVRPStat

+
+
+
+

||o*eoUF< EOType &, bool > [external]

+

||\+eoUF< eoVRP &, bool > [external]

+
+

|| \+eoMonOp< eoVRP > [external]

+ +
+
+

|o+eoObject [external]

+
+

||\+EO< F > [external]

+ +
+

|o+eoOp< EOType > [external]

+
+

||o*eoMonOp< eoVRP > [external]

+

||\*eoQuadOp< eoVRP > [external]

+
+

|o+eoParam [external]

+
+

||o+eoValueParam< double > [external]

+
+

|||\*eoStat< eoVRP, double > [external]

+
+

||\*eoValueParam< T > [external]

+
+

|\+eoPrintable [external]

+
+

| \+eoPersistent [external]

+
+

|  \*EO< F > [external]

+
+
+
+

o*Class Members

+

o+Namespace List

+ +

o*Namespace Members

+

\+File List

+
+

 o*eoVRP.h

+

 o*eoVRPEvalFunc.h

+

 o*eoVRPInit.h

+

 o*eoVRPMutation.h

+

 o*eoVRPQuadCrossover.h

+

 o*eoVRPStat.h

+

 o*eoVRPUtils.h

+

 \*index.h

+
+
+
+ + diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/FreeSans.ttf b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/FreeSans.ttf new file mode 100644 index 000000000..b550b90ba Binary files /dev/null and b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/FreeSans.ttf differ diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/Makefile b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/Makefile new file mode 100644 index 000000000..776fcf968 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/Makefile @@ -0,0 +1,39 @@ +all: clean refman.dvi + +ps: refman.ps + +pdf: refman.pdf + +ps_2on1: refman_2on1.ps + +pdf_2on1: refman_2on1.pdf + +refman.ps: refman.dvi + dvips -o refman.ps refman.dvi + +refman.pdf: refman.ps + ps2pdf refman.ps refman.pdf + +refman.dvi: refman.tex doxygen.sty + echo "Running latex..." + latex refman.tex + echo "Running makeindex..." + makeindex refman.idx + echo "Rerunning latex...." + latex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + latex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + +refman_2on1.ps: refman.ps + psnup -2 refman.ps >refman_2on1.ps + +refman_2on1.pdf: refman_2on1.ps + ps2pdf refman_2on1.ps refman_2on1.pdf + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/annotated.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/annotated.tex new file mode 100644 index 000000000..f025285a9 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/annotated.tex @@ -0,0 +1,12 @@ +\section{CVRP-TW Class List} +Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{\bf{eo\-VRPUtils::Client\-Data} (Information regarding each client in the dataset )}{\pageref{structeo_v_r_p_utils_1_1_client_data}}{} +\item\contentsline{section}{\bf{eo\-VRP} (Defines the getoype used to solve the VRP-TW problem )}{\pageref{classeo_v_r_p}}{} +\item\contentsline{section}{\bf{eo\-VRPEdge\-Crossover} (Implementation of the classic Edge Crossover from the TSP )}{\pageref{classeo_v_r_p_edge_crossover}}{} +\item\contentsline{section}{\bf{eo\-VRPEval\-Func} (Evaluates an individual of type \doxyref{eo\-VRP}{p.}{classeo_v_r_p} )}{\pageref{classeo_v_r_p_eval_func}}{} +\item\contentsline{section}{\bf{eo\-VRPGeneric\-Crossover} (Implementation of the generic crossover for the VRP-TW by Tavares et al )}{\pageref{classeo_v_r_p_generic_crossover}}{} +\item\contentsline{section}{\bf{eo\-VRPInit} (Class defining the initializer functor )}{\pageref{classeo_v_r_p_init}}{} +\item\contentsline{section}{\bf{eo\-VRPMutation} (Implementation of variations of the four mutation operators for the VRP-TW defined by Tavares et al )}{\pageref{classeo_v_r_p_mutation}}{} +\item\contentsline{section}{\bf{eo\-VRPOne\-Point\-Crossover} (Implementation of the simple One Point Crossover )}{\pageref{classeo_v_r_p_one_point_crossover}}{} +\item\contentsline{section}{\bf{eo\-VRPStat} (Manages the statistics of the VRP problem )}{\pageref{classeo_v_r_p_stat}}{} +\end{CompactList} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p.eps b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p.eps new file mode 100644 index 000000000..f395d6452 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p.eps @@ -0,0 +1,221 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 216.45 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.31 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoVRP) cw +(eoVector< eoMinimizingFitness, int >) cw +(EO< F >) cw +(eoObject) cw +(eoPersistent) cw +(eoPrintable) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoVRP) 0.5 0 box + (eoVector< eoMinimizingFitness, int >) 0.5 1 box + (EO< F >) 0.5 2 box + (eoObject) 0 3 box + (eoPersistent) 1 3 box + (eoPrintable) 1 4 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +0 0.5 2 out +solid +0 1 3 conn +solid +1 0 3 in +solid +1 1 3 in +solid +0 1 3 out +solid +1 1 4 in diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p.tex new file mode 100644 index 000000000..969c17b16 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p.tex @@ -0,0 +1,323 @@ +\section{eo\-VRP Class Reference} +\label{classeo_v_r_p}\index{eoVRP@{eoVRP}} +Defines the getoype used to solve the VRP-TW problem. + + +{\tt \#include $<$eo\-VRP.h$>$} + +Inheritance diagram for eo\-VRP::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classeo_v_r_p} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{eo\-VRP} ()\label{classeo_v_r_p_20e79a2ad5721ce7f2fe4a88f00692de} + +\begin{CompactList}\small\item\em Default constructor: initializes variables to safe values. \item\end{CompactList}\item +\bf{eo\-VRP} (const \bf{eo\-VRP} \&\_\-orig) +\begin{CompactList}\small\item\em Copy contructor: creates a new individual from a given one. \item\end{CompactList}\item +virtual \bf{$\sim$eo\-VRP} ()\label{classeo_v_r_p_dedbd3437656d5dacafab6652219c8e2} + +\begin{CompactList}\small\item\em Default destructor: nothing to do here. \item\end{CompactList}\item +\bf{eo\-VRP} \& \bf{operator=} (const \bf{eo\-VRP} \&\_\-orig) +\begin{CompactList}\small\item\em Performs a copy from the invidual passed as argument. \item\end{CompactList}\item +virtual std::string \bf{class\-Name} () const +\begin{CompactList}\small\item\em Returns a string containing the name of the class. \item\end{CompactList}\item +void \bf{print\-On} (std::ostream \&\_\-os) const +\begin{CompactList}\small\item\em Prints the individual to a given stream. \item\end{CompactList}\item +void \bf{print\-All\-On} (std::ostream \&\_\-os) const +\begin{CompactList}\small\item\em Prints a detailed version of the individual (decoding information, unsatisfied contraints, etc. \item\end{CompactList}\item +void \bf{read\-From} (std::istream \&\_\-is) +\begin{CompactList}\small\item\em Reads an individual from a given stream. \item\end{CompactList}\item +const Routes \& \bf{routes} () +\begin{CompactList}\small\item\em Returns a reference to the decoded individual. \item\end{CompactList}\item +double \bf{length} () +\begin{CompactList}\small\item\em Returns the total cost (length) of traveling all the routes. \item\end{CompactList}\item +void \bf{print\-Routes} (std::ostream \&\_\-os) const +\begin{CompactList}\small\item\em Aux. \item\end{CompactList}\item +void \bf{print\-Route} (std::ostream \&\_\-os, unsigned \_\-p) const +\begin{CompactList}\small\item\em Aux. \item\end{CompactList}\item +bool \bf{clean} () +\begin{CompactList}\small\item\em Cleans the individual (the vector of clients and also the decoding information). \item\end{CompactList}\item +bool \bf{clean\-Routes} () +\begin{CompactList}\small\item\em Invalidates the decoding information (usually after crossover or mutation). \item\end{CompactList}\item +bool \bf{decoded} () const +\begin{CompactList}\small\item\em Has this individual been decoded? \item\end{CompactList}\item +bool \bf{encode} (Routes \&\_\-routes) +\begin{CompactList}\small\item\em Encodes an individual from a set of routes (usually used within crossover). \item\end{CompactList}\item +double \bf{decode} () +\begin{CompactList}\small\item\em Decodes an individual in a set of routes and calculates its cost (length) of traveling. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +Routes \bf{m\-Routes}\label{classeo_v_r_p_ecbcda9f187d0d842c043544daa33558} + +\begin{CompactList}\small\item\em A set of routes containing the decoding information of the individual. \item\end{CompactList}\item +double \bf{m\-Length}\label{classeo_v_r_p_0e8c40e00bd835dd380d26d4a3abf544} + +\begin{CompactList}\small\item\em Cached cost (length) of traveling the set of routes defined by the individual. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Defines the getoype used to solve the VRP-TW problem. + + + +Definition at line 50 of file eo\-VRP.h. + +\subsection{Constructor \& Destructor Documentation} +\index{eoVRP@{eo\-VRP}!eoVRP@{eoVRP}} +\index{eoVRP@{eoVRP}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}eo\-VRP::eo\-VRP (const \bf{eo\-VRP} \& {\em \_\-orig})\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_1733318610dff5f47ac7d1272a4b4fb1} + + +Copy contructor: creates a new individual from a given one. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-orig}]The individual used to create the new one. \end{description} +\end{Desc} + + +Definition at line 68 of file eo\-VRP.h. + +References operator=(). + +\subsection{Member Function Documentation} +\index{eoVRP@{eo\-VRP}!operator=@{operator=}} +\index{operator=@{operator=}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\bf{eo\-VRP}\& eo\-VRP::operator= (const \bf{eo\-VRP} \& {\em \_\-orig})\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_c0fcb2c17f849bfa61dd5d7ff072e0e4} + + +Performs a copy from the invidual passed as argument. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-orig}]The individual to copy from. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]A reference to this. \end{Desc} + + +Definition at line 90 of file eo\-VRP.h. + +References clean(), m\-Length, and m\-Routes. + +Referenced by eo\-VRP().\index{eoVRP@{eo\-VRP}!className@{className}} +\index{className@{className}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual std::string eo\-VRP::class\-Name (void) const\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_8c7f524cf34787f9ec26ffcc420565c5} + + +Returns a string containing the name of the class. + +\begin{Desc} +\item[Returns:]The string containing the name of the class. \end{Desc} + + +Reimplemented from \bf{EO$<$ F $>$}. + +Definition at line 117 of file eo\-VRP.h.\index{eoVRP@{eo\-VRP}!printOn@{printOn}} +\index{printOn@{printOn}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRP::print\-On (std::ostream \& {\em \_\-os}) const\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_dc4cb13768ef1a2c810d4d298b36707c} + + +Prints the individual to a given stream. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-os}]The stream to print to. \end{description} +\end{Desc} + + +Reimplemented from \bf{eo\-Vector$<$ eo\-Minimizing\-Fitness, int $>$}. + +Definition at line 129 of file eo\-VRP.h. + +References eo\-Vector$<$ Fit\-T, Gene\-Type $>$::print\-On(). + +Referenced by decode().\index{eoVRP@{eo\-VRP}!printAllOn@{printAllOn}} +\index{printAllOn@{printAllOn}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRP::print\-All\-On (std::ostream \& {\em \_\-os}) const\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_738f0aa43d8608cc68e41b1d3f8c944d} + + +Prints a detailed version of the individual (decoding information, unsatisfied contraints, etc. + +) to a given stream. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-os}]The stream to print to. \end{description} +\end{Desc} + + +Definition at line 146 of file eo\-VRP.h. + +References decoded(), EO$<$ F $>$::fitness(), eo\-Vector$<$ Fit\-T, Gene\-Type $>$::print\-On(), and print\-Routes().\index{eoVRP@{eo\-VRP}!readFrom@{readFrom}} +\index{readFrom@{readFrom}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRP::read\-From (std::istream \& {\em \_\-is})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_fdb87ffaf7ac95988e8896bb896183cc} + + +Reads an individual from a given stream. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-is}]The stream to read from. \end{description} +\end{Desc} + + +Reimplemented from \bf{eo\-Vector$<$ eo\-Minimizing\-Fitness, int $>$}. + +Definition at line 177 of file eo\-VRP.h. + +References eo\-Vector$<$ Fit\-T, Gene\-Type $>$::read\-From().\index{eoVRP@{eo\-VRP}!routes@{routes}} +\index{routes@{routes}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const Routes\& eo\-VRP::routes ()\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_0e000044813b4ebdd822e7e2f8540d8b} + + +Returns a reference to the decoded individual. + +\begin{Desc} +\item[Returns:]A reference to the decoded individual. \end{Desc} + + +Definition at line 190 of file eo\-VRP.h. + +References m\-Routes. + +Referenced by eo\-VRPGeneric\-Crossover::operator()().\index{eoVRP@{eo\-VRP}!length@{length}} +\index{length@{length}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}double eo\-VRP::length ()\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_e4d189ca6349a875ae8d6fd9c7fe2491} + + +Returns the total cost (length) of traveling all the routes. + +\begin{Desc} +\item[Returns:]The total cost (length) of traveling all the routes. \end{Desc} + + +Definition at line 205 of file eo\-VRP.h. + +References m\-Length. + +Referenced by eo\-VRPEval\-Func::operator()().\index{eoVRP@{eo\-VRP}!printRoutes@{printRoutes}} +\index{printRoutes@{printRoutes}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRP::print\-Routes (std::ostream \& {\em \_\-os}) const\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_2a4c249cc6b15819c48c9210db385dc7} + + +Aux. + +method to print a structure of routes. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-os}]The stream to print to. \end{description} +\end{Desc} + + +Definition at line 217 of file eo\-VRP.h. + +References m\-Routes, and print\-Route(). + +Referenced by print\-All\-On().\index{eoVRP@{eo\-VRP}!printRoute@{printRoute}} +\index{printRoute@{printRoute}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRP::print\-Route (std::ostream \& {\em \_\-os}, unsigned {\em \_\-p}) const\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_ec256ed5b3b15b6d220494015e2aba93} + + +Aux. + +method to print only one route. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-os}]The stream to print to. \item[{\em \_\-p}]The route to print. \end{description} +\end{Desc} + + +Definition at line 244 of file eo\-VRP.h. + +References m\-Routes. + +Referenced by print\-Routes().\index{eoVRP@{eo\-VRP}!clean@{clean}} +\index{clean@{clean}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRP::clean ()\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_1c53a7a42174c7d40db92da644b25fec} + + +Cleans the individual (the vector of clients and also the decoding information). + +\begin{Desc} +\item[Returns:]True if the operation finishes correctly. False otherwise. \end{Desc} + + +Definition at line 267 of file eo\-VRP.h. + +References m\-Length, and m\-Routes. + +Referenced by encode(), eo\-VRPEdge\-Crossover::operator()(), and operator=().\index{eoVRP@{eo\-VRP}!cleanRoutes@{cleanRoutes}} +\index{cleanRoutes@{cleanRoutes}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRP::clean\-Routes ()\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_66fb699c1d34cac859406ad450be406a} + + +Invalidates the decoding information (usually after crossover or mutation). + +\begin{Desc} +\item[Returns:]True if the operation finishes correctly. False otherwise. \end{Desc} + + +Definition at line 283 of file eo\-VRP.h. + +References m\-Length, and m\-Routes. + +Referenced by decode(), eo\-VRPOne\-Point\-Crossover::operator()(), and eo\-VRPMutation::operator()().\index{eoVRP@{eo\-VRP}!decoded@{decoded}} +\index{decoded@{decoded}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRP::decoded () const\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_e188fadc91b4ee256e144ac86ee80a40} + + +Has this individual been decoded? + +\begin{Desc} +\item[Returns:]True if has decoding information. False otherwise. \end{Desc} + + +Definition at line 298 of file eo\-VRP.h. + +References m\-Routes. + +Referenced by eo\-VRPEval\-Func::operator()(), and print\-All\-On().\index{eoVRP@{eo\-VRP}!encode@{encode}} +\index{encode@{encode}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRP::encode (Routes \& {\em \_\-routes})\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_b56c820bff344b4cd7338628a6f8f083} + + +Encodes an individual from a set of routes (usually used within crossover). + +\begin{Desc} +\item[Returns:]True if the operation finishes correctly. False otherwise. \end{Desc} + + +Definition at line 313 of file eo\-VRP.h. + +References clean(). + +Referenced by eo\-VRPGeneric\-Crossover::operator()().\index{eoVRP@{eo\-VRP}!decode@{decode}} +\index{decode@{decode}!eoVRP@{eo\-VRP}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}double eo\-VRP::decode ()\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_fdfd2633515baa85c3fdaf39be6dea5c} + + +Decodes an individual in a set of routes and calculates its cost (length) of traveling. + +\begin{Desc} +\item[Returns:]The cost (length) of traveling the set of routes. \end{Desc} + + +Definition at line 334 of file eo\-VRP.h. + +References clean\-Routes(), eo\-VRPUtils::clients, eo\-VRPUtils::distance(), eo\-VRPUtils::get\-Time\-Window(), m\-Length, m\-Routes, and print\-On(). + +Referenced by eo\-VRPEval\-Func::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-VRP.h\end{CompactItemize} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_edge_crossover.eps b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_edge_crossover.eps new file mode 100644 index 000000000..a5850dde8 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_edge_crossover.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 180.18 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.775 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoVRPEdgeCrossover) cw +(eoQuadOp< eoVRP >) cw +(eoOp< EOType >) cw +(eoBF< eoVRP &, eoVRP &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoVRPEdgeCrossover) 0.5 0 box + (eoQuadOp< eoVRP >) 0.5 1 box + (eoOp< EOType >) 0 2 box + (eoBF< eoVRP &, eoVRP &, bool >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_edge_crossover.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_edge_crossover.tex new file mode 100644 index 000000000..65c411ca5 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_edge_crossover.tex @@ -0,0 +1,134 @@ +\section{eo\-VRPEdge\-Crossover Class Reference} +\label{classeo_v_r_p_edge_crossover}\index{eoVRPEdgeCrossover@{eoVRPEdgeCrossover}} +Implementation of the classic Edge Crossover from the TSP. + + +{\tt \#include $<$eo\-VRPQuad\-Crossover.h$>$} + +Inheritance diagram for eo\-VRPEdge\-Crossover::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classeo_v_r_p_edge_crossover} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{eo\-VRPEdge\-Crossover} ()\label{classeo_v_r_p_edge_crossover_1cec73fc43837a61b6c97812dd57891b} + +\begin{CompactList}\small\item\em Deafult constructor. \item\end{CompactList}\item +std::string \bf{class\-Name} () const +\begin{CompactList}\small\item\em Returns a string containing the name of the class. \item\end{CompactList}\item +bool \bf{operator()} (\bf{eo\-VRP} \&\_\-genotype1, \bf{eo\-VRP} \&\_\-genotype2) +\begin{CompactList}\small\item\em Both parameters are the parents and the (future) children of the crossover. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +bool \bf{Edge\-Crossover} (\bf{eo\-VRP} \&\_\-genotype1, \bf{eo\-VRP} \&\_\-genotype2, \bf{eo\-VRP} \&\_\-child) +\begin{CompactList}\small\item\em Actually performs the edge crossover. \item\end{CompactList}\item +void \bf{remove\_\-entry} (unsigned \_\-vertex, std::vector$<$ std::set$<$ unsigned $>$ $>$ \&\_\-map) +\begin{CompactList}\small\item\em Removes a vertex from all his neighbours. \item\end{CompactList}\item +void \bf{add\_\-vertex} (unsigned \_\-vertex, std::vector$<$ bool $>$ \&\_\-visited, std::vector$<$ std::set$<$ unsigned $>$ $>$ \&\_\-map, \bf{eo\-VRP} \&\_\-child) +\begin{CompactList}\small\item\em Adds a vertex to a child and erases it from the list of available vertices. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Implementation of the classic Edge Crossover from the TSP. + + + +Definition at line 240 of file eo\-VRPQuad\-Crossover.h. + +\subsection{Member Function Documentation} +\index{eoVRPEdgeCrossover@{eo\-VRPEdge\-Crossover}!className@{className}} +\index{className@{className}!eoVRPEdgeCrossover@{eo\-VRPEdge\-Crossover}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::string eo\-VRPEdge\-Crossover::class\-Name (void) const\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_edge_crossover_8b2a199b70442852f93b2a34a42cf1e4} + + +Returns a string containing the name of the class. + +Used to display statistics. \begin{Desc} +\item[Returns:]The string containing the name of the class. \end{Desc} + + +Reimplemented from \bf{eo\-Quad\-Op$<$ eo\-VRP $>$}. + +Definition at line 258 of file eo\-VRPQuad\-Crossover.h.\index{eoVRPEdgeCrossover@{eo\-VRPEdge\-Crossover}!operator()@{operator()}} +\index{operator()@{operator()}!eoVRPEdgeCrossover@{eo\-VRPEdge\-Crossover}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPEdge\-Crossover::operator() (\bf{eo\-VRP} \& {\em \_\-genotype1}, \bf{eo\-VRP} \& {\em \_\-genotype2})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_edge_crossover_518856969ec708a73e728d36ddf01d1b} + + +Both parameters are the parents and the (future) children of the crossover. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-genotype1}]The first parent. \item[{\em \_\-genotype2}]The second parent. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if any of the parents was modified. False otherwise. \end{Desc} + + +Implements \bf{eo\-BF$<$ eo\-VRP \&, eo\-VRP \&, bool $>$}. + +Definition at line 272 of file eo\-VRPQuad\-Crossover.h. + +References eo\-VRP::clean(), and Edge\-Crossover().\index{eoVRPEdgeCrossover@{eo\-VRPEdge\-Crossover}!EdgeCrossover@{EdgeCrossover}} +\index{EdgeCrossover@{EdgeCrossover}!eoVRPEdgeCrossover@{eo\-VRPEdge\-Crossover}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPEdge\-Crossover::Edge\-Crossover (\bf{eo\-VRP} \& {\em \_\-genotype1}, \bf{eo\-VRP} \& {\em \_\-genotype2}, \bf{eo\-VRP} \& {\em \_\-child})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_edge_crossover_389bd29cab9e12915d0d5c4af80343d7} + + +Actually performs the edge crossover. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-genotype1}]First parent. \item[{\em \_\-genotype2}]Second parent. \item[{\em \_\-child}]Child. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if the second parent was modified. False otherwise. \end{Desc} + + +Definition at line 301 of file eo\-VRPQuad\-Crossover.h. + +References add\_\-vertex(), and eo\-Rng::random(). + +Referenced by operator()().\index{eoVRPEdgeCrossover@{eo\-VRPEdge\-Crossover}!remove_entry@{remove\_\-entry}} +\index{remove_entry@{remove\_\-entry}!eoVRPEdgeCrossover@{eo\-VRPEdge\-Crossover}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPEdge\-Crossover::remove\_\-entry (unsigned {\em \_\-vertex}, std::vector$<$ std::set$<$ unsigned $>$ $>$ \& {\em \_\-map})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_edge_crossover_df9886f80565a966c78fb5a08e12631f} + + +Removes a vertex from all his neighbours. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-vertex}]The vertex being erased. \item[{\em \_\-map}]The structure containing the neighbourhood relationship. \end{description} +\end{Desc} + + +Definition at line 380 of file eo\-VRPQuad\-Crossover.h. + +Referenced by add\_\-vertex().\index{eoVRPEdgeCrossover@{eo\-VRPEdge\-Crossover}!add_vertex@{add\_\-vertex}} +\index{add_vertex@{add\_\-vertex}!eoVRPEdgeCrossover@{eo\-VRPEdge\-Crossover}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPEdge\-Crossover::add\_\-vertex (unsigned {\em \_\-vertex}, std::vector$<$ bool $>$ \& {\em \_\-visited}, std::vector$<$ std::set$<$ unsigned $>$ $>$ \& {\em \_\-map}, \bf{eo\-VRP} \& {\em \_\-child})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_edge_crossover_7917ea1dec6221f71127c6fae9515e68} + + +Adds a vertex to a child and erases it from the list of available vertices. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-vertex}]The vertex being added to the child. \item[{\em \_\-visited}]The vector of visited vertices. \item[{\em \_\-map}]The structure containing the neighbourhood relationship. \item[{\em \_\-child}]The child where we add the vertex. \end{description} +\end{Desc} + + +Definition at line 398 of file eo\-VRPQuad\-Crossover.h. + +References remove\_\-entry(). + +Referenced by Edge\-Crossover(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-VRPQuad\-Crossover.h\end{CompactItemize} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_eval_func.eps b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_eval_func.eps new file mode 100644 index 000000000..4b0cc0569 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_eval_func.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 529.801 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.94375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoVRPEvalFunc) cw +(eoEvalFunc< eoVRP >) cw +(eoUF< A1, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoVRPEvalFunc) 0 0 box + (eoEvalFunc< eoVRP >) 0 1 box + (eoUF< A1, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_eval_func.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_eval_func.tex new file mode 100644 index 000000000..1a5160308 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_eval_func.tex @@ -0,0 +1,52 @@ +\section{eo\-VRPEval\-Func Class Reference} +\label{classeo_v_r_p_eval_func}\index{eoVRPEvalFunc@{eoVRPEvalFunc}} +Evaluates an individual of type \doxyref{eo\-VRP}{p.}{classeo_v_r_p}. + + +{\tt \#include $<$eo\-VRPEval\-Func.h$>$} + +Inheritance diagram for eo\-VRPEval\-Func::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classeo_v_r_p_eval_func} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{eo\-VRPEval\-Func} ()\label{classeo_v_r_p_eval_func_9746622fd0ae11ae58261b0711b7918c} + +\begin{CompactList}\small\item\em Constructor: nothing to do here. \item\end{CompactList}\item +void \bf{operator()} (\bf{eo\-VRP} \&\_\-eo) +\begin{CompactList}\small\item\em Computes the (penalized) fitness. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Evaluates an individual of type \doxyref{eo\-VRP}{p.}{classeo_v_r_p}. + + + +Definition at line 54 of file eo\-VRPEval\-Func.h. + +\subsection{Member Function Documentation} +\index{eoVRPEvalFunc@{eo\-VRPEval\-Func}!operator()@{operator()}} +\index{operator()@{operator()}!eoVRPEvalFunc@{eo\-VRPEval\-Func}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPEval\-Func::operator() (\bf{eo\-VRP} \& {\em \_\-eo})\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_eval_func_840c1a7d38dbdeb40e283df3be42aa48} + + +Computes the (penalized) fitness. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-eo}]The individual to be evaluated. \end{description} +\end{Desc} + + +Definition at line 72 of file eo\-VRPEval\-Func.h. + +References eo\-VRP::decode(), eo\-VRP::decoded(), EO$<$ F $>$::fitness(), EO$<$ F $>$::invalid(), and eo\-VRP::length(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-VRPEval\-Func.h\end{CompactItemize} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_generic_crossover.eps b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_generic_crossover.eps new file mode 100644 index 000000000..2d3c00b42 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_generic_crossover.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 180.18 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.775 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoVRPGenericCrossover) cw +(eoQuadOp< eoVRP >) cw +(eoOp< EOType >) cw +(eoBF< eoVRP &, eoVRP &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoVRPGenericCrossover) 0.5 0 box + (eoQuadOp< eoVRP >) 0.5 1 box + (eoOp< EOType >) 0 2 box + (eoBF< eoVRP &, eoVRP &, bool >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_generic_crossover.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_generic_crossover.tex new file mode 100644 index 000000000..2a18977d8 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_generic_crossover.tex @@ -0,0 +1,96 @@ +\section{eo\-VRPGeneric\-Crossover Class Reference} +\label{classeo_v_r_p_generic_crossover}\index{eoVRPGenericCrossover@{eoVRPGenericCrossover}} +Implementation of the generic crossover for the VRP-TW by Tavares et al. + + +{\tt \#include $<$eo\-VRPQuad\-Crossover.h$>$} + +Inheritance diagram for eo\-VRPGeneric\-Crossover::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classeo_v_r_p_generic_crossover} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{eo\-VRPGeneric\-Crossover} ()\label{classeo_v_r_p_generic_crossover_63e5fb734c46be62a12f6799e34cebe4} + +\begin{CompactList}\small\item\em Deafult constructor. \item\end{CompactList}\item +std::string \bf{class\-Name} () const +\begin{CompactList}\small\item\em Returns a string containing the name of the class. \item\end{CompactList}\item +bool \bf{operator()} (\bf{eo\-VRP} \&\_\-genotype1, \bf{eo\-VRP} \&\_\-genotype2) +\begin{CompactList}\small\item\em Both parameters are the parents and the (future) children of the crossover. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +bool \bf{Generic\-Crossover} (const Routes \&\_\-donor, Routes \&\_\-receiver) const +\begin{CompactList}\small\item\em Actually performs the generic crossover. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Implementation of the generic crossover for the VRP-TW by Tavares et al. + + + +Definition at line 53 of file eo\-VRPQuad\-Crossover.h. + +\subsection{Member Function Documentation} +\index{eoVRPGenericCrossover@{eo\-VRPGeneric\-Crossover}!className@{className}} +\index{className@{className}!eoVRPGenericCrossover@{eo\-VRPGeneric\-Crossover}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::string eo\-VRPGeneric\-Crossover::class\-Name (void) const\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_generic_crossover_7740db73b7151dab52df9d50f5366429} + + +Returns a string containing the name of the class. + +Used to display statistics. \begin{Desc} +\item[Returns:]The string containing the name of the class. \end{Desc} + + +Reimplemented from \bf{eo\-Quad\-Op$<$ eo\-VRP $>$}. + +Definition at line 71 of file eo\-VRPQuad\-Crossover.h.\index{eoVRPGenericCrossover@{eo\-VRPGeneric\-Crossover}!operator()@{operator()}} +\index{operator()@{operator()}!eoVRPGenericCrossover@{eo\-VRPGeneric\-Crossover}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPGeneric\-Crossover::operator() (\bf{eo\-VRP} \& {\em \_\-genotype1}, \bf{eo\-VRP} \& {\em \_\-genotype2})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_generic_crossover_d7d3b19562b071bd50dd4d831e447d0c} + + +Both parameters are the parents and the (future) children of the crossover. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-genotype1}]The first parent. \item[{\em \_\-genotype2}]The second parent. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if any of the parents was modified. False otherwise. \end{Desc} + + +Implements \bf{eo\-BF$<$ eo\-VRP \&, eo\-VRP \&, bool $>$}. + +Definition at line 85 of file eo\-VRPQuad\-Crossover.h. + +References eo\-VRP::encode(), Generic\-Crossover(), and eo\-VRP::routes().\index{eoVRPGenericCrossover@{eo\-VRPGeneric\-Crossover}!GenericCrossover@{GenericCrossover}} +\index{GenericCrossover@{GenericCrossover}!eoVRPGenericCrossover@{eo\-VRPGeneric\-Crossover}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPGeneric\-Crossover::Generic\-Crossover (const Routes \& {\em \_\-donor}, Routes \& {\em \_\-receiver}) const\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_generic_crossover_543ba6869b93a3f9f709045b7e24d74a} + + +Actually performs the generic crossover. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-donor}]Set of routes from the first parent. \item[{\em \_\-receiver}]Set of routes from the second parent \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if the second parent was modified. False otherwise. \end{Desc} + + +Definition at line 110 of file eo\-VRPQuad\-Crossover.h. + +References eo\-Rng::random(). + +Referenced by operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-VRPQuad\-Crossover.h\end{CompactItemize} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_init.eps b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_init.eps new file mode 100644 index 000000000..f35a9c8c2 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_init.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 707.965 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.70625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoVRPInit) cw +(eoInit< eoVRP >) cw +(eoUF< A1, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoVRPInit) 0 0 box + (eoInit< eoVRP >) 0 1 box + (eoUF< A1, R >) 0 2 box + (eoFunctorBase) 0 3 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in +solid +0 0 2 out +solid +1 0 3 in diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_init.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_init.tex new file mode 100644 index 000000000..38dc96b38 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_init.tex @@ -0,0 +1,232 @@ +\section{eo\-VRPInit Class Reference} +\label{classeo_v_r_p_init}\index{eoVRPInit@{eoVRPInit}} +Class defining the initializer functor. + + +{\tt \#include $<$eo\-VRPInit.h$>$} + +Inheritance diagram for eo\-VRPInit::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classeo_v_r_p_init} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{eo\-VRPInit} ()\label{classeo_v_r_p_init_a620d4fa1b930b1fd8b491f1ef5c72fd} + +\begin{CompactList}\small\item\em Default constructor: nothing to do here. \item\end{CompactList}\item +void \bf{operator()} (\bf{eo\-VRP} \&\_\-gen) +\begin{CompactList}\small\item\em Functor member. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +void \bf{Heuristic\-Initialization} (\bf{eo\-VRP} \&\_\-gen) +\begin{CompactList}\small\item\em Heuristic initializer. \item\end{CompactList}\item +bool \bf{create\-New\-Route} (std::vector$<$ int $>$ \&\_\-unvisited, int \&\_\-unvisited\-Idx, bool \_\-seed\-Checking\-Override, Route \&\_\-route) +\begin{CompactList}\small\item\em Creates a new route. \item\end{CompactList}\item +bool \bf{select\-Best\-Insertion} (std::vector$<$ int $>$ \&\_\-unvisited, unsigned \_\-unvisited\-Idx, Route \&\_\-route, unsigned \&\_\-next\-Client, Route::iterator \&\_\-it) +\begin{CompactList}\small\item\em Selects the best client and the best position for its insertion in a given route. \item\end{CompactList}\item +bool \bf{evaluate\-Insertion} (Route \&\_\-route, unsigned \_\-new\-Client, int \_\-after\-Client, double \&\_\-cost) +\begin{CompactList}\small\item\em Evaluates the feasibility and the cost of inserting a new client in a given subroute. \item\end{CompactList}\item +unsigned \bf{select\-Farthest\-Client\-As\-Seed} (const std::vector$<$ int $>$ \&\_\-unvisited, int \_\-unvisited\-Idx) +\begin{CompactList}\small\item\em Selects the farthest client as seed for a new route. \item\end{CompactList}\item +unsigned \bf{select\-Cheapest\-Client} (const std::vector$<$ int $>$ \&\_\-unvisited, int \_\-unvisited\-Idx, bool \_\-seed\-Checking\-Override) +\begin{CompactList}\small\item\em Selects the cheapest client as seed for a new route. \item\end{CompactList}\item +unsigned \bf{select\-Best\-Client\-As\-Seed} (const std::vector$<$ int $>$ \&\_\-unvisited, int \_\-unvisited\-Idx, bool \_\-seed\-Checking\-Override) +\begin{CompactList}\small\item\em Selects the best (the \char`\"{}hardest\char`\"{} one) client as seed for a new route. \item\end{CompactList}\item +void \bf{Random\-Initialization\-No\-Check} (\bf{eo\-VRP} \&\_\-gen) +\begin{CompactList}\small\item\em Random initializer. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned \bf{m\-Seeds\-Used\-Count}\label{classeo_v_r_p_init_b74e164ca817fe5615e9519ec671a356} + +\begin{CompactList}\small\item\em Number of clients already used as seeds. \item\end{CompactList}\item +std::vector$<$ bool $>$ \bf{m\-Seeds\-Used}\label{classeo_v_r_p_init_5e940cc7eec88f268e8eb72313212947} + +\begin{CompactList}\small\item\em Vector storing if a client has been used as a seed or not. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Class defining the initializer functor. + +This class initializes an individual of the VRP problem using an heuristic initializer. + + + +Definition at line 65 of file eo\-VRPInit.h. + +\subsection{Member Function Documentation} +\index{eoVRPInit@{eo\-VRPInit}!operator()@{operator()}} +\index{operator()@{operator()}!eoVRPInit@{eo\-VRPInit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPInit::operator() (\bf{eo\-VRP} \& {\em \_\-gen})\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_init_8bc4f6fb201b09dd882d721d2cfef8ce} + + +Functor member. + +Initializes a genotype using an heuristic initializer. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-gen}]Generally a genotype that has been default-constructed. Whatever it contains will be lost. \end{description} +\end{Desc} + + +Definition at line 99 of file eo\-VRPInit.h. + +References Heuristic\-Initialization().\index{eoVRPInit@{eo\-VRPInit}!HeuristicInitialization@{HeuristicInitialization}} +\index{HeuristicInitialization@{HeuristicInitialization}!eoVRPInit@{eo\-VRPInit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPInit::Heuristic\-Initialization (\bf{eo\-VRP} \& {\em \_\-gen})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_init_af5946da88fb14494cb23dc21d167866} + + +Heuristic initializer. + +This initializer constructs and individual from routes. Each route is built in a constructive way. The first client of each route is selected trying to maximize a function depending on its time window and how far it is from the depot. We always try to select the hardest clients as seeds. Used seeds are stored so that different seeds are selected for different individuals and thus guarantee the diversity of the initial population. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-gen}]The individual to be initialized. \end{description} +\end{Desc} + + +Definition at line 123 of file eo\-VRPInit.h. + +References eo\-VRPUtils::clients, create\-New\-Route(), and EO$<$ F $>$::invalidate(). + +Referenced by operator()().\index{eoVRPInit@{eo\-VRPInit}!createNewRoute@{createNewRoute}} +\index{createNewRoute@{createNewRoute}!eoVRPInit@{eo\-VRPInit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPInit::create\-New\-Route (std::vector$<$ int $>$ \& {\em \_\-unvisited}, int \& {\em \_\-unvisited\-Idx}, bool {\em \_\-seed\-Checking\-Override}, Route \& {\em \_\-route})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_init_ff7c0bf38bdd70d6f9d561479ec4f48a} + + +Creates a new route. + +Creates a new route selecting the best (hardest) client as seed and then adding the cheapest clients until one of the constraints (time window or vehicle's capacity) is broken. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-unvisited}]Vector of unvisited and thus available clients for constructing the new route. \item[{\em \_\-unvisited\-Idx}]Position of the last univisted client in \_\-unvisited vector. \item[{\em \_\-seed\-Checking\-Override}]If true, it overrides the seed checking mecanism. It must be always false for the first route and then true for the following ones. This way we will preserve diversity in our initial population as every individual will be initialized from a different initial route. \item[{\em \_\-route}]The brand new route we have constructed. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if everything went ok. \end{Desc} + + +Definition at line 176 of file eo\-VRPInit.h. + +References m\-Seeds\-Used, m\-Seeds\-Used\-Count, select\-Best\-Client\-As\-Seed(), and select\-Best\-Insertion(). + +Referenced by Heuristic\-Initialization().\index{eoVRPInit@{eo\-VRPInit}!selectBestInsertion@{selectBestInsertion}} +\index{selectBestInsertion@{selectBestInsertion}!eoVRPInit@{eo\-VRPInit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPInit::select\-Best\-Insertion (std::vector$<$ int $>$ \& {\em \_\-unvisited}, unsigned {\em \_\-unvisited\-Idx}, Route \& {\em \_\-route}, unsigned \& {\em \_\-next\-Client}, Route::iterator \& {\em \_\-it})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_init_7f07be1f3a027dc56af84bb46828ddda} + + +Selects the best client and the best position for its insertion in a given route. + +Given a subroute, this method tries to find the best client and the best position for it among all the univisited clients. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-unvisited}]Vector of unvisited and thus available clients for constructing the new route. \item[{\em \_\-unvisited\-Idx}]Position of the last univisted client in \_\-unvisited vector. \item[{\em \_\-route}]The route where we are trying to insert a new client. \item[{\em \_\-next\-Client}]A return value. The selected client to be inserted. \item[{\em \_\-it}]A return value. The position for selected client to be inserted. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if a new insertion is possible. False otherwise. \end{Desc} + + +Definition at line 249 of file eo\-VRPInit.h. + +References evaluate\-Insertion(). + +Referenced by create\-New\-Route().\index{eoVRPInit@{eo\-VRPInit}!evaluateInsertion@{evaluateInsertion}} +\index{evaluateInsertion@{evaluateInsertion}!eoVRPInit@{eo\-VRPInit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPInit::evaluate\-Insertion (Route \& {\em \_\-route}, unsigned {\em \_\-new\-Client}, int {\em \_\-after\-Client}, double \& {\em \_\-cost})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_init_82f2bb762d8f5da85febd266fb75a29b} + + +Evaluates the feasibility and the cost of inserting a new client in a given subroute. + +Given a subroute, this method tries evaluates if it is possible to insert a client in a position. It will return the cost of the resulting route if this insertion is possible. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-route}]The route where we are trying to insert a new client. \item[{\em \_\-new\-Client}]The client we are trying to insert. \item[{\em \_\-after\-Client}]The position of insertion. \item[{\em \_\-cost}]A return value. The cost of inserting the given client at the given position. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if the new insertion is possible. False otherwise. \end{Desc} + + +Definition at line 308 of file eo\-VRPInit.h. + +References eo\-VRPUtils::clients, eo\-VRPUtils::distance(), and eo\-VRPUtils::get\-Time\-Window(). + +Referenced by select\-Best\-Insertion().\index{eoVRPInit@{eo\-VRPInit}!selectFarthestClientAsSeed@{selectFarthestClientAsSeed}} +\index{selectFarthestClientAsSeed@{selectFarthestClientAsSeed}!eoVRPInit@{eo\-VRPInit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}unsigned eo\-VRPInit::select\-Farthest\-Client\-As\-Seed (const std::vector$<$ int $>$ \& {\em \_\-unvisited}, int {\em \_\-unvisited\-Idx})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_init_a24867d25a6c9911e9b5c9eb1b4b650d} + + +Selects the farthest client as seed for a new route. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-unvisited}]Vector of unvisited and thus available clients for constructing the new route. \item[{\em \_\-unvisited\-Idx}]Position of the last univisted client in \_\-unvisited vector. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]The position of the client farthest from the depot. \end{Desc} + + +Definition at line 472 of file eo\-VRPInit.h. + +References eo\-VRPUtils::distance().\index{eoVRPInit@{eo\-VRPInit}!selectCheapestClient@{selectCheapestClient}} +\index{selectCheapestClient@{selectCheapestClient}!eoVRPInit@{eo\-VRPInit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}unsigned eo\-VRPInit::select\-Cheapest\-Client (const std::vector$<$ int $>$ \& {\em \_\-unvisited}, int {\em \_\-unvisited\-Idx}, bool {\em \_\-seed\-Checking\-Override})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_init_0bb48de33e92c2b6a386e28d5b759f4b} + + +Selects the cheapest client as seed for a new route. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-unvisited}]Vector of unvisited and thus available clients for constructing the new route. \item[{\em \_\-unvisited\-Idx}]Position of the last univisted client in \_\-unvisited vector. \item[{\em \_\-seed\-Checking\-Override}]If true, it overrides the seed checking mecanism. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]The position of the cheapest client. \end{Desc} + + +Definition at line 498 of file eo\-VRPInit.h. + +References eo\-VRPUtils::clients, eo\-VRPUtils::distance(), eo\-Rng::flip(), m\-Seeds\-Used, and eo\-VRPUtils::polar\-Angle().\index{eoVRPInit@{eo\-VRPInit}!selectBestClientAsSeed@{selectBestClientAsSeed}} +\index{selectBestClientAsSeed@{selectBestClientAsSeed}!eoVRPInit@{eo\-VRPInit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}unsigned eo\-VRPInit::select\-Best\-Client\-As\-Seed (const std::vector$<$ int $>$ \& {\em \_\-unvisited}, int {\em \_\-unvisited\-Idx}, bool {\em \_\-seed\-Checking\-Override})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_init_dd681a23869f69438120ee2d82f85e94} + + +Selects the best (the \char`\"{}hardest\char`\"{} one) client as seed for a new route. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-unvisited}]Vector of unvisited and thus available clients for constructing the new route. \item[{\em \_\-unvisited\-Idx}]Position of the last univisted client in \_\-unvisited vector. \item[{\em \_\-seed\-Checking\-Override}]If true, it overrides the seed checking mecanism. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]The position of the best client. \end{Desc} + + +Definition at line 532 of file eo\-VRPInit.h. + +References eo\-VRPUtils::clients, eo\-VRPUtils::distance(), eo\-Rng::flip(), m\-Seeds\-Used, and eo\-Rng::uniform(). + +Referenced by create\-New\-Route().\index{eoVRPInit@{eo\-VRPInit}!RandomInitializationNoCheck@{RandomInitializationNoCheck}} +\index{RandomInitializationNoCheck@{RandomInitializationNoCheck}!eoVRPInit@{eo\-VRPInit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPInit::Random\-Initialization\-No\-Check (\bf{eo\-VRP} \& {\em \_\-gen})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_init_008ae39692b67ef0b25aed89075b1d46} + + +Random initializer. + +Initializes a genotype using a random initializer. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-gen}]Generally a genotype that has been default-constructed. Whatever it contains will be lost. \end{description} +\end{Desc} + + +Definition at line 569 of file eo\-VRPInit.h. + +References eo\-VRPUtils::clients, and eo\-Rng::random(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-VRPInit.h\end{CompactItemize} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_mutation.eps b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_mutation.eps new file mode 100644 index 000000000..5db2e6e71 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_mutation.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 250 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoVRPMutation) cw +(eoMonOp< eoVRP >) cw +(eoOp< EOType >) cw +(eoUF< eoVRP &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoVRPMutation) 0.5 0 box + (eoMonOp< eoVRP >) 0.5 1 box + (eoOp< EOType >) 0 2 box + (eoUF< eoVRP &, bool >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_mutation.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_mutation.tex new file mode 100644 index 000000000..b91f13314 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_mutation.tex @@ -0,0 +1,164 @@ +\section{eo\-VRPMutation Class Reference} +\label{classeo_v_r_p_mutation}\index{eoVRPMutation@{eoVRPMutation}} +Implementation of variations of the four mutation operators for the VRP-TW defined by Tavares et al. + + +{\tt \#include $<$eo\-VRPMutation.h$>$} + +Inheritance diagram for eo\-VRPMutation::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classeo_v_r_p_mutation} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{eo\-VRPMutation} ()\label{classeo_v_r_p_mutation_419ac5c738369876de09212a844e67c3} + +\begin{CompactList}\small\item\em Default constructor: nothing to do here. \item\end{CompactList}\item +std::string \bf{class\-Name} () const +\begin{CompactList}\small\item\em Returns a string containing the name of the class. \item\end{CompactList}\item +bool \bf{operator()} (\bf{eo\-VRP} \&\_\-genotype) +\begin{CompactList}\small\item\em Functor operator. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +bool \bf{swap\-Mutation} (\bf{eo\-VRP} \&\_\-genotype) +\begin{CompactList}\small\item\em It exhanges the positions of two clients within the individual. \item\end{CompactList}\item +bool \bf{inversion\-Mutation} (\bf{eo\-VRP} \&\_\-genotype) +\begin{CompactList}\small\item\em It selects two positions in the genotype and inverts the clients between them. \item\end{CompactList}\item +bool \bf{insertion\-Mutation} (\bf{eo\-VRP} \&\_\-genotype) +\begin{CompactList}\small\item\em It selects and individual, erases it from its original position and inserts it somewhere else. \item\end{CompactList}\item +bool \bf{Displacement\-Mutation} (\bf{eo\-VRP} \&\_\-genotype) +\begin{CompactList}\small\item\em It selects a set of clients, erases them from their original position and inserts them somewhere else. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Implementation of variations of the four mutation operators for the VRP-TW defined by Tavares et al. + +These four operators should be separated in different classes and their probabilities made parameterizable. + + + +Definition at line 52 of file eo\-VRPMutation.h. + +\subsection{Member Function Documentation} +\index{eoVRPMutation@{eo\-VRPMutation}!className@{className}} +\index{className@{className}!eoVRPMutation@{eo\-VRPMutation}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::string eo\-VRPMutation::class\-Name (void) const\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_mutation_1c99e21818d6bae1cdd21b4180601d41} + + +Returns a string containing the name of the class. + +Used to display statistics. \begin{Desc} +\item[Returns:]The string containing the name of the class. \end{Desc} + + +Reimplemented from \bf{eo\-Mon\-Op$<$ eo\-VRP $>$}. + +Definition at line 70 of file eo\-VRPMutation.h.\index{eoVRPMutation@{eo\-VRPMutation}!operator()@{operator()}} +\index{operator()@{operator()}!eoVRPMutation@{eo\-VRPMutation}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPMutation::operator() (\bf{eo\-VRP} \& {\em \_\-genotype})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_mutation_f9fabdc8497f463add309fdace102813} + + +Functor operator. + +Applies one of the four mutation operators available, each of them with a predefined (hard-coded) probability. These operators should be separated in different classes and their probabilities made parameterizable to do it in a more \char`\"{}paradis\-EO\char`\"{} way. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-genotype}]The genotype being mutated (it will be probably modified). \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if the individual has been modified. False otherwise. \end{Desc} + + +Implements \bf{eo\-UF$<$ eo\-VRP \&, bool $>$}. + +Definition at line 86 of file eo\-VRPMutation.h. + +References eo\-VRP::clean\-Routes(), Displacement\-Mutation(), insertion\-Mutation(), inversion\-Mutation(), swap\-Mutation(), and eo\-Rng::uniform().\index{eoVRPMutation@{eo\-VRPMutation}!swapMutation@{swapMutation}} +\index{swapMutation@{swapMutation}!eoVRPMutation@{eo\-VRPMutation}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPMutation::swap\-Mutation (\bf{eo\-VRP} \& {\em \_\-genotype})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_mutation_bef9736583de0b7f6e734b26483ab69d} + + +It exhanges the positions of two clients within the individual. + +Clients may or may not be in the same route. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-genotype}]The genotype being mutated (it will be probably modified). \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if the individual has been modified. False otherwise. \end{Desc} + + +Definition at line 119 of file eo\-VRPMutation.h. + +References eo\-Rng::random(). + +Referenced by operator()().\index{eoVRPMutation@{eo\-VRPMutation}!inversionMutation@{inversionMutation}} +\index{inversionMutation@{inversionMutation}!eoVRPMutation@{eo\-VRPMutation}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPMutation::inversion\-Mutation (\bf{eo\-VRP} \& {\em \_\-genotype})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_mutation_61cc39a190e9d070b005a7afb5e38d2a} + + +It selects two positions in the genotype and inverts the clients between them. + +Clients may or may not be in the same route. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-genotype}]The genotype being mutated (it will be probably modified). \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if the individual has been modified. False otherwise. \end{Desc} + + +Definition at line 142 of file eo\-VRPMutation.h. + +References eo\-Rng::random(). + +Referenced by operator()().\index{eoVRPMutation@{eo\-VRPMutation}!insertionMutation@{insertionMutation}} +\index{insertionMutation@{insertionMutation}!eoVRPMutation@{eo\-VRPMutation}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPMutation::insertion\-Mutation (\bf{eo\-VRP} \& {\em \_\-genotype})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_mutation_6ead0938bb1f8ab34c321916a6dd5b66} + + +It selects and individual, erases it from its original position and inserts it somewhere else. + +The insertion may or may not be within the same route. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-genotype}]The genotype being mutated (it will be probably modified). \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if the individual has been modified. False otherwise. \end{Desc} + + +Definition at line 170 of file eo\-VRPMutation.h. + +References eo\-Rng::random(). + +Referenced by operator()().\index{eoVRPMutation@{eo\-VRPMutation}!DisplacementMutation@{DisplacementMutation}} +\index{DisplacementMutation@{DisplacementMutation}!eoVRPMutation@{eo\-VRPMutation}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPMutation::Displacement\-Mutation (\bf{eo\-VRP} \& {\em \_\-genotype})\hspace{0.3cm}{\tt [inline, private]}}\label{classeo_v_r_p_mutation_b6b7e818085f6ba03d64f045f32356be} + + +It selects a set of clients, erases them from their original position and inserts them somewhere else. + +The selected set of clients may cover different routes. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-genotype}]The genotype being mutated (it will be probably modified). \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if the individual has been modified. False otherwise. \end{Desc} + + +Definition at line 199 of file eo\-VRPMutation.h. + +References eo\-Rng::random(). + +Referenced by operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-VRPMutation.h\end{CompactItemize} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_one_point_crossover.eps b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_one_point_crossover.eps new file mode 100644 index 000000000..4c1ef5e1b --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_one_point_crossover.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 180.18 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.775 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoVRPOnePointCrossover) cw +(eoQuadOp< eoVRP >) cw +(eoOp< EOType >) cw +(eoBF< eoVRP &, eoVRP &, bool >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoVRPOnePointCrossover) 0.5 0 box + (eoQuadOp< eoVRP >) 0.5 1 box + (eoOp< EOType >) 0 2 box + (eoBF< eoVRP &, eoVRP &, bool >) 1 2 box + (eoFunctorBase) 1 3 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +1 1 2 in +solid +0 1 2 out +solid +1 1 3 in diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_one_point_crossover.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_one_point_crossover.tex new file mode 100644 index 000000000..ce51ac5f4 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_one_point_crossover.tex @@ -0,0 +1,71 @@ +\section{eo\-VRPOne\-Point\-Crossover Class Reference} +\label{classeo_v_r_p_one_point_crossover}\index{eoVRPOnePointCrossover@{eoVRPOnePointCrossover}} +Implementation of the simple One Point Crossover. + + +{\tt \#include $<$eo\-VRPQuad\-Crossover.h$>$} + +Inheritance diagram for eo\-VRPOne\-Point\-Crossover::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classeo_v_r_p_one_point_crossover} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{eo\-VRPOne\-Point\-Crossover} ()\label{classeo_v_r_p_one_point_crossover_24f40efc1adb60947c5d533653bbfbe9} + +\begin{CompactList}\small\item\em Deafult constructor. \item\end{CompactList}\item +std::string \bf{class\-Name} () const +\begin{CompactList}\small\item\em Returns a string containing the name of the class. \item\end{CompactList}\item +bool \bf{operator()} (\bf{eo\-VRP} \&\_\-genotype1, \bf{eo\-VRP} \&\_\-genotype2) +\begin{CompactList}\small\item\em Performs a one point crossover. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Implementation of the simple One Point Crossover. + + + +Definition at line 159 of file eo\-VRPQuad\-Crossover.h. + +\subsection{Member Function Documentation} +\index{eoVRPOnePointCrossover@{eo\-VRPOne\-Point\-Crossover}!className@{className}} +\index{className@{className}!eoVRPOnePointCrossover@{eo\-VRPOne\-Point\-Crossover}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}std::string eo\-VRPOne\-Point\-Crossover::class\-Name (void) const\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_one_point_crossover_a62bc52e6f36d7fae7c192173fbfd2dc} + + +Returns a string containing the name of the class. + +Used to display statistics. \begin{Desc} +\item[Returns:]The string containing the name of the class. \end{Desc} + + +Reimplemented from \bf{eo\-Quad\-Op$<$ eo\-VRP $>$}. + +Definition at line 177 of file eo\-VRPQuad\-Crossover.h.\index{eoVRPOnePointCrossover@{eo\-VRPOne\-Point\-Crossover}!operator()@{operator()}} +\index{operator()@{operator()}!eoVRPOnePointCrossover@{eo\-VRPOne\-Point\-Crossover}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool eo\-VRPOne\-Point\-Crossover::operator() (\bf{eo\-VRP} \& {\em \_\-genotype1}, \bf{eo\-VRP} \& {\em \_\-genotype2})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_one_point_crossover_b930b5d9a8ee0719f675f9eea791579b} + + +Performs a one point crossover. + +Both parameters are the parents and the (future) children of the crossover. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-genotype1}]The first parent. \item[{\em \_\-genotype2}]The second parent. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]True if any of the parents was modified. False otherwise. \end{Desc} + + +Implements \bf{eo\-BF$<$ eo\-VRP \&, eo\-VRP \&, bool $>$}. + +Definition at line 191 of file eo\-VRPQuad\-Crossover.h. + +References eo\-VRP::clean\-Routes(), and eo\-Rng::random(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-VRPQuad\-Crossover.h\end{CompactItemize} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_stat.eps b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_stat.eps new file mode 100644 index 000000000..12e4d12bd --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_stat.eps @@ -0,0 +1,227 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 303.03 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.65 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(eoVRPStat) cw +(eoStat< eoVRP, double >) cw +(eoValueParam< double >) cw +(eoStatBase< EOT >) cw +(eoParam) cw +(eoUF< A1, R >) cw +(eoFunctorBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (eoVRPStat) 0.5 0 box + (eoStat< eoVRP, double >) 0.5 1 box + (eoValueParam< double >) 0 2 box + (eoStatBase< EOT >) 1 2 box + (eoParam) 0 3 box + (eoUF< A1, R >) 1 3 box + (eoFunctorBase) 1 4 box + +% ----- relations ----- + +solid +0 0.5 0 out +solid +1 0.5 1 in +solid +0 0.5 1 out +solid +0 1 2 conn +solid +1 0 2 in +solid +0 0 2 out +solid +1 1 2 in +solid +0 1 2 out +solid +1 0 3 in +solid +1 1 3 in +solid +0 1 3 out +solid +1 1 4 in diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_stat.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_stat.tex new file mode 100644 index 000000000..f191cf01a --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/classeo_v_r_p_stat.tex @@ -0,0 +1,83 @@ +\section{eo\-VRPStat Class Reference} +\label{classeo_v_r_p_stat}\index{eoVRPStat@{eoVRPStat}} +Manages the statistics of the VRP problem. + + +{\tt \#include $<$eo\-VRPStat.h$>$} + +Inheritance diagram for eo\-VRPStat::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5cm]{classeo_v_r_p_stat} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +\bf{eo\-VRPStat} (std::string \_\-description=\char`\"{}eo\-VRPStat \char`\"{}) +\begin{CompactList}\small\item\em Constructor: initializes variables properly. \item\end{CompactList}\item +void \bf{operator()} (const \bf{eo\-Pop}$<$ \bf{eo\-VRP} $>$ \&\_\-pop) +\begin{CompactList}\small\item\em Gets statistics from a population. \item\end{CompactList}\item +virtual std::string \bf{class\-Name} (void) const +\begin{CompactList}\small\item\em Returns a string containing the name of the class. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Manages the statistics of the VRP problem. + + + +Definition at line 47 of file eo\-VRPStat.h. + +\subsection{Constructor \& Destructor Documentation} +\index{eoVRPStat@{eo\-VRPStat}!eoVRPStat@{eoVRPStat}} +\index{eoVRPStat@{eoVRPStat}!eoVRPStat@{eo\-VRPStat}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}eo\-VRPStat::eo\-VRPStat (std::string {\em \_\-description} = {\tt \char`\"{}eoVRPStat~\char`\"{}})\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_stat_a326e09d7efebb4c572ea51ae517e058} + + +Constructor: initializes variables properly. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-description}]A string identifying the class. \end{description} +\end{Desc} + + +Definition at line 56 of file eo\-VRPStat.h. + +\subsection{Member Function Documentation} +\index{eoVRPStat@{eo\-VRPStat}!operator()@{operator()}} +\index{operator()@{operator()}!eoVRPStat@{eo\-VRPStat}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPStat::operator() (const \bf{eo\-Pop}$<$ \bf{eo\-VRP} $>$ \& {\em \_\-pop})\hspace{0.3cm}{\tt [inline]}}\label{classeo_v_r_p_stat_5e773fab9c82e0a06d075af4be265d1e} + + +Gets statistics from a population. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-pop}]The population that will be analyzed. \end{description} +\end{Desc} + + +Definition at line 66 of file eo\-VRPStat.h. + +References eo\-Value\-Param$<$ T $>$::value().\index{eoVRPStat@{eo\-VRPStat}!className@{className}} +\index{className@{className}!eoVRPStat@{eo\-VRPStat}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}virtual std::string eo\-VRPStat::class\-Name (void) const\hspace{0.3cm}{\tt [inline, virtual]}}\label{classeo_v_r_p_stat_61d9ece1bde19f4cd997c3aba075d8e7} + + +Returns a string containing the name of the class. + +Used to display statistics. \begin{Desc} +\item[Returns:]The string containing the name of the class. \end{Desc} + + +Reimplemented from \bf{eo\-Stat$<$ eo\-VRP, double $>$}. + +Definition at line 79 of file eo\-VRPStat.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +eo\-VRPStat.h\end{CompactItemize} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/doxygen.sty b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/doxygen.sty new file mode 100644 index 000000000..e8ddc576a --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/doxygen.sty @@ -0,0 +1,78 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Fri Dec 7 16:57:19 2007 for CVRP-TW by Doxygen }} +\cfoot{} +\newenvironment{Code} +{\footnotesize} +{\normalsize} +\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})} +\newenvironment{DocInclude} +{\footnotesize} +{\normalsize} +\newenvironment{VerbInclude} +{\footnotesize} +{\normalsize} +\newenvironment{Image} +{\begin{figure}[H]} +{\end{figure}} +\newenvironment{ImageNoCaption}{}{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{\hfill}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/hierarchy.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/hierarchy.tex new file mode 100644 index 000000000..56eb4ea9c --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/hierarchy.tex @@ -0,0 +1,48 @@ +\section{CVRP-TW Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList} +\item \contentsline{section}{eo\-VRPUtils::Client\-Data}{\pageref{structeo_v_r_p_utils_1_1_client_data}}{} +\item eo\-Functor\-Base{\tt [external]}\begin{CompactList} +\item eo\-BF$<$ EOType \&, EOType \&, bool $>${\tt [external]}\item eo\-BF$<$ eo\-VRP \&, eo\-VRP \&, bool $>${\tt [external]}\begin{CompactList} +\item eo\-Quad\-Op$<$ eo\-VRP $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{eo\-VRPEdge\-Crossover}{\pageref{classeo_v_r_p_edge_crossover}}{} +\item \contentsline{section}{eo\-VRPGeneric\-Crossover}{\pageref{classeo_v_r_p_generic_crossover}}{} +\item \contentsline{section}{eo\-VRPOne\-Point\-Crossover}{\pageref{classeo_v_r_p_one_point_crossover}}{} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ A1, R $>${\tt [external]}\begin{CompactList} +\item eo\-Eval\-Func$<$ eo\-VRP $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{eo\-VRPEval\-Func}{\pageref{classeo_v_r_p_eval_func}}{} +\end{CompactList} +\item eo\-Init$<$ eo\-VRP $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{eo\-VRPInit}{\pageref{classeo_v_r_p_init}}{} +\end{CompactList} +\item eo\-Stat\-Base$<$ EOT $>${\tt [external]}\begin{CompactList} +\item eo\-Stat$<$ eo\-VRP, double $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{eo\-VRPStat}{\pageref{classeo_v_r_p_stat}}{} +\end{CompactList} +\end{CompactList} +\end{CompactList} +\item eo\-UF$<$ EOType \&, bool $>${\tt [external]}\item eo\-UF$<$ eo\-VRP \&, bool $>${\tt [external]}\begin{CompactList} +\item eo\-Mon\-Op$<$ eo\-VRP $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{eo\-VRPMutation}{\pageref{classeo_v_r_p_mutation}}{} +\end{CompactList} +\end{CompactList} +\end{CompactList} +\item eo\-Object{\tt [external]}\begin{CompactList} +\item EO$<$ F $>${\tt [external]}\begin{CompactList} +\item eo\-Vector$<$ eo\-Minimizing\-Fitness, int $>${\tt [external]}\begin{CompactList} +\item \contentsline{section}{eo\-VRP}{\pageref{classeo_v_r_p}}{} +\end{CompactList} +\end{CompactList} +\end{CompactList} +\item eo\-Op$<$ EOType $>${\tt [external]}\begin{CompactList} +\item eo\-Mon\-Op$<$ eo\-VRP $>${\tt [external]}\item eo\-Quad\-Op$<$ eo\-VRP $>${\tt [external]}\end{CompactList} +\item eo\-Param{\tt [external]}\begin{CompactList} +\item eo\-Value\-Param$<$ double $>${\tt [external]}\begin{CompactList} +\item eo\-Stat$<$ eo\-VRP, double $>${\tt [external]}\end{CompactList} +\item eo\-Value\-Param$<$ T $>${\tt [external]}\end{CompactList} +\item eo\-Printable{\tt [external]}\begin{CompactList} +\item eo\-Persistent{\tt [external]}\begin{CompactList} +\item EO$<$ F $>${\tt [external]}\end{CompactList} +\end{CompactList} +\end{CompactList} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/main.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/main.tex new file mode 100644 index 000000000..21049b777 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/main.tex @@ -0,0 +1,15 @@ +\section{Introduction}\label{main_Introduction} +The capacitated vehicle routing problem with time windows or CVRP-TW is a combinatorial optimization problem seeking to service a number of customers with a fleet of vehicles where the vehicles have a mimited capacity and the delivery locations have time windows within which the deliveries (or visits) must be made. Often the context is that of delivering goods located at a central depot to customers who have placed orders for such goods. Implicit is the goal of minimizing the cost of distributing the goods. Finding the global minimum for the cost function, except for the smallest instances, is computationally complex.\section{AUTHORS}\label{main_authors} +\begin{TabularC}{3} +\hline +Dolphin project-team INRIA Futurs, 2007. &Antonio La\-Torre atorre[at]fi.upm.es &Thomas Legrand paradiseo-help[at]lists.gforge.inria.fr \\\hline +\end{TabularC} +\section{LICENSE}\label{main_LICENSE} +This software is governed by the Ce\-CILL license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the Ce\-CILL license as circulated by CEA, CNRS and INRIA at the following URL \char`\"{}http://www.cecill.info\char`\"{}. + +As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability. + +In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security. The fact that you are presently reading this means that you have had knowledge of the Ce\-CILL license and that you accept its terms. + +Paradis\-EO Web\-Site : \tt{http://paradiseo.gforge.inria.fr} Contact: \tt{paradiseo-help@lists.gforge.inria.fr}\section{Home Page}\label{main_Paradiseo} +{\tt http://paradiseo.gforge.inria.fr} \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/namespaceeo_v_r_p_utils.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/namespaceeo_v_r_p_utils.tex new file mode 100644 index 000000000..5d19e6581 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/namespaceeo_v_r_p_utils.tex @@ -0,0 +1,166 @@ +\section{eo\-VRPUtils Namespace Reference} +\label{namespaceeo_v_r_p_utils}\index{eoVRPUtils@{eoVRPUtils}} +A set of structures and utility functions for the VRP-TW problem. + + +\subsection*{Classes} +\begin{CompactItemize} +\item +struct \bf{Client\-Data} +\begin{CompactList}\small\item\em Information regarding each client in the dataset. \item\end{CompactList}\end{CompactItemize} +\subsection*{Typedefs} +\begin{CompactItemize} +\item +typedef \bf{eo\-VRPUtils::Client\-Data} \bf{Client\-Data\-T}\label{namespaceeo_v_r_p_utils_7e63908fdf744829e9f781fbd4e84157} + +\begin{CompactList}\small\item\em Renaming of struct \doxyref{Client\-Data}{p.}{structeo_v_r_p_utils_1_1_client_data}. \item\end{CompactList}\end{CompactItemize} +\subsection*{Functions} +\begin{CompactItemize} +\item +void \bf{compute\-Distances} () +\begin{CompactList}\small\item\em Computes the distance between two clients. \item\end{CompactList}\item +void \bf{get\-Time\-Window} (unsigned \_\-client, double \&\_\-ready\-Time, double \&\_\-due\-Time, double \&\_\-service\-Time) +\begin{CompactList}\small\item\em Returns the time window information of a given client. \item\end{CompactList}\item +float \bf{distance} (unsigned \_\-from, unsigned \_\-to) +\begin{CompactList}\small\item\em A function to get the distance between two clients. \item\end{CompactList}\item +float \bf{polar\-Angle} (unsigned \_\-from, unsigned \_\-to) +\begin{CompactList}\small\item\em Computes de polar angle between clients. \item\end{CompactList}\item +void \bf{load} (const char $\ast$\_\-file\-Name) +\begin{CompactList}\small\item\em Loads the problem data from a given file. \item\end{CompactList}\item +void \bf{print\-Route} (const Route \&\_\-route) +\begin{CompactList}\small\item\em Prints a route to the standard output. \item\end{CompactList}\item +void \bf{print\-Routes} (Routes \&\_\-routes) +\begin{CompactList}\small\item\em Prints a set of routes to the standard output. \item\end{CompactList}\end{CompactItemize} +\subsection*{Variables} +\begin{CompactItemize} +\item +static std::vector$<$ \bf{Client\-Data\-T} $>$ \bf{clients}\label{namespaceeo_v_r_p_utils_cca56d985813005c1859bf4965b00308} + +\begin{CompactList}\small\item\em Vector to store clients's information. \item\end{CompactList}\item +static std::vector$<$ std::vector$<$ double $>$ $>$ \bf{dist}\label{namespaceeo_v_r_p_utils_e2976c5bc5da08aca013ebaf87196ee1} + +\begin{CompactList}\small\item\em Distance matrix. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +A set of structures and utility functions for the VRP-TW problem. + +\subsection{Function Documentation} +\index{eoVRPUtils@{eo\-VRPUtils}!computeDistances@{computeDistances}} +\index{computeDistances@{computeDistances}!eoVRPUtils@{eo\-VRPUtils}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPUtils::compute\-Distances ()}\label{namespaceeo_v_r_p_utils_f09f4dc5739c56f1a30a3ae8532502d3} + + +Computes the distance between two clients. + +The computed distances will be stored in dist. + +Definition at line 108 of file eo\-VRPUtils.h. + +References clients, and dist. + +Referenced by load().\index{eoVRPUtils@{eo\-VRPUtils}!getTimeWindow@{getTimeWindow}} +\index{getTimeWindow@{getTimeWindow}!eoVRPUtils@{eo\-VRPUtils}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPUtils::get\-Time\-Window (unsigned {\em \_\-client}, double \& {\em \_\-ready\-Time}, double \& {\em \_\-due\-Time}, double \& {\em \_\-service\-Time})}\label{namespaceeo_v_r_p_utils_a2926351e32e88b8c477c15537c41e1c} + + +Returns the time window information of a given client. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-client}]The client whose information we want to know. \item[{\em \_\-ready\-Time}]Return value. The beginning of the client's time window. \item[{\em \_\-due\-Time}]Return value. The end of the client's time window. \item[{\em \_\-service\-Time}]Return value. The client's service time. \end{description} +\end{Desc} + + +Definition at line 139 of file eo\-VRPUtils.h. + +References clients. + +Referenced by eo\-VRP::decode(), and eo\-VRPInit::evaluate\-Insertion().\index{eoVRPUtils@{eo\-VRPUtils}!distance@{distance}} +\index{distance@{distance}!eoVRPUtils@{eo\-VRPUtils}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}float eo\-VRPUtils::distance (unsigned {\em \_\-from}, unsigned {\em \_\-to})}\label{namespaceeo_v_r_p_utils_b9df85a56a60d65bc6c127b959319d7b} + + +A function to get the distance between two clients. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-from}]The first client. \item[{\em \_\-to}]The second client. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]The distance between \_\-from and \_\-to. \end{Desc} + + +Definition at line 157 of file eo\-VRPUtils.h. + +References clients, and dist. + +Referenced by eo\-VRP::decode(), eo\-VRPInit::evaluate\-Insertion(), eo\-VRPInit::select\-Best\-Client\-As\-Seed(), eo\-VRPInit::select\-Cheapest\-Client(), and eo\-VRPInit::select\-Farthest\-Client\-As\-Seed().\index{eoVRPUtils@{eo\-VRPUtils}!polarAngle@{polarAngle}} +\index{polarAngle@{polarAngle}!eoVRPUtils@{eo\-VRPUtils}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}float eo\-VRPUtils::polar\-Angle (unsigned {\em \_\-from}, unsigned {\em \_\-to})}\label{namespaceeo_v_r_p_utils_4d6ec814ae3e31508ebc6f51eeefb8a7} + + +Computes de polar angle between clients. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-from}]The first client. \item[{\em \_\-to}]The second client. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]The polar angle between \_\-from and \_\-to. \end{Desc} + + +Definition at line 174 of file eo\-VRPUtils.h. + +References clients. + +Referenced by eo\-VRPInit::select\-Cheapest\-Client().\index{eoVRPUtils@{eo\-VRPUtils}!load@{load}} +\index{load@{load}!eoVRPUtils@{eo\-VRPUtils}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPUtils::load (const char $\ast$ {\em \_\-file\-Name})}\label{namespaceeo_v_r_p_utils_3ce087ce36a197c4fce6419e71ae3d41} + + +Loads the problem data from a given file. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-file\-Name}]The file to load data from. \end{description} +\end{Desc} +\begin{Desc} +\item[Warning:]No error check is performed! \end{Desc} + + +Definition at line 199 of file eo\-VRPUtils.h. + +References clients, and compute\-Distances().\index{eoVRPUtils@{eo\-VRPUtils}!printRoute@{printRoute}} +\index{printRoute@{printRoute}!eoVRPUtils@{eo\-VRPUtils}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPUtils::print\-Route (const Route \& {\em \_\-route})}\label{namespaceeo_v_r_p_utils_98b134f2b63fe5ed3155b0379a5fb912} + + +Prints a route to the standard output. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-route}]The route to print. \end{description} +\end{Desc} + + +Definition at line 241 of file eo\-VRPUtils.h.\index{eoVRPUtils@{eo\-VRPUtils}!printRoutes@{printRoutes}} +\index{printRoutes@{printRoutes}!eoVRPUtils@{eo\-VRPUtils}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void eo\-VRPUtils::print\-Routes (Routes \& {\em \_\-routes})}\label{namespaceeo_v_r_p_utils_57f6a32cc66da26d57459a1560e6ee5d} + + +Prints a set of routes to the standard output. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-routes}]The set of routes to print. \end{description} +\end{Desc} + + +Definition at line 264 of file eo\-VRPUtils.h. \ No newline at end of file diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/namespaces.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/namespaces.tex new file mode 100644 index 000000000..d507c8323 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/namespaces.tex @@ -0,0 +1,4 @@ +\section{CVRP-TW Namespace List} +Here is a list of all documented namespaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{\bf{eo\-VRPUtils} (A set of structures and utility functions for the VRP-TW problem )}{\pageref{namespaceeo_v_r_p_utils}}{} +\end{CompactList} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/refman.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/refman.tex new file mode 100644 index 000000000..c3fa5e061 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/refman.tex @@ -0,0 +1,51 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large CVRP-TW Reference Manual\\[1ex]\large 1.0 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.4.7}\\ +\vspace*{0.5cm} +{\small Fri Dec 7 16:57:19 2007}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\chapter{Welcome to PARADISEO - CVRP-TW contribution } +\label{index}\input{main} +\chapter{CVRP-TW Namespace Index} +\input{namespaces} +\chapter{CVRP-TW Hierarchical Index} +\input{hierarchy} +\chapter{CVRP-TW Class Index} +\input{annotated} +\chapter{CVRP-TW Namespace Documentation} +\input{namespaceeo_v_r_p_utils} +\chapter{CVRP-TW Class Documentation} +\input{structeo_v_r_p_utils_1_1_client_data} +\include{classeo_v_r_p} +\include{classeo_v_r_p_edge_crossover} +\include{classeo_v_r_p_eval_func} +\include{classeo_v_r_p_generic_crossover} +\include{classeo_v_r_p_init} +\include{classeo_v_r_p_mutation} +\include{classeo_v_r_p_one_point_crossover} +\include{classeo_v_r_p_stat} +\printindex +\end{document} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/structeo_v_r_p_utils_1_1_client_data.tex b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/structeo_v_r_p_utils_1_1_client_data.tex new file mode 100644 index 000000000..25e7b5224 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/latex/structeo_v_r_p_utils_1_1_client_data.tex @@ -0,0 +1,45 @@ +\section{eo\-VRPUtils::Client\-Data Struct Reference} +\label{structeo_v_r_p_utils_1_1_client_data}\index{eoVRPUtils::ClientData@{eoVRPUtils::ClientData}} +Information regarding each client in the dataset. + + +{\tt \#include $<$eo\-VRPUtils.h$>$} + +\subsection*{Public Attributes} +\begin{CompactItemize} +\item +unsigned \bf{id}\label{structeo_v_r_p_utils_1_1_client_data_c6496a0fce64b8b6babe12b2446c1050} + +\begin{CompactList}\small\item\em Client ID number. \item\end{CompactList}\item +double \bf{x}\label{structeo_v_r_p_utils_1_1_client_data_fb30df4148eb916a1785ecd823b02316} + +\begin{CompactList}\small\item\em Client's 'x' position in the map. \item\end{CompactList}\item +double \bf{y}\label{structeo_v_r_p_utils_1_1_client_data_3164fdd2b99e9b3c565ba3f8ff05c0da} + +\begin{CompactList}\small\item\em Client's 'y' position in the map. \item\end{CompactList}\item +double \bf{demand}\label{structeo_v_r_p_utils_1_1_client_data_3834669c3b0da0592c20a2349b1284cb} + +\begin{CompactList}\small\item\em Client's demand of delivered product. \item\end{CompactList}\item +double \bf{ready\-Time}\label{structeo_v_r_p_utils_1_1_client_data_d9f6b6b3a9e7431145f6049f13e90255} + +\begin{CompactList}\small\item\em Client's beginning of the time window. \item\end{CompactList}\item +double \bf{due\-Time}\label{structeo_v_r_p_utils_1_1_client_data_2e8c450e35be04f80c4949f6efaac618} + +\begin{CompactList}\small\item\em Client's end of the time window. \item\end{CompactList}\item +double \bf{service\-Time}\label{structeo_v_r_p_utils_1_1_client_data_515b7488b4c4f6e1806b7a9606ab1cc3} + +\begin{CompactList}\small\item\em Client's service time (time needed to serve the product). \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +Information regarding each client in the dataset. + +This structure is intended to be used to store the information of each client read from the data file. + + + +Definition at line 86 of file eo\-VRPUtils.h. + +The documentation for this struct was generated from the following file:\begin{CompactItemize} +\item +eo\-VRPUtils.h\end{CompactItemize} diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRP.3 b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRP.3 new file mode 100644 index 000000000..a000d4d02 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRP.3 @@ -0,0 +1,360 @@ +.TH "eoVRP" 3 "7 Dec 2007" "Version 1.0" "CVRP-TW" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoVRP \- Defines the getoype used to solve the VRP-TW problem. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoVector< eoMinimizingFitness, int >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoVRP\fP ()" +.br +.RI "\fIDefault constructor: initializes variables to safe values. \fP" +.ti -1c +.RI "\fBeoVRP\fP (const \fBeoVRP\fP &_orig)" +.br +.RI "\fICopy contructor: creates a new individual from a given one. \fP" +.ti -1c +.RI "virtual \fB~eoVRP\fP ()" +.br +.RI "\fIDefault destructor: nothing to do here. \fP" +.ti -1c +.RI "\fBeoVRP\fP & \fBoperator=\fP (const \fBeoVRP\fP &_orig)" +.br +.RI "\fIPerforms a copy from the invidual passed as argument. \fP" +.ti -1c +.RI "virtual std::string \fBclassName\fP () const " +.br +.RI "\fIReturns a string containing the name of the class. \fP" +.ti -1c +.RI "void \fBprintOn\fP (std::ostream &_os) const " +.br +.RI "\fIPrints the individual to a given stream. \fP" +.ti -1c +.RI "void \fBprintAllOn\fP (std::ostream &_os) const " +.br +.RI "\fIPrints a detailed version of the individual (decoding information, unsatisfied contraints, etc. \fP" +.ti -1c +.RI "void \fBreadFrom\fP (std::istream &_is)" +.br +.RI "\fIReads an individual from a given stream. \fP" +.ti -1c +.RI "const Routes & \fBroutes\fP ()" +.br +.RI "\fIReturns a reference to the decoded individual. \fP" +.ti -1c +.RI "double \fBlength\fP ()" +.br +.RI "\fIReturns the total cost (length) of traveling all the routes. \fP" +.ti -1c +.RI "void \fBprintRoutes\fP (std::ostream &_os) const " +.br +.RI "\fIAux. \fP" +.ti -1c +.RI "void \fBprintRoute\fP (std::ostream &_os, unsigned _p) const " +.br +.RI "\fIAux. \fP" +.ti -1c +.RI "bool \fBclean\fP ()" +.br +.RI "\fICleans the individual (the vector of clients and also the decoding information). \fP" +.ti -1c +.RI "bool \fBcleanRoutes\fP ()" +.br +.RI "\fIInvalidates the decoding information (usually after crossover or mutation). \fP" +.ti -1c +.RI "bool \fBdecoded\fP () const " +.br +.RI "\fIHas this individual been decoded? \fP" +.ti -1c +.RI "bool \fBencode\fP (Routes &_routes)" +.br +.RI "\fIEncodes an individual from a set of routes (usually used within crossover). \fP" +.ti -1c +.RI "double \fBdecode\fP ()" +.br +.RI "\fIDecodes an individual in a set of routes and calculates its cost (length) of traveling. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "Routes \fBmRoutes\fP" +.br +.RI "\fIA set of routes containing the decoding information of the individual. \fP" +.ti -1c +.RI "double \fBmLength\fP" +.br +.RI "\fICached cost (length) of traveling the set of routes defined by the individual. \fP" +.in -1c +.SH "Detailed Description" +.PP +Defines the getoype used to solve the VRP-TW problem. +.PP +Definition at line 50 of file eoVRP.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "eoVRP::eoVRP (const \fBeoVRP\fP & _orig)\fC [inline]\fP" +.PP +Copy contructor: creates a new individual from a given one. +.PP +\fBParameters:\fP +.RS 4 +\fI_orig\fP The individual used to create the new one. +.RE +.PP + +.PP +Definition at line 68 of file eoVRP.h. +.PP +References operator=(). +.SH "Member Function Documentation" +.PP +.SS "\fBeoVRP\fP& eoVRP::operator= (const \fBeoVRP\fP & _orig)\fC [inline]\fP" +.PP +Performs a copy from the invidual passed as argument. +.PP +\fBParameters:\fP +.RS 4 +\fI_orig\fP The individual to copy from. +.RE +.PP +\fBReturns:\fP +.RS 4 +A reference to this. +.RE +.PP + +.PP +Definition at line 90 of file eoVRP.h. +.PP +References clean(), mLength, and mRoutes. +.PP +Referenced by eoVRP(). +.SS "virtual std::string eoVRP::className (void) const\fC [inline, virtual]\fP" +.PP +Returns a string containing the name of the class. +.PP +\fBReturns:\fP +.RS 4 +The string containing the name of the class. +.RE +.PP + +.PP +Reimplemented from \fBEO< F >\fP. +.PP +Definition at line 117 of file eoVRP.h. +.SS "void eoVRP::printOn (std::ostream & _os) const\fC [inline, virtual]\fP" +.PP +Prints the individual to a given stream. +.PP +\fBParameters:\fP +.RS 4 +\fI_os\fP The stream to print to. +.RE +.PP + +.PP +Reimplemented from \fBeoVector< eoMinimizingFitness, int >\fP. +.PP +Definition at line 129 of file eoVRP.h. +.PP +References eoVector< FitT, GeneType >::printOn(). +.PP +Referenced by decode(). +.SS "void eoVRP::printAllOn (std::ostream & _os) const\fC [inline]\fP" +.PP +Prints a detailed version of the individual (decoding information, unsatisfied contraints, etc. +.PP +) to a given stream. +.PP +\fBParameters:\fP +.RS 4 +\fI_os\fP The stream to print to. +.RE +.PP + +.PP +Definition at line 146 of file eoVRP.h. +.PP +References decoded(), EO< F >::fitness(), eoVector< FitT, GeneType >::printOn(), and printRoutes(). +.SS "void eoVRP::readFrom (std::istream & _is)\fC [inline, virtual]\fP" +.PP +Reads an individual from a given stream. +.PP +\fBParameters:\fP +.RS 4 +\fI_is\fP The stream to read from. +.RE +.PP + +.PP +Reimplemented from \fBeoVector< eoMinimizingFitness, int >\fP. +.PP +Definition at line 177 of file eoVRP.h. +.PP +References eoVector< FitT, GeneType >::readFrom(). +.SS "const Routes& eoVRP::routes ()\fC [inline]\fP" +.PP +Returns a reference to the decoded individual. +.PP +\fBReturns:\fP +.RS 4 +A reference to the decoded individual. +.RE +.PP + +.PP +Definition at line 190 of file eoVRP.h. +.PP +References mRoutes. +.PP +Referenced by eoVRPGenericCrossover::operator()(). +.SS "double eoVRP::length ()\fC [inline]\fP" +.PP +Returns the total cost (length) of traveling all the routes. +.PP +\fBReturns:\fP +.RS 4 +The total cost (length) of traveling all the routes. +.RE +.PP + +.PP +Definition at line 205 of file eoVRP.h. +.PP +References mLength. +.PP +Referenced by eoVRPEvalFunc::operator()(). +.SS "void eoVRP::printRoutes (std::ostream & _os) const\fC [inline]\fP" +.PP +Aux. +.PP +method to print a structure of routes. +.PP +\fBParameters:\fP +.RS 4 +\fI_os\fP The stream to print to. +.RE +.PP + +.PP +Definition at line 217 of file eoVRP.h. +.PP +References mRoutes, and printRoute(). +.PP +Referenced by printAllOn(). +.SS "void eoVRP::printRoute (std::ostream & _os, unsigned _p) const\fC [inline]\fP" +.PP +Aux. +.PP +method to print only one route. +.PP +\fBParameters:\fP +.RS 4 +\fI_os\fP The stream to print to. +.br +\fI_p\fP The route to print. +.RE +.PP + +.PP +Definition at line 244 of file eoVRP.h. +.PP +References mRoutes. +.PP +Referenced by printRoutes(). +.SS "bool eoVRP::clean ()\fC [inline]\fP" +.PP +Cleans the individual (the vector of clients and also the decoding information). +.PP +\fBReturns:\fP +.RS 4 +True if the operation finishes correctly. False otherwise. +.RE +.PP + +.PP +Definition at line 267 of file eoVRP.h. +.PP +References mLength, and mRoutes. +.PP +Referenced by encode(), eoVRPEdgeCrossover::operator()(), and operator=(). +.SS "bool eoVRP::cleanRoutes ()\fC [inline]\fP" +.PP +Invalidates the decoding information (usually after crossover or mutation). +.PP +\fBReturns:\fP +.RS 4 +True if the operation finishes correctly. False otherwise. +.RE +.PP + +.PP +Definition at line 283 of file eoVRP.h. +.PP +References mLength, and mRoutes. +.PP +Referenced by decode(), eoVRPOnePointCrossover::operator()(), and eoVRPMutation::operator()(). +.SS "bool eoVRP::decoded () const\fC [inline]\fP" +.PP +Has this individual been decoded? +.PP +\fBReturns:\fP +.RS 4 +True if has decoding information. False otherwise. +.RE +.PP + +.PP +Definition at line 298 of file eoVRP.h. +.PP +References mRoutes. +.PP +Referenced by eoVRPEvalFunc::operator()(), and printAllOn(). +.SS "bool eoVRP::encode (Routes & _routes)\fC [inline]\fP" +.PP +Encodes an individual from a set of routes (usually used within crossover). +.PP +\fBReturns:\fP +.RS 4 +True if the operation finishes correctly. False otherwise. +.RE +.PP + +.PP +Definition at line 313 of file eoVRP.h. +.PP +References clean(). +.PP +Referenced by eoVRPGenericCrossover::operator()(). +.SS "double eoVRP::decode ()\fC [inline]\fP" +.PP +Decodes an individual in a set of routes and calculates its cost (length) of traveling. +.PP +\fBReturns:\fP +.RS 4 +The cost (length) of traveling the set of routes. +.RE +.PP + +.PP +Definition at line 334 of file eoVRP.h. +.PP +References cleanRoutes(), eoVRPUtils::clients, eoVRPUtils::distance(), eoVRPUtils::getTimeWindow(), mLength, mRoutes, and printOn(). +.PP +Referenced by eoVRPEvalFunc::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for CVRP-TW from the source code. diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPEdgeCrossover.3 b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPEdgeCrossover.3 new file mode 100644 index 000000000..5e4ec243c --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPEdgeCrossover.3 @@ -0,0 +1,159 @@ +.TH "eoVRPEdgeCrossover" 3 "7 Dec 2007" "Version 1.0" "CVRP-TW" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoVRPEdgeCrossover \- Implementation of the classic Edge Crossover from the TSP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoQuadOp< eoVRP >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoVRPEdgeCrossover\fP ()" +.br +.RI "\fIDeafult constructor. \fP" +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIReturns a string containing the name of the class. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBeoVRP\fP &_genotype1, \fBeoVRP\fP &_genotype2)" +.br +.RI "\fIBoth parameters are the parents and the (future) children of the crossover. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBEdgeCrossover\fP (\fBeoVRP\fP &_genotype1, \fBeoVRP\fP &_genotype2, \fBeoVRP\fP &_child)" +.br +.RI "\fIActually performs the edge crossover. \fP" +.ti -1c +.RI "void \fBremove_entry\fP (unsigned _vertex, std::vector< std::set< unsigned > > &_map)" +.br +.RI "\fIRemoves a vertex from all his neighbours. \fP" +.ti -1c +.RI "void \fBadd_vertex\fP (unsigned _vertex, std::vector< bool > &_visited, std::vector< std::set< unsigned > > &_map, \fBeoVRP\fP &_child)" +.br +.RI "\fIAdds a vertex to a child and erases it from the list of available vertices. \fP" +.in -1c +.SH "Detailed Description" +.PP +Implementation of the classic Edge Crossover from the TSP. +.PP +Definition at line 240 of file eoVRPQuadCrossover.h. +.SH "Member Function Documentation" +.PP +.SS "std::string eoVRPEdgeCrossover::className (void) const\fC [inline, virtual]\fP" +.PP +Returns a string containing the name of the class. +.PP +Used to display statistics. +.PP +\fBReturns:\fP +.RS 4 +The string containing the name of the class. +.RE +.PP + +.PP +Reimplemented from \fBeoQuadOp< eoVRP >\fP. +.PP +Definition at line 258 of file eoVRPQuadCrossover.h. +.SS "bool eoVRPEdgeCrossover::operator() (\fBeoVRP\fP & _genotype1, \fBeoVRP\fP & _genotype2)\fC [inline, virtual]\fP" +.PP +Both parameters are the parents and the (future) children of the crossover. +.PP +\fBParameters:\fP +.RS 4 +\fI_genotype1\fP The first parent. +.br +\fI_genotype2\fP The second parent. +.RE +.PP +\fBReturns:\fP +.RS 4 +True if any of the parents was modified. False otherwise. +.RE +.PP + +.PP +Implements \fBeoBF< eoVRP &, eoVRP &, bool >\fP. +.PP +Definition at line 272 of file eoVRPQuadCrossover.h. +.PP +References eoVRP::clean(), and EdgeCrossover(). +.SS "bool eoVRPEdgeCrossover::EdgeCrossover (\fBeoVRP\fP & _genotype1, \fBeoVRP\fP & _genotype2, \fBeoVRP\fP & _child)\fC [inline, private]\fP" +.PP +Actually performs the edge crossover. +.PP +\fBParameters:\fP +.RS 4 +\fI_genotype1\fP First parent. +.br +\fI_genotype2\fP Second parent. +.br +\fI_child\fP Child. +.RE +.PP +\fBReturns:\fP +.RS 4 +True if the second parent was modified. False otherwise. +.RE +.PP + +.PP +Definition at line 301 of file eoVRPQuadCrossover.h. +.PP +References add_vertex(), and eoRng::random(). +.PP +Referenced by operator()(). +.SS "void eoVRPEdgeCrossover::remove_entry (unsigned _vertex, std::vector< std::set< unsigned > > & _map)\fC [inline, private]\fP" +.PP +Removes a vertex from all his neighbours. +.PP +\fBParameters:\fP +.RS 4 +\fI_vertex\fP The vertex being erased. +.br +\fI_map\fP The structure containing the neighbourhood relationship. +.RE +.PP + +.PP +Definition at line 380 of file eoVRPQuadCrossover.h. +.PP +Referenced by add_vertex(). +.SS "void eoVRPEdgeCrossover::add_vertex (unsigned _vertex, std::vector< bool > & _visited, std::vector< std::set< unsigned > > & _map, \fBeoVRP\fP & _child)\fC [inline, private]\fP" +.PP +Adds a vertex to a child and erases it from the list of available vertices. +.PP +\fBParameters:\fP +.RS 4 +\fI_vertex\fP The vertex being added to the child. +.br +\fI_visited\fP The vector of visited vertices. +.br +\fI_map\fP The structure containing the neighbourhood relationship. +.br +\fI_child\fP The child where we add the vertex. +.RE +.PP + +.PP +Definition at line 398 of file eoVRPQuadCrossover.h. +.PP +References remove_entry(). +.PP +Referenced by EdgeCrossover(). + +.SH "Author" +.PP +Generated automatically by Doxygen for CVRP-TW from the source code. diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPEvalFunc.3 b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPEvalFunc.3 new file mode 100644 index 000000000..657cbe5af --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPEvalFunc.3 @@ -0,0 +1,51 @@ +.TH "eoVRPEvalFunc" 3 "7 Dec 2007" "Version 1.0" "CVRP-TW" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoVRPEvalFunc \- Evaluates an individual of type \fBeoVRP\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoEvalFunc< eoVRP >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoVRPEvalFunc\fP ()" +.br +.RI "\fIConstructor: nothing to do here. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoVRP\fP &_eo)" +.br +.RI "\fIComputes the (penalized) fitness. \fP" +.in -1c +.SH "Detailed Description" +.PP +Evaluates an individual of type \fBeoVRP\fP. +.PP +Definition at line 54 of file eoVRPEvalFunc.h. +.SH "Member Function Documentation" +.PP +.SS "void eoVRPEvalFunc::operator() (\fBeoVRP\fP & _eo)\fC [inline]\fP" +.PP +Computes the (penalized) fitness. +.PP +\fBParameters:\fP +.RS 4 +\fI_eo\fP The individual to be evaluated. +.RE +.PP + +.PP +Definition at line 72 of file eoVRPEvalFunc.h. +.PP +References eoVRP::decode(), eoVRP::decoded(), EO< F >::fitness(), EO< F >::invalid(), and eoVRP::length(). + +.SH "Author" +.PP +Generated automatically by Doxygen for CVRP-TW from the source code. diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPGenericCrossover.3 b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPGenericCrossover.3 new file mode 100644 index 000000000..1749ee50f --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPGenericCrossover.3 @@ -0,0 +1,111 @@ +.TH "eoVRPGenericCrossover" 3 "7 Dec 2007" "Version 1.0" "CVRP-TW" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoVRPGenericCrossover \- Implementation of the generic crossover for the VRP-TW by Tavares et al. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoQuadOp< eoVRP >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoVRPGenericCrossover\fP ()" +.br +.RI "\fIDeafult constructor. \fP" +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIReturns a string containing the name of the class. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBeoVRP\fP &_genotype1, \fBeoVRP\fP &_genotype2)" +.br +.RI "\fIBoth parameters are the parents and the (future) children of the crossover. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBGenericCrossover\fP (const Routes &_donor, Routes &_receiver) const " +.br +.RI "\fIActually performs the generic crossover. \fP" +.in -1c +.SH "Detailed Description" +.PP +Implementation of the generic crossover for the VRP-TW by Tavares et al. +.PP +Definition at line 53 of file eoVRPQuadCrossover.h. +.SH "Member Function Documentation" +.PP +.SS "std::string eoVRPGenericCrossover::className (void) const\fC [inline, virtual]\fP" +.PP +Returns a string containing the name of the class. +.PP +Used to display statistics. +.PP +\fBReturns:\fP +.RS 4 +The string containing the name of the class. +.RE +.PP + +.PP +Reimplemented from \fBeoQuadOp< eoVRP >\fP. +.PP +Definition at line 71 of file eoVRPQuadCrossover.h. +.SS "bool eoVRPGenericCrossover::operator() (\fBeoVRP\fP & _genotype1, \fBeoVRP\fP & _genotype2)\fC [inline, virtual]\fP" +.PP +Both parameters are the parents and the (future) children of the crossover. +.PP +\fBParameters:\fP +.RS 4 +\fI_genotype1\fP The first parent. +.br +\fI_genotype2\fP The second parent. +.RE +.PP +\fBReturns:\fP +.RS 4 +True if any of the parents was modified. False otherwise. +.RE +.PP + +.PP +Implements \fBeoBF< eoVRP &, eoVRP &, bool >\fP. +.PP +Definition at line 85 of file eoVRPQuadCrossover.h. +.PP +References eoVRP::encode(), GenericCrossover(), and eoVRP::routes(). +.SS "bool eoVRPGenericCrossover::GenericCrossover (const Routes & _donor, Routes & _receiver) const\fC [inline, private]\fP" +.PP +Actually performs the generic crossover. +.PP +\fBParameters:\fP +.RS 4 +\fI_donor\fP Set of routes from the first parent. +.br +\fI_receiver\fP Set of routes from the second parent +.RE +.PP +\fBReturns:\fP +.RS 4 +True if the second parent was modified. False otherwise. +.RE +.PP + +.PP +Definition at line 110 of file eoVRPQuadCrossover.h. +.PP +References eoRng::random(). +.PP +Referenced by operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for CVRP-TW from the source code. diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPInit.3 b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPInit.3 new file mode 100644 index 000000000..290ee5e30 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPInit.3 @@ -0,0 +1,295 @@ +.TH "eoVRPInit" 3 "7 Dec 2007" "Version 1.0" "CVRP-TW" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoVRPInit \- Class defining the initializer functor. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoInit< eoVRP >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoVRPInit\fP ()" +.br +.RI "\fIDefault constructor: nothing to do here. \fP" +.ti -1c +.RI "void \fBoperator()\fP (\fBeoVRP\fP &_gen)" +.br +.RI "\fIFunctor member. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBHeuristicInitialization\fP (\fBeoVRP\fP &_gen)" +.br +.RI "\fIHeuristic initializer. \fP" +.ti -1c +.RI "bool \fBcreateNewRoute\fP (std::vector< int > &_unvisited, int &_unvisitedIdx, bool _seedCheckingOverride, Route &_route)" +.br +.RI "\fICreates a new route. \fP" +.ti -1c +.RI "bool \fBselectBestInsertion\fP (std::vector< int > &_unvisited, unsigned _unvisitedIdx, Route &_route, unsigned &_nextClient, Route::iterator &_it)" +.br +.RI "\fISelects the best client and the best position for its insertion in a given route. \fP" +.ti -1c +.RI "bool \fBevaluateInsertion\fP (Route &_route, unsigned _newClient, int _afterClient, double &_cost)" +.br +.RI "\fIEvaluates the feasibility and the cost of inserting a new client in a given subroute. \fP" +.ti -1c +.RI "unsigned \fBselectFarthestClientAsSeed\fP (const std::vector< int > &_unvisited, int _unvisitedIdx)" +.br +.RI "\fISelects the farthest client as seed for a new route. \fP" +.ti -1c +.RI "unsigned \fBselectCheapestClient\fP (const std::vector< int > &_unvisited, int _unvisitedIdx, bool _seedCheckingOverride)" +.br +.RI "\fISelects the cheapest client as seed for a new route. \fP" +.ti -1c +.RI "unsigned \fBselectBestClientAsSeed\fP (const std::vector< int > &_unvisited, int _unvisitedIdx, bool _seedCheckingOverride)" +.br +.RI "\fISelects the best (the 'hardest' one) client as seed for a new route. \fP" +.ti -1c +.RI "void \fBRandomInitializationNoCheck\fP (\fBeoVRP\fP &_gen)" +.br +.RI "\fIRandom initializer. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBmSeedsUsedCount\fP" +.br +.RI "\fINumber of clients already used as seeds. \fP" +.ti -1c +.RI "std::vector< bool > \fBmSeedsUsed\fP" +.br +.RI "\fIVector storing if a client has been used as a seed or not. \fP" +.in -1c +.SH "Detailed Description" +.PP +Class defining the initializer functor. + +This class initializes an individual of the VRP problem using an heuristic initializer. +.PP +Definition at line 65 of file eoVRPInit.h. +.SH "Member Function Documentation" +.PP +.SS "void eoVRPInit::operator() (\fBeoVRP\fP & _gen)\fC [inline]\fP" +.PP +Functor member. +.PP +Initializes a genotype using an heuristic initializer. +.PP +\fBParameters:\fP +.RS 4 +\fI_gen\fP Generally a genotype that has been default-constructed. Whatever it contains will be lost. +.RE +.PP + +.PP +Definition at line 99 of file eoVRPInit.h. +.PP +References HeuristicInitialization(). +.SS "void eoVRPInit::HeuristicInitialization (\fBeoVRP\fP & _gen)\fC [inline, private]\fP" +.PP +Heuristic initializer. +.PP +This initializer constructs and individual from routes. Each route is built in a constructive way. The first client of each route is selected trying to maximize a function depending on its time window and how far it is from the depot. We always try to select the hardest clients as seeds. Used seeds are stored so that different seeds are selected for different individuals and thus guarantee the diversity of the initial population. +.PP +\fBParameters:\fP +.RS 4 +\fI_gen\fP The individual to be initialized. +.RE +.PP + +.PP +Definition at line 123 of file eoVRPInit.h. +.PP +References eoVRPUtils::clients, createNewRoute(), and EO< F >::invalidate(). +.PP +Referenced by operator()(). +.SS "bool eoVRPInit::createNewRoute (std::vector< int > & _unvisited, int & _unvisitedIdx, bool _seedCheckingOverride, Route & _route)\fC [inline, private]\fP" +.PP +Creates a new route. +.PP +Creates a new route selecting the best (hardest) client as seed and then adding the cheapest clients until one of the constraints (time window or vehicle's capacity) is broken. +.PP +\fBParameters:\fP +.RS 4 +\fI_unvisited\fP Vector of unvisited and thus available clients for constructing the new route. +.br +\fI_unvisitedIdx\fP Position of the last univisted client in _unvisited vector. +.br +\fI_seedCheckingOverride\fP If true, it overrides the seed checking mecanism. It must be always false for the first route and then true for the following ones. This way we will preserve diversity in our initial population as every individual will be initialized from a different initial route. +.br +\fI_route\fP The brand new route we have constructed. +.RE +.PP +\fBReturns:\fP +.RS 4 +True if everything went ok. +.RE +.PP + +.PP +Definition at line 176 of file eoVRPInit.h. +.PP +References mSeedsUsed, mSeedsUsedCount, selectBestClientAsSeed(), and selectBestInsertion(). +.PP +Referenced by HeuristicInitialization(). +.SS "bool eoVRPInit::selectBestInsertion (std::vector< int > & _unvisited, unsigned _unvisitedIdx, Route & _route, unsigned & _nextClient, Route::iterator & _it)\fC [inline, private]\fP" +.PP +Selects the best client and the best position for its insertion in a given route. +.PP +Given a subroute, this method tries to find the best client and the best position for it among all the univisited clients. +.PP +\fBParameters:\fP +.RS 4 +\fI_unvisited\fP Vector of unvisited and thus available clients for constructing the new route. +.br +\fI_unvisitedIdx\fP Position of the last univisted client in _unvisited vector. +.br +\fI_route\fP The route where we are trying to insert a new client. +.br +\fI_nextClient\fP A return value. The selected client to be inserted. +.br +\fI_it\fP A return value. The position for selected client to be inserted. +.RE +.PP +\fBReturns:\fP +.RS 4 +True if a new insertion is possible. False otherwise. +.RE +.PP + +.PP +Definition at line 249 of file eoVRPInit.h. +.PP +References evaluateInsertion(). +.PP +Referenced by createNewRoute(). +.SS "bool eoVRPInit::evaluateInsertion (Route & _route, unsigned _newClient, int _afterClient, double & _cost)\fC [inline, private]\fP" +.PP +Evaluates the feasibility and the cost of inserting a new client in a given subroute. +.PP +Given a subroute, this method tries evaluates if it is possible to insert a client in a position. It will return the cost of the resulting route if this insertion is possible. +.PP +\fBParameters:\fP +.RS 4 +\fI_route\fP The route where we are trying to insert a new client. +.br +\fI_newClient\fP The client we are trying to insert. +.br +\fI_afterClient\fP The position of insertion. +.br +\fI_cost\fP A return value. The cost of inserting the given client at the given position. +.RE +.PP +\fBReturns:\fP +.RS 4 +True if the new insertion is possible. False otherwise. +.RE +.PP + +.PP +Definition at line 308 of file eoVRPInit.h. +.PP +References eoVRPUtils::clients, eoVRPUtils::distance(), and eoVRPUtils::getTimeWindow(). +.PP +Referenced by selectBestInsertion(). +.SS "unsigned eoVRPInit::selectFarthestClientAsSeed (const std::vector< int > & _unvisited, int _unvisitedIdx)\fC [inline, private]\fP" +.PP +Selects the farthest client as seed for a new route. +.PP +\fBParameters:\fP +.RS 4 +\fI_unvisited\fP Vector of unvisited and thus available clients for constructing the new route. +.br +\fI_unvisitedIdx\fP Position of the last univisted client in _unvisited vector. +.RE +.PP +\fBReturns:\fP +.RS 4 +The position of the client farthest from the depot. +.RE +.PP + +.PP +Definition at line 472 of file eoVRPInit.h. +.PP +References eoVRPUtils::distance(). +.SS "unsigned eoVRPInit::selectCheapestClient (const std::vector< int > & _unvisited, int _unvisitedIdx, bool _seedCheckingOverride)\fC [inline, private]\fP" +.PP +Selects the cheapest client as seed for a new route. +.PP +\fBParameters:\fP +.RS 4 +\fI_unvisited\fP Vector of unvisited and thus available clients for constructing the new route. +.br +\fI_unvisitedIdx\fP Position of the last univisted client in _unvisited vector. +.br +\fI_seedCheckingOverride\fP If true, it overrides the seed checking mecanism. +.RE +.PP +\fBReturns:\fP +.RS 4 +The position of the cheapest client. +.RE +.PP + +.PP +Definition at line 498 of file eoVRPInit.h. +.PP +References eoVRPUtils::clients, eoVRPUtils::distance(), eoRng::flip(), mSeedsUsed, and eoVRPUtils::polarAngle(). +.SS "unsigned eoVRPInit::selectBestClientAsSeed (const std::vector< int > & _unvisited, int _unvisitedIdx, bool _seedCheckingOverride)\fC [inline, private]\fP" +.PP +Selects the best (the 'hardest' one) client as seed for a new route. +.PP +\fBParameters:\fP +.RS 4 +\fI_unvisited\fP Vector of unvisited and thus available clients for constructing the new route. +.br +\fI_unvisitedIdx\fP Position of the last univisted client in _unvisited vector. +.br +\fI_seedCheckingOverride\fP If true, it overrides the seed checking mecanism. +.RE +.PP +\fBReturns:\fP +.RS 4 +The position of the best client. +.RE +.PP + +.PP +Definition at line 532 of file eoVRPInit.h. +.PP +References eoVRPUtils::clients, eoVRPUtils::distance(), eoRng::flip(), mSeedsUsed, and eoRng::uniform(). +.PP +Referenced by createNewRoute(). +.SS "void eoVRPInit::RandomInitializationNoCheck (\fBeoVRP\fP & _gen)\fC [inline, private]\fP" +.PP +Random initializer. +.PP +Initializes a genotype using a random initializer. +.PP +\fBParameters:\fP +.RS 4 +\fI_gen\fP Generally a genotype that has been default-constructed. Whatever it contains will be lost. +.RE +.PP + +.PP +Definition at line 569 of file eoVRPInit.h. +.PP +References eoVRPUtils::clients, and eoRng::random(). + +.SH "Author" +.PP +Generated automatically by Doxygen for CVRP-TW from the source code. diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPMutation.3 b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPMutation.3 new file mode 100644 index 000000000..bdb093784 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPMutation.3 @@ -0,0 +1,194 @@ +.TH "eoVRPMutation" 3 "7 Dec 2007" "Version 1.0" "CVRP-TW" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoVRPMutation \- Implementation of variations of the four mutation operators for the VRP-TW defined by Tavares et al. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoMonOp< eoVRP >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoVRPMutation\fP ()" +.br +.RI "\fIDefault constructor: nothing to do here. \fP" +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIReturns a string containing the name of the class. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBeoVRP\fP &_genotype)" +.br +.RI "\fIFunctor operator. \fP" +.in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBswapMutation\fP (\fBeoVRP\fP &_genotype)" +.br +.RI "\fIIt exhanges the positions of two clients within the individual. \fP" +.ti -1c +.RI "bool \fBinversionMutation\fP (\fBeoVRP\fP &_genotype)" +.br +.RI "\fIIt selects two positions in the genotype and inverts the clients between them. \fP" +.ti -1c +.RI "bool \fBinsertionMutation\fP (\fBeoVRP\fP &_genotype)" +.br +.RI "\fIIt selects and individual, erases it from its original position and inserts it somewhere else. \fP" +.ti -1c +.RI "bool \fBDisplacementMutation\fP (\fBeoVRP\fP &_genotype)" +.br +.RI "\fIIt selects a set of clients, erases them from their original position and inserts them somewhere else. \fP" +.in -1c +.SH "Detailed Description" +.PP +Implementation of variations of the four mutation operators for the VRP-TW defined by Tavares et al. + +These four operators should be separated in different classes and their probabilities made parameterizable. +.PP +Definition at line 52 of file eoVRPMutation.h. +.SH "Member Function Documentation" +.PP +.SS "std::string eoVRPMutation::className (void) const\fC [inline, virtual]\fP" +.PP +Returns a string containing the name of the class. +.PP +Used to display statistics. +.PP +\fBReturns:\fP +.RS 4 +The string containing the name of the class. +.RE +.PP + +.PP +Reimplemented from \fBeoMonOp< eoVRP >\fP. +.PP +Definition at line 70 of file eoVRPMutation.h. +.SS "bool eoVRPMutation::operator() (\fBeoVRP\fP & _genotype)\fC [inline, virtual]\fP" +.PP +Functor operator. +.PP +Applies one of the four mutation operators available, each of them with a predefined (hard-coded) probability. These operators should be separated in different classes and their probabilities made parameterizable to do it in a more 'paradisEO' way. +.PP +\fBParameters:\fP +.RS 4 +\fI_genotype\fP The genotype being mutated (it will be probably modified). +.RE +.PP +\fBReturns:\fP +.RS 4 +True if the individual has been modified. False otherwise. +.RE +.PP + +.PP +Implements \fBeoUF< eoVRP &, bool >\fP. +.PP +Definition at line 86 of file eoVRPMutation.h. +.PP +References eoVRP::cleanRoutes(), DisplacementMutation(), insertionMutation(), inversionMutation(), swapMutation(), and eoRng::uniform(). +.SS "bool eoVRPMutation::swapMutation (\fBeoVRP\fP & _genotype)\fC [inline, private]\fP" +.PP +It exhanges the positions of two clients within the individual. +.PP +Clients may or may not be in the same route. +.PP +\fBParameters:\fP +.RS 4 +\fI_genotype\fP The genotype being mutated (it will be probably modified). +.RE +.PP +\fBReturns:\fP +.RS 4 +True if the individual has been modified. False otherwise. +.RE +.PP + +.PP +Definition at line 119 of file eoVRPMutation.h. +.PP +References eoRng::random(). +.PP +Referenced by operator()(). +.SS "bool eoVRPMutation::inversionMutation (\fBeoVRP\fP & _genotype)\fC [inline, private]\fP" +.PP +It selects two positions in the genotype and inverts the clients between them. +.PP +Clients may or may not be in the same route. +.PP +\fBParameters:\fP +.RS 4 +\fI_genotype\fP The genotype being mutated (it will be probably modified). +.RE +.PP +\fBReturns:\fP +.RS 4 +True if the individual has been modified. False otherwise. +.RE +.PP + +.PP +Definition at line 142 of file eoVRPMutation.h. +.PP +References eoRng::random(). +.PP +Referenced by operator()(). +.SS "bool eoVRPMutation::insertionMutation (\fBeoVRP\fP & _genotype)\fC [inline, private]\fP" +.PP +It selects and individual, erases it from its original position and inserts it somewhere else. +.PP +The insertion may or may not be within the same route. +.PP +\fBParameters:\fP +.RS 4 +\fI_genotype\fP The genotype being mutated (it will be probably modified). +.RE +.PP +\fBReturns:\fP +.RS 4 +True if the individual has been modified. False otherwise. +.RE +.PP + +.PP +Definition at line 170 of file eoVRPMutation.h. +.PP +References eoRng::random(). +.PP +Referenced by operator()(). +.SS "bool eoVRPMutation::DisplacementMutation (\fBeoVRP\fP & _genotype)\fC [inline, private]\fP" +.PP +It selects a set of clients, erases them from their original position and inserts them somewhere else. +.PP +The selected set of clients may cover different routes. +.PP +\fBParameters:\fP +.RS 4 +\fI_genotype\fP The genotype being mutated (it will be probably modified). +.RE +.PP +\fBReturns:\fP +.RS 4 +True if the individual has been modified. False otherwise. +.RE +.PP + +.PP +Definition at line 199 of file eoVRPMutation.h. +.PP +References eoRng::random(). +.PP +Referenced by operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for CVRP-TW from the source code. diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPOnePointCrossover.3 b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPOnePointCrossover.3 new file mode 100644 index 000000000..7dd972bf2 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPOnePointCrossover.3 @@ -0,0 +1,82 @@ +.TH "eoVRPOnePointCrossover" 3 "7 Dec 2007" "Version 1.0" "CVRP-TW" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoVRPOnePointCrossover \- Implementation of the simple One Point Crossover. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoQuadOp< eoVRP >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoVRPOnePointCrossover\fP ()" +.br +.RI "\fIDeafult constructor. \fP" +.ti -1c +.RI "std::string \fBclassName\fP () const " +.br +.RI "\fIReturns a string containing the name of the class. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBeoVRP\fP &_genotype1, \fBeoVRP\fP &_genotype2)" +.br +.RI "\fIPerforms a one point crossover. \fP" +.in -1c +.SH "Detailed Description" +.PP +Implementation of the simple One Point Crossover. +.PP +Definition at line 159 of file eoVRPQuadCrossover.h. +.SH "Member Function Documentation" +.PP +.SS "std::string eoVRPOnePointCrossover::className (void) const\fC [inline, virtual]\fP" +.PP +Returns a string containing the name of the class. +.PP +Used to display statistics. +.PP +\fBReturns:\fP +.RS 4 +The string containing the name of the class. +.RE +.PP + +.PP +Reimplemented from \fBeoQuadOp< eoVRP >\fP. +.PP +Definition at line 177 of file eoVRPQuadCrossover.h. +.SS "bool eoVRPOnePointCrossover::operator() (\fBeoVRP\fP & _genotype1, \fBeoVRP\fP & _genotype2)\fC [inline, virtual]\fP" +.PP +Performs a one point crossover. +.PP +Both parameters are the parents and the (future) children of the crossover. +.PP +\fBParameters:\fP +.RS 4 +\fI_genotype1\fP The first parent. +.br +\fI_genotype2\fP The second parent. +.RE +.PP +\fBReturns:\fP +.RS 4 +True if any of the parents was modified. False otherwise. +.RE +.PP + +.PP +Implements \fBeoBF< eoVRP &, eoVRP &, bool >\fP. +.PP +Definition at line 191 of file eoVRPQuadCrossover.h. +.PP +References eoVRP::cleanRoutes(), and eoRng::random(). + +.SH "Author" +.PP +Generated automatically by Doxygen for CVRP-TW from the source code. diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPStat.3 b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPStat.3 new file mode 100644 index 000000000..2197690a5 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPStat.3 @@ -0,0 +1,85 @@ +.TH "eoVRPStat" 3 "7 Dec 2007" "Version 1.0" "CVRP-TW" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoVRPStat \- Manages the statistics of the VRP problem. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBeoStat< eoVRP, double >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBeoVRPStat\fP (std::string _description='eoVRPStat ')" +.br +.RI "\fIConstructor: initializes variables properly. \fP" +.ti -1c +.RI "void \fBoperator()\fP (const \fBeoPop\fP< \fBeoVRP\fP > &_pop)" +.br +.RI "\fIGets statistics from a population. \fP" +.ti -1c +.RI "virtual std::string \fBclassName\fP (void) const " +.br +.RI "\fIReturns a string containing the name of the class. \fP" +.in -1c +.SH "Detailed Description" +.PP +Manages the statistics of the VRP problem. +.PP +Definition at line 47 of file eoVRPStat.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "eoVRPStat::eoVRPStat (std::string _description = \fC'eoVRPStat '\fP)\fC [inline]\fP" +.PP +Constructor: initializes variables properly. +.PP +\fBParameters:\fP +.RS 4 +\fI_description\fP A string identifying the class. +.RE +.PP + +.PP +Definition at line 56 of file eoVRPStat.h. +.SH "Member Function Documentation" +.PP +.SS "void eoVRPStat::operator() (const \fBeoPop\fP< \fBeoVRP\fP > & _pop)\fC [inline]\fP" +.PP +Gets statistics from a population. +.PP +\fBParameters:\fP +.RS 4 +\fI_pop\fP The population that will be analyzed. +.RE +.PP + +.PP +Definition at line 66 of file eoVRPStat.h. +.PP +References eoValueParam< T >::value(). +.SS "virtual std::string eoVRPStat::className (void) const\fC [inline, virtual]\fP" +.PP +Returns a string containing the name of the class. +.PP +Used to display statistics. +.PP +\fBReturns:\fP +.RS 4 +The string containing the name of the class. +.RE +.PP + +.PP +Reimplemented from \fBeoStat< eoVRP, double >\fP. +.PP +Definition at line 79 of file eoVRPStat.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for CVRP-TW from the source code. diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPUtils.3 b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPUtils.3 new file mode 100644 index 000000000..ad582b8c3 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPUtils.3 @@ -0,0 +1,200 @@ +.TH "eoVRPUtils" 3 "7 Dec 2007" "Version 1.0" "CVRP-TW" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoVRPUtils \- A set of structures and utility functions for the VRP-TW problem. + +.PP +.SH SYNOPSIS +.br +.PP +.SS "Classes" + +.in +1c +.ti -1c +.RI "struct \fBClientData\fP" +.br +.RI "\fIInformation regarding each client in the dataset. \fP" +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef \fBeoVRPUtils::ClientData\fP \fBClientDataT\fP" +.br +.RI "\fIRenaming of struct \fBClientData\fP. \fP" +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fBcomputeDistances\fP ()" +.br +.RI "\fIComputes the distance between two clients. \fP" +.ti -1c +.RI "void \fBgetTimeWindow\fP (unsigned _client, double &_readyTime, double &_dueTime, double &_serviceTime)" +.br +.RI "\fIReturns the time window information of a given client. \fP" +.ti -1c +.RI "float \fBdistance\fP (unsigned _from, unsigned _to)" +.br +.RI "\fIA function to get the distance between two clients. \fP" +.ti -1c +.RI "float \fBpolarAngle\fP (unsigned _from, unsigned _to)" +.br +.RI "\fIComputes de polar angle between clients. \fP" +.ti -1c +.RI "void \fBload\fP (const char *_fileName)" +.br +.RI "\fILoads the problem data from a given file. \fP" +.ti -1c +.RI "void \fBprintRoute\fP (const Route &_route)" +.br +.RI "\fIPrints a route to the standard output. \fP" +.ti -1c +.RI "void \fBprintRoutes\fP (Routes &_routes)" +.br +.RI "\fIPrints a set of routes to the standard output. \fP" +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "static std::vector< \fBClientDataT\fP > \fBclients\fP" +.br +.RI "\fIVector to store clients's information. \fP" +.ti -1c +.RI "static std::vector< std::vector< double > > \fBdist\fP" +.br +.RI "\fIDistance matrix. \fP" +.in -1c +.SH "Detailed Description" +.PP +A set of structures and utility functions for the VRP-TW problem. +.SH "Function Documentation" +.PP +.SS "void eoVRPUtils::computeDistances ()" +.PP +Computes the distance between two clients. +.PP +The computed distances will be stored in dist. +.PP +Definition at line 108 of file eoVRPUtils.h. +.PP +References clients, and dist. +.PP +Referenced by load(). +.SS "void eoVRPUtils::getTimeWindow (unsigned _client, double & _readyTime, double & _dueTime, double & _serviceTime)" +.PP +Returns the time window information of a given client. +.PP +\fBParameters:\fP +.RS 4 +\fI_client\fP The client whose information we want to know. +.br +\fI_readyTime\fP Return value. The beginning of the client's time window. +.br +\fI_dueTime\fP Return value. The end of the client's time window. +.br +\fI_serviceTime\fP Return value. The client's service time. +.RE +.PP + +.PP +Definition at line 139 of file eoVRPUtils.h. +.PP +References clients. +.PP +Referenced by eoVRP::decode(), and eoVRPInit::evaluateInsertion(). +.SS "float eoVRPUtils::distance (unsigned _from, unsigned _to)" +.PP +A function to get the distance between two clients. +.PP +\fBParameters:\fP +.RS 4 +\fI_from\fP The first client. +.br +\fI_to\fP The second client. +.RE +.PP +\fBReturns:\fP +.RS 4 +The distance between _from and _to. +.RE +.PP + +.PP +Definition at line 157 of file eoVRPUtils.h. +.PP +References clients, and dist. +.PP +Referenced by eoVRP::decode(), eoVRPInit::evaluateInsertion(), eoVRPInit::selectBestClientAsSeed(), eoVRPInit::selectCheapestClient(), and eoVRPInit::selectFarthestClientAsSeed(). +.SS "float eoVRPUtils::polarAngle (unsigned _from, unsigned _to)" +.PP +Computes de polar angle between clients. +.PP +\fBParameters:\fP +.RS 4 +\fI_from\fP The first client. +.br +\fI_to\fP The second client. +.RE +.PP +\fBReturns:\fP +.RS 4 +The polar angle between _from and _to. +.RE +.PP + +.PP +Definition at line 174 of file eoVRPUtils.h. +.PP +References clients. +.PP +Referenced by eoVRPInit::selectCheapestClient(). +.SS "void eoVRPUtils::load (const char * _fileName)" +.PP +Loads the problem data from a given file. +.PP +\fBParameters:\fP +.RS 4 +\fI_fileName\fP The file to load data from. +.RE +.PP +\fBWarning:\fP +.RS 4 +No error check is performed! +.RE +.PP + +.PP +Definition at line 199 of file eoVRPUtils.h. +.PP +References clients, and computeDistances(). +.SS "void eoVRPUtils::printRoute (const Route & _route)" +.PP +Prints a route to the standard output. +.PP +\fBParameters:\fP +.RS 4 +\fI_route\fP The route to print. +.RE +.PP + +.PP +Definition at line 241 of file eoVRPUtils.h. +.SS "void eoVRPUtils::printRoutes (Routes & _routes)" +.PP +Prints a set of routes to the standard output. +.PP +\fBParameters:\fP +.RS 4 +\fI_routes\fP The set of routes to print. +.RE +.PP + +.PP +Definition at line 264 of file eoVRPUtils.h. +.SH "Author" +.PP +Generated automatically by Doxygen for CVRP-TW from the source code. diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPUtils_ClientData.3 b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPUtils_ClientData.3 new file mode 100644 index 000000000..03e7cadee --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/doc/man/man3/eoVRPUtils_ClientData.3 @@ -0,0 +1,55 @@ +.TH "eoVRPUtils::ClientData" 3 "7 Dec 2007" "Version 1.0" "CVRP-TW" \" -*- nroff -*- +.ad l +.nh +.SH NAME +eoVRPUtils::ClientData \- Information regarding each client in the dataset. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBid\fP" +.br +.RI "\fIClient ID number. \fP" +.ti -1c +.RI "double \fBx\fP" +.br +.RI "\fIClient's 'x' position in the map. \fP" +.ti -1c +.RI "double \fBy\fP" +.br +.RI "\fIClient's 'y' position in the map. \fP" +.ti -1c +.RI "double \fBdemand\fP" +.br +.RI "\fIClient's demand of delivered product. \fP" +.ti -1c +.RI "double \fBreadyTime\fP" +.br +.RI "\fIClient's beginning of the time window. \fP" +.ti -1c +.RI "double \fBdueTime\fP" +.br +.RI "\fIClient's end of the time window. \fP" +.ti -1c +.RI "double \fBserviceTime\fP" +.br +.RI "\fIClient's service time (time needed to serve the product). \fP" +.in -1c +.SH "Detailed Description" +.PP +Information regarding each client in the dataset. + +This structure is intended to be used to store the information of each client read from the data file. +.PP +Definition at line 86 of file eoVRPUtils.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for CVRP-TW from the source code. diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/install.cmake b/contribution/tags/combinatorial/routing/cvrptw-1.0/install.cmake new file mode 100644 index 000000000..816ff2ce3 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/install.cmake @@ -0,0 +1,50 @@ + + +######################################################################################################### +# 1) ParadisEO install: SIMPLE Configuration +######################################################################################################### + +# Here, just specify PARADISEO_DIR : the directory where ParadisEO is installed +SET(PARADISEO_DIR "/data/OPAC/software/paradisEO/test/trunk" CACHE PATH "ParadisEO directory" FORCE) + +######################################################################################################### + + + +######################################################################################################### +# 2) ParadisEO install: ADVANCED Configuration +######################################################################################################### + +SET(PARADISEO_EO_SRC_DIR "${PARADISEO_DIR}/paradiseo-eo" CACHE PATH "ParadisEO-EO source directory" FORCE) +SET(PARADISEO_EO_BIN_DIR "${PARADISEO_DIR}/paradiseo-eo/build" CACHE PATH "ParadisEO-EO binary directory" FORCE) + +SET(PARADISEO_MO_SRC_DIR "${PARADISEO_DIR}/paradiseo-mo" CACHE PATH "ParadisEO-MO source directory" FORCE) +SET(PARADISEO_MO_BIN_DIR "${PARADISEO_DIR}/paradiseo-mo/build" CACHE PATH "ParadisEO-MO binary directory" FORCE) + +SET(PARADISEO_MOEO_SRC_DIR "${PARADISEO_DIR}/paradiseo-moeo" CACHE PATH "ParadisEO-MOEO source directory" FORCE) +SET(PARADISEO_MOEO_BIN_DIR "${PARADISEO_DIR}/paradiseo-moeo/build" CACHE PATH "ParadisEO-MOEO binary directory" FORCE) + +SET(PARADISEO_PEO_SRC_DIR "${PARADISEO_DIR}/paradiseo-peo" CACHE PATH "ParadisEO-PEO source directory" FORCE) +SET(PARADISEO_PEO_BIN_DIR "${PARADISEO_DIR}/paradiseo-peo/build" CACHE PATH "ParadisEO-PEO binary directory" FORCE) +######################################################################################################### + + + +###################################################################################### +### 3) OPTIONNAL: Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRP.h b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRP.h new file mode 100644 index 000000000..96b139e5e --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRP.h @@ -0,0 +1,455 @@ +/* + * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 + * (C) OPAC Team, LIFL, 2002-2007 + * + * (c) Antonio LaTorre , 2007 + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + * ParadisEO WebSite : http://paradiseo.gforge.inria.fr + * Contact: paradiseo-help@lists.gforge.inria.fr + * + */ + +#ifndef _eoVRP_h +#define _eoVRP_h + +// The base definition of eoVector +#include + +// Utilities for the VRP-TW problem +#include "eoVRPUtils.h" + +/** + * \class eoVRP eoVRP.h + * \brief Defines the getoype used to solve the VRP-TW problem. + */ + +class eoVRP: public eoVector { + +public: + + /** + * \brief Default constructor: initializes variables to safe values. + */ + + eoVRP () : mLength (0.0) { + + } + + + /** + * \brief Copy contructor: creates a new individual from a given one. + * \param _orig The individual used to create the new one. + */ + + eoVRP (const eoVRP& _orig) { + + operator= (_orig); + + } + + + /** + * \brief Default destructor: nothing to do here. + */ + + virtual ~eoVRP () { + + } + + + /** + * \brief Performs a copy from the invidual passed as argument. + * \param _orig The individual to copy from. + * \return A reference to this. + */ + + eoVRP& operator= (const eoVRP& _orig) { + + // Sanity check + if (&_orig != this) { + + // Cleans both individual and decoding information + clean (); + + // We call the assignment operator from the base class + eoVector::operator= (_orig); + + // And then copy all our attributes + mRoutes = _orig.mRoutes; + mLength = _orig.mLength; + + } + + return *this; + + } + + + /** + * \brief Returns a string containing the name of the class. + * \return The string containing the name of the class. + */ + + virtual std::string className () const { + + return "eoVRP"; + + } + + + /** + * \brief Prints the individual to a given stream. + * \param _os The stream to print to. + */ + + void printOn (std::ostream& _os) const { + + // First write the fitness + _os << std::endl; + + // Then the individual itself using the base printing method + eoVector::printOn (_os); + _os << std::endl << std::endl; + + } + + + /** + * \brief Prints a detailed version of the individual (decoding information, unsatisfied contraints, etc.) to a given stream. + * \param _os The stream to print to. + */ + + void printAllOn (std::ostream& _os) const { + + // Print the individual itself using the base printing method + eoVector::printOn (_os); + _os << std::endl << std::endl; + + // Check if we have decoding information to print + if (decoded ()) { + + // First, we print the decoded routes (stored in mRoutes) + _os << " => Routes: " << std::endl << std::endl; + printRoutes (_os); + _os << std::endl << std::endl; + + if (this->invalid ()) + _os << " => Fitness: INVALID." << std::endl << std::endl; + else + _os << " => Fitness: " << this->fitness () << std::endl << std::endl; + + } + else + std::cerr << "Warning: 'printAllOn' called but the individual was not already decoded." << std::endl; + + } + + + /** + * \brief Reads an individual from a given stream. + * \param _is The stream to read from. + */ + + void readFrom (std::istream& _is) { + + // Read the individual using the method from the base class + eoVector::readFrom (_is); + + } + + + /** + * \brief Returns a reference to the decoded individual. + * \return A reference to the decoded individual. + */ + + const Routes& routes () { + + if (mRoutes.size () == 0) + std::cerr << "Warning: This individual has not been already decoded." << std::endl; + + return mRoutes; + + } + + + /** + * \brief Returns the total cost (length) of traveling all the routes. + * \return The total cost (length) of traveling all the routes. + */ + + double length () { + + return mLength; + + } + + + /** + * \brief Aux. method to print a structure of routes. + * \param _os The stream to print to. + */ + + void printRoutes (std::ostream& _os) const { + + _os << "["; + + for (unsigned i = 0; i < mRoutes.size (); i++) { + + _os << "["; + + printRoute (_os, i); + + if (i == mRoutes.size () - 1) + _os << "]"; + else + _os << "]," << std::endl; + } + + _os << "]"; + + } + + + /** + * \brief Aux. method to print only one route. + * \param _os The stream to print to. + * \param _p The route to print. + */ + + void printRoute (std::ostream& _os, unsigned _p) const { + + _os << "["; + + for (unsigned i = 0; i < mRoutes [_p].size (); i++) { + + _os << mRoutes [_p][i]; + + if (i != mRoutes [_p].size () - 1) + _os << ", "; + + } + + _os << "]"; + + } + + + /** + * \brief Cleans the individual (the vector of clients and also the decoding information). + * \return True if the operation finishes correctly. False otherwise. + */ + + bool clean () { + + this->clear (); + mRoutes.clear (); + mLength = 0.0; + + return true; + + } + + + /** + * \brief Invalidates the decoding information (usually after crossover or mutation). + * \return True if the operation finishes correctly. False otherwise. + */ + + bool cleanRoutes () { + + mRoutes.clear (); + mLength = 0.0; + + return true; + + } + + + /** + * \brief Has this individual been decoded? + * \return True if has decoding information. False otherwise. + */ + + bool decoded () const { + + if (mRoutes.size () == 0) + return false; + + return true; + + } + + + /** + * \brief Encodes an individual from a set of routes (usually used within crossover). + * \return True if the operation finishes correctly. False otherwise. + */ + + bool encode (Routes& _routes) { + + clean (); + + for (unsigned i = 0; i < _routes.size (); i++) { + + for (unsigned j = 0; j < _routes [i].size (); j++) + this->push_back (_routes [i][j]); + + } + + return true; + + } + + + /** + * \brief Decodes an individual in a set of routes and calculates its cost (length) of traveling. + * \return The cost (length) of traveling the set of routes. + */ + + double decode () { + + bool routeStart = true; + + double demand = 0.0, route_len = 0.0, time = 0.0; + double readyTime, dueTime, serviceTime; + double depotReadyTime, depotDueTime, depotServiceTime; + + cleanRoutes (); + + Route route; + + eoVRPUtils::getTimeWindow (0, depotReadyTime, depotDueTime, depotServiceTime); + + for (unsigned i = 0; i < this->size (); i++) { + + if (routeStart) { + + demand = eoVRPUtils::clients [this->operator[] (i)].demand; + route_len = eoVRPUtils::distance (0, this->operator[] (i)); + time = eoVRPUtils::distance (0, this->operator[] (i)); + + // The capacity of the vehicle must NEVER be exceeded by the first client + // (it would be an instance impossible to solve in that case) + if (demand > VEHICLE_CAPACITY) { + + std::cerr << "This should never happen: " << std::endl; + abort (); + + } + + // Check that its TW is not exceeded + eoVRPUtils::getTimeWindow (this->operator[] (i), readyTime, dueTime, serviceTime); + + // Same thing as with capacity and first client, but now with the TW + if (time > dueTime) { + + std::cerr << "This should never happen: " << std::endl; + abort (); + + } + else if (time < readyTime) + time = readyTime; + + time += serviceTime; + + route.push_back (this->operator[] (i)); + + routeStart = false; + + } + else { + + time += eoVRPUtils::distance (this->operator[] (i - 1), this->operator[] (i)); + + // Check that its TW is not exceeded + eoVRPUtils::getTimeWindow (this->operator[] (i), readyTime, dueTime, serviceTime); + + if ((time > dueTime) || (time + serviceTime + eoVRPUtils::distance (this->operator[] (i), 0) > depotDueTime) || + (demand + eoVRPUtils::clients [this->operator[] (i)].demand > VEHICLE_CAPACITY) ) { + + route_len += eoVRPUtils::distance (this->operator[] (i - 1), 0); + + mLength += route_len; + + i--; + routeStart = true; + + // A route should contain, at least, one client. This should never happen, anyway... + if (route.size () == 0) { + + std::cerr << "Error: empty route detected while decoding. The wrong genome follows..." << std::endl; + this->printOn (std::cerr); + abort (); + + } + + mRoutes.push_back (route); + route.clear (); + + } + else { + + if (time < readyTime) + time = readyTime; + + time += serviceTime; + + route_len += eoVRPUtils::distance (this->operator[] (i - 1), this->operator[] (i)); + demand += eoVRPUtils::clients [this->operator[] (i)].demand; + + route.push_back (this->operator[] (i)); + + } + + } + + } + + if (route.size () > 0) { + + route_len += eoVRPUtils::distance (route [route.size () - 1], 0); + + mLength += route_len; + mRoutes.push_back (route); + route.clear (); + + } + + return mLength; + + } + + +private: + + Routes mRoutes; /**< A set of routes containing the decoding information of the individual. */ + double mLength; /**< Cached cost (length) of traveling the set of routes defined by the individual. */ + +}; + +#endif diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPEvalFunc.h b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPEvalFunc.h new file mode 100644 index 000000000..df836b210 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPEvalFunc.h @@ -0,0 +1,111 @@ +/* + * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 + * (C) OPAC Team, LIFL, 2002-2007 + * + * (c) Antonio LaTorre , 2007 + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + * ParadisEO WebSite : http://paradiseo.gforge.inria.fr + * Contact: paradiseo-help@lists.gforge.inria.fr + * + */ + +#ifndef _eoVRPEvalFunc_h +#define _eoVRPEvalFunc_h + +// General includes +#include +#include + +// The base definition of eoEvalFunc +#include "eoEvalFunc.h" + +// Utilities for the VRP-TW problem +#include "eoVRPUtils.h" + +/** + * \class eoVRPEvalFunc eoVRPEvalFunc.h + * \brief Evaluates an individual of type eoVRP. + */ + +class eoVRPEvalFunc : public eoEvalFunc { + +public: + + /** + * \brief Constructor: nothing to do here. + */ + + eoVRPEvalFunc () { + + } + + + /** + * \brief Computes the (penalized) fitness + * \param _eo The individual to be evaluated. + */ + + void operator () (eoVRP& _eo) { + + double fit = 0.0; + + if (_eo.decoded ()) { + + if (_eo.invalid ()) { + + std::cerr << "Warning: invalid individual presents decoding information." << std::endl; + fit = _eo.decode (); + + } + else + fit = _eo.length (); + + } + else { + + if (!_eo.invalid ()) { + + std::cerr << "Warning: valid individual does not present decoding information." << std::endl; + std::cerr << " Proceeding to decode..." << std::endl; + + } + + fit = _eo.decode (); + + } + + _eo.fitness (fit); + + } + + +private: + + +}; + +#endif diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPInit.h b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPInit.h new file mode 100644 index 000000000..0c4f027df --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPInit.h @@ -0,0 +1,606 @@ +/* + * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 + * (C) OPAC Team, LIFL, 2002-2007 + * + * (c) Antonio LaTorre , 2007 + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + * ParadisEO WebSite : http://paradiseo.gforge.inria.fr + * Contact: paradiseo-help@lists.gforge.inria.fr + * + */ + +#ifndef _eoVRPInit_h +#define _eoVRPInit_h + +// The base definition of eoInit +#include + +// Utilities for the VRP-TW problem +#include "eoVRPUtils.h" + +/** + * \def ALFA + * Constant used by "selectCheapestClient" method. + * \def BETA + * Constant used by "selectCheapestClient" method. + * \def GAMMA + * Constant used by "selectCheapestClient" method. + */ + +#define ALFA 0.7 +#define BETA 0.1 +#define GAMMA 0.2 + +/** + * \class eoVRPInit eoVRPInit.h + * \brief Class defining the initializer functor. + * This class initializes an individual of the VRP problem using + * an heuristic initializer. + */ + +class eoVRPInit: public eoInit { + +public: + + /** + * \brief Default constructor: nothing to do here. + */ + + eoVRPInit () { + + unsigned sz = eoVRPUtils::clients.size (); + + if (sz <= 0) { + + std::cerr << "Error: the dataset MUST be read before creating the initializer object." << std::endl; + abort (); + + } + + mSeedsUsedCount = 0; + + for (unsigned i = 0; i < sz; i++) + mSeedsUsed.push_back (false); + + } + + + /** + * \brief Functor member. + * Initializes a genotype using an heuristic initializer. + * \param _gen Generally a genotype that has been default-constructed. + * Whatever it contains will be lost. + */ + + void operator () (eoVRP& _gen) { + + HeuristicInitialization (_gen); + + } + + +private: + + unsigned mSeedsUsedCount; /**< Number of clients already used as seeds. */ + std::vector mSeedsUsed; /**< Vector storing if a client has been used as a seed or not. */ + + + /** + * \brief Heuristic initializer. + * This initializer constructs and individual from routes. Each route is built + * in a constructive way. The first client of each route is selected trying to + * maximize a function depending on its time window and how far it is from the depot. + * We always try to select the hardest clients as seeds. Used seeds are stored + * so that different seeds are selected for different individuals and thus guarantee + * the diversity of the initial population. + * \param _gen The individual to be initialized. + */ + + void HeuristicInitialization (eoVRP& _gen) { + + // Aux var to override seed used checking + bool seedCheckingOverride = false; + + // Erase any previous contents + _gen.clear (); + + // Aux vector to store unvisited clients + std::vector unvisited; + + // And an index to point to the last unvisited cutomer + int unvisitedIdx = eoVRPUtils::clients.size () - 2; + + // Initialization of the unvisited vector with all the clients + for (unsigned i = 1; i < eoVRPUtils::clients.size (); i++) + unvisited.push_back (i); + + // Main loop: keep iterating until all clients are visited + while (unvisitedIdx >= 0) { + + // Aux var to store the new route + Route route; + + createNewRoute (unvisited, unvisitedIdx, seedCheckingOverride, route); + seedCheckingOverride = true; + + for (unsigned i = 0; i < route.size (); i++) + _gen.push_back (route [i]); + + } + + // Invalidates the genotype forcing its re-evaluation + _gen.invalidate (); + + } + + + /** + * \brief Creates a new route. + * Creates a new route selecting the best (hardest) client as seed and then adding + * the cheapest clients until one of the constraints (time window or vehicle's capacity) + * is broken. + * \param _unvisited Vector of unvisited and thus available clients for constructing the new route. + * \param _unvisitedIdx Position of the last univisted client in _unvisited vector. + * \param _seedCheckingOverride If true, it overrides the seed checking mecanism. It must be + * always false for the first route and then true for the following ones. + * This way we will preserve diversity in our initial population as every individual + * will be initialized from a different initial route. + * \param _route The brand new route we have constructed. + * \return True if everything went ok. + */ + + bool createNewRoute (std::vector& _unvisited, int& _unvisitedIdx, + bool _seedCheckingOverride, Route& _route ) { + + // Selection of seed client for current route + unsigned seed = selectBestClientAsSeed (_unvisited, _unvisitedIdx, _seedCheckingOverride); + + // Add the seed client to the route + _route.push_back (_unvisited [seed]); + + // Mark the client as already selected as a main seed + // (i.e., as a seed for the first subroute of an individual) + if (!_seedCheckingOverride) { + + mSeedsUsed [_unvisited [seed]] = true; + mSeedsUsedCount++; + + if (mSeedsUsedCount == mSeedsUsed.size () - 1) { + + mSeedsUsedCount = 0; + + for (unsigned i = 0; i < mSeedsUsed.size (); i++) + mSeedsUsed [i] = false; + + } + + } + + // Delete the selected client from the unvisited vector + _unvisited [seed] = _unvisited [_unvisitedIdx]; + _unvisitedIdx--; + + bool feasibleInsert = true; + + while (feasibleInsert && _unvisitedIdx >= 0) { + + // Aux var to store the position to insert new clients in the route + Route::iterator it; + + unsigned next; + + if (selectBestInsertion (_unvisited, _unvisitedIdx, _route, next, it)) { + + if (it == _route.end ()) + _route.insert (_route.begin (), _unvisited [next]); + else + _route.insert (it + 1, _unvisited [next]); + + _unvisited [next] = _unvisited [_unvisitedIdx]; + _unvisitedIdx--; + + } + else + feasibleInsert = false; + + } + + return true; + + } + + + /** + * \brief Selects the best client and the best position for its insertion in a given route. + * Given a subroute, this method tries to find the best client and the best position for it + * among all the univisited clients. + * \param _unvisited Vector of unvisited and thus available clients for constructing the new route. + * \param _unvisitedIdx Position of the last univisted client in _unvisited vector. + * \param _route The route where we are trying to insert a new client. + * \param _nextClient A return value. The selected client to be inserted. + * \param _it A return value. The position for selected client to be inserted. + * \return True if a new insertion is possible. False otherwise. + */ + + bool selectBestInsertion (std::vector& _unvisited, unsigned _unvisitedIdx, Route& _route, + unsigned& _nextClient, Route::iterator& _it ) { + + double minCost = 999999999; + bool found = false; + + bool insertionPossible = false; + double cost = 0.0; + + for (unsigned i = 0; i < _unvisitedIdx; i++) { + + insertionPossible = evaluateInsertion (_route, _unvisited [i], -1, cost); + + if (insertionPossible && cost < minCost) { + + _it = _route.end (); + _nextClient = i; + minCost = cost; + found = true; + + } + + } + + for (Route::iterator it = _route.begin (); it != _route.end (); it++) { + + for (unsigned i = 0; i < _unvisitedIdx; i++) { + + insertionPossible = evaluateInsertion (_route, _unvisited [i], *it, cost); + + if (insertionPossible && cost < minCost) { + + _it = it; + _nextClient = i; + minCost = cost; + found = true; + + } + + } + + } + + return found; + + } + + + /** + * \brief Evaluates the feasibility and the cost of inserting a new client in a given subroute. + * Given a subroute, this method tries evaluates if it is possible to insert a client in a position. + * It will return the cost of the resulting route if this insertion is possible. + * \param _route The route where we are trying to insert a new client. + * \param _newClient The client we are trying to insert. + * \param _afterClient The position of insertion. + * \param _cost A return value. The cost of inserting the given client at the given position. + * \return True if the new insertion is possible. False otherwise. + */ + + bool evaluateInsertion (Route& _route, unsigned _newClient, int _afterClient, double& _cost) { + + // First of all, we check for capacity constraint to be satisfied + // before trying to insert the new client in the route + double demand = 0.0; + + // Cummulate the demand of all the clients in the current route + for (unsigned i = 0; i < _route.size (); i++) + demand += eoVRPUtils::clients [i].demand; + + // And then the demand of the new client + demand += eoVRPUtils::clients [_newClient].demand; + + // And finally, check if the cummulated demand exceeds vehicle's capacity + if (demand > VEHICLE_CAPACITY) + return false; + + // Now check for insertion position and TW constraints + double readyTime, dueTime, serviceTime; + + // If the client must be inserted after client "-1" that means that it + // has to be inserted at the very beginning of the route + if (_afterClient == - 1) { + + // We calculate the distante from the depot to the inserted client + _cost = eoVRPUtils::distance (0, _newClient); + + // And check that its TW is not exceeded + eoVRPUtils::getTimeWindow (_newClient, readyTime, dueTime, serviceTime); + + if (_cost > dueTime) + return false; + + // If the vehicle arrives before client's ready time, it has + // to wait until the client is ready + if (_cost < readyTime) + _cost = readyTime; + + // Add the service time for the newly inserted client + _cost += serviceTime; + + // And the cost of traveling to the next one (the first one in the old route) + _cost = _cost + eoVRPUtils::distance (_newClient, _route [0]); + + } + else + // We just need to add the cost of traveling from the depot to the first client + _cost = eoVRPUtils::distance (0, _route [0]); + + // Main loop to evaluate the rest of the route (except the last position) + for (unsigned i = 0; i < _route.size () - 1; i++) { + + // Check that the TW is not exceeded for the current client + eoVRPUtils::getTimeWindow (_route [i], readyTime, dueTime, serviceTime); + + if (_cost > dueTime) + return false; + + // If it is not exceeded, we check wether the vehicle arrives before + // the client is ready. If that's the case, it has to wait + if (_cost < readyTime) + _cost = readyTime; + + // We add the service time for this client + _cost += serviceTime; + + // And now check if we have to insert the new client after the current one + if (_route [i] == _afterClient) { + + // If that's the case, we add the cost of traveling from current client + // to the new one + _cost = _cost + eoVRPUtils::distance (_route [i], _newClient); + + // And check for its TW to be not exceeded + eoVRPUtils::getTimeWindow (_newClient, readyTime, dueTime, serviceTime); + + if (_cost > dueTime) + return false; + + // If the vehicle arrives before client's ready time, it has + // to wait until the client is ready + if (_cost < readyTime) + _cost = readyTime; + + // Add the service time for the newly inserted client + _cost += serviceTime; + + // And the cost of traveling to the next one + _cost = _cost + eoVRPUtils::distance (_newClient, _route [i + 1]); + + } + else + // We simply add the cost of traveling to the next client + _cost = _cost + eoVRPUtils::distance (_route [i], _route [i + 1]); + + } + + // Consider the special case where the new client has + // to be inserted at the end of the route + unsigned last =_route [_route.size () - 1]; + + // We first check that the TW of the last client in the old route + // has not been exedeed + eoVRPUtils::getTimeWindow (last, readyTime, dueTime, serviceTime); + + if (_cost > dueTime) + return false; + + // If the vehicle arrives before the client is ready, it waits + if (_cost < readyTime) + _cost = readyTime; + + // Now we add its service time + _cost += serviceTime; + + // And check if the new client has to be inserted at the end + // of the old route + if (_afterClient == last) { + + // In that case, we add the cost of traveling from the last client + // to the one being inserted + _cost = _cost + eoVRPUtils::distance (last, _newClient); + + // Check for its TW not being exceeded + eoVRPUtils::getTimeWindow (_newClient, readyTime, dueTime, serviceTime); + + if (_cost > dueTime) + return false; + + // If the vehicle arrives before the new client is ready, it waits + if (_cost < readyTime) + _cost = readyTime; + + // Now we add its service time + _cost += serviceTime; + + // And, finally, the time to travel back to the depot + _cost = _cost + eoVRPUtils::distance (_newClient, 0); + + } + else + // In this case we just add the cost of traveling back to the depot + _cost = _cost + eoVRPUtils::distance (last, 0); + + // Last thing to check is that the vehicle is back on time to the depot + eoVRPUtils::getTimeWindow (0, readyTime, dueTime, serviceTime); + + if (_cost > dueTime) + return false; + + // If all constraints are satisfied, we return true, and the cost of the + // insertion in the variable "_cost" + return true; + + } + + + /** + * \brief Selects the farthest client as seed for a new route. + * \param _unvisited Vector of unvisited and thus available clients for constructing the new route. + * \param _unvisitedIdx Position of the last univisted client in _unvisited vector. + * \return The position of the client farthest from the depot. + */ + + unsigned selectFarthestClientAsSeed (const std::vector& _unvisited, int _unvisitedIdx) { + + unsigned maxPos = 0; + double maxDist = eoVRPUtils::distance (0, _unvisited [0]); + + for (unsigned i = 1; i <= _unvisitedIdx; i++) + if (eoVRPUtils::distance (0, _unvisited [i]) > maxDist) { + + maxPos = i; + maxDist = eoVRPUtils::distance (0, _unvisited [i]); + + } + + return maxPos; + + } + + + /** + * \brief Selects the cheapest client as seed for a new route. + * \param _unvisited Vector of unvisited and thus available clients for constructing the new route. + * \param _unvisitedIdx Position of the last univisted client in _unvisited vector. + * \param _seedCheckingOverride If true, it overrides the seed checking mecanism. + * \return The position of the cheapest client. + */ + + unsigned selectCheapestClient (const std::vector& _unvisited, int _unvisitedIdx, bool _seedCheckingOverride) { + + int cheapestPos = -1; + double cheapestCost = 999999999; + + for (unsigned i = 0; i <= _unvisitedIdx; i++) { + + double cost = (-ALFA * eoVRPUtils::distance (0, _unvisited [i]) ) + + ( BETA * eoVRPUtils::clients [_unvisited [i]].dueTime) + + (GAMMA * eoVRPUtils::polarAngle (0, _unvisited [i]) / 360 * eoVRPUtils::distance (0, _unvisited [i])); + + if ((cost < cheapestCost || (cost == cheapestCost && rng.flip ())) && + (!mSeedsUsed [_unvisited [i]] || _seedCheckingOverride ) ) { + + cheapestPos = i; + cheapestCost = cost; + + } + + } + + return cheapestPos; + + } + + + /** + * \brief Selects the best (the "hardest" one) client as seed for a new route. + * \param _unvisited Vector of unvisited and thus available clients for constructing the new route. + * \param _unvisitedIdx Position of the last univisted client in _unvisited vector. + * \param _seedCheckingOverride If true, it overrides the seed checking mecanism. + * \return The position of the best client. + */ + + unsigned selectBestClientAsSeed (const std::vector& _unvisited, int _unvisitedIdx, bool _seedCheckingOverride) { + + int cheapestPos = -1; + double cheapestCost = 999999999; + double alfa, beta; + + alfa = rng.uniform (); + beta = rng.uniform (); + + for (unsigned i = 0; i <= _unvisitedIdx; i++) { + + double cost = (alfa * eoVRPUtils::distance (0, _unvisited [i])) + + (beta * (eoVRPUtils::clients [_unvisited [i]].dueTime - eoVRPUtils::clients [_unvisited [i]].readyTime)); + + + if ((cost < cheapestCost || (cost == cheapestCost && rng.flip ())) && + (!mSeedsUsed [_unvisited [i]] || _seedCheckingOverride ) ) { + + cheapestPos = i; + cheapestCost = cost; + + } + + } + + return cheapestPos; + + } + + + /** + * \brief Random initializer. + * Initializes a genotype using a random initializer. + * @param _gen Generally a genotype that has been default-constructed. + * Whatever it contains will be lost. + */ + + void RandomInitializationNoCheck (eoVRP& _gen) { + + // Erase any previous contents + _gen.clear (); + + // Aux vector to store unvisited clients + std::vector unvisited; + + // And an index to point to the last unvisited cutomer + int unvisitedIdx = eoVRPUtils::clients.size () - 2; + + // Initialization of the unvisited vector with all the clients + for (unsigned i = 1; i < eoVRPUtils::clients.size (); i++) + unvisited.push_back (i); + + while (unvisitedIdx >= 0) { + + unsigned n = rng.random (unvisitedIdx); + + for (unsigned i = 0; i <= n; i++) { + + unsigned pos = rng.random (unvisitedIdx); + + _gen.push_back (unvisited [pos]); + + unvisited [pos] = unvisited [unvisitedIdx]; + unvisitedIdx--; + + } + + } + + } + + +}; + +#endif diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPMutation.h b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPMutation.h new file mode 100644 index 000000000..b65fc3dfa --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPMutation.h @@ -0,0 +1,229 @@ +/* + * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 + * (C) OPAC Team, LIFL, 2002-2007 + * + * (c) Antonio LaTorre , 2007 + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + * ParadisEO WebSite : http://paradiseo.gforge.inria.fr + * Contact: paradiseo-help@lists.gforge.inria.fr + * + */ + +#ifndef eoVRPMutation_H +#define eoVRPMutation_H + +// General includes +#include + +// The base definition of eoMonOp +#include + +/** + * \class eoVRPMutation eoVRPMutation.h + * \brief Implementation of variations of the four mutation operators for the VRP-TW defined by Tavares et al. + * These four operators should be separated in different classes and their probabilities + * made parameterizable. + */ + +class eoVRPMutation: public eoMonOp { + +public: + + /** + * \brief Default constructor: nothing to do here. + */ + + eoVRPMutation () { + + } + + + /** + * \brief Returns a string containing the name of the class. Used to display statistics. + * \return The string containing the name of the class. + */ + + std::string className () const { + + return "eoVRPMutation"; + + } + + + /** + * \brief Functor operator. + * Applies one of the four mutation operators available, each of them with a predefined + * (hard-coded) probability. These operators should be separated in different classes + * and their probabilities made parameterizable to do it in a more "paradisEO" way. + * \param _genotype The genotype being mutated (it will be probably modified). + * \return True if the individual has been modified. False otherwise. + */ + + bool operator () (eoVRP& _genotype) { + + bool res = false; + double op = rng.uniform (); + + + if (op <= 0.05) + res = swapMutation (_genotype); + else if ((op > 0.05) && (op <= 0.20)) + res = inversionMutation (_genotype); + else if ((op > 0.20) && (op <= 0.25)) + res = insertionMutation (_genotype); + else if ((op > 0.25) && (op <= 0.45)) + res = DisplacementMutation (_genotype); + + if (res) + _genotype.cleanRoutes (); + + return res; + + } + + +private: + + + /** + * \brief It exhanges the positions of two clients within the individual. + * Clients may or may not be in the same route. + * \param _genotype The genotype being mutated (it will be probably modified). + * \return True if the individual has been modified. False otherwise. + */ + + bool swapMutation (eoVRP& _genotype) { + + int p1 = rng.random (_genotype.size ()); + int p2 = -1; + + do { + p2 = rng.random (_genotype.size ()); + } while (_genotype [p2] == _genotype [p1]); + + std::swap (_genotype [p1], _genotype [p2]); + + return true; + + } + + + /** + * \brief It selects two positions in the genotype and inverts the clients between them. + * Clients may or may not be in the same route. + * \param _genotype The genotype being mutated (it will be probably modified). + * \return True if the individual has been modified. False otherwise. + */ + + bool inversionMutation (eoVRP& _genotype) { + + int p1 = rng.random (_genotype.size ()); + int p2 = -1; + + do { + p2 = rng.random (_genotype.size ()); + } while (_genotype [p2] == _genotype [p1]); + + if (p1 > p2) + std::swap (p1, p2); + + // Reverse the subroute + reverse (_genotype.begin () + p1, _genotype.begin () + p2 + 1); + + + return false; + + } + + + /** + * \brief It selects and individual, erases it from its original position and inserts it somewhere else. + * The insertion may or may not be within the same route. + * \param _genotype The genotype being mutated (it will be probably modified). + * \return True if the individual has been modified. False otherwise. + */ + + bool insertionMutation (eoVRP& _genotype) { + + int p = -1; + + // Selection of the client to be moved + do { + p = rng.random (_genotype.size ()); + } while (_genotype [p] == -1); + + // Temporary copy of the client + unsigned client = _genotype [p]; + + _genotype.erase (_genotype.begin () + p); + + p = rng.random (_genotype.size () - 1); + _genotype.insert (_genotype.begin () + p, client); + + return true; + + } + + + /** + * \brief It selects a set of clients, erases them from their original position and inserts them somewhere else. + * The selected set of clients may cover different routes. + * \param _genotype The genotype being mutated (it will be probably modified). + * \return True if the individual has been modified. False otherwise. + */ + + bool DisplacementMutation (eoVRP& _genotype) { + + int p1 = rng.random (_genotype.size ()); + int p2 = -1; + + do { + p2 = rng.random (_genotype.size ()); + } while (_genotype [p2] == _genotype [p1]); + + if (p1 > p2) + std::swap (p1, p2); + + // Temporary copy of the fragment being moved + Route route; + + for (unsigned i = p1; i <= p2; i++) + route.push_back (_genotype [i]); + + _genotype.erase (_genotype.begin () + p1, _genotype.begin () + p2 + 1); + + unsigned p = rng.random ((_genotype.size () > 0) ? _genotype.size () - 1 : 0); + _genotype.insert (_genotype.begin () + p, route.begin (), route.end ()); + + return true; + + } + + +}; + +#endif diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPQuadCrossover.h b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPQuadCrossover.h new file mode 100644 index 000000000..bf5f4df64 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPQuadCrossover.h @@ -0,0 +1,408 @@ +/* + * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 + * (C) OPAC Team, LIFL, 2002-2007 + * + * (c) Antonio LaTorre , 2007 + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + * ParadisEO WebSite : http://paradiseo.gforge.inria.fr + * Contact: paradiseo-help@lists.gforge.inria.fr + * + */ + +#ifndef eoVRPQuadCrossover_H +#define eoVRPQuadCrossover_H + +// General includes +#include +#include +#include +#include + +// The base definition of eoQuadOp +#include + +/** + * \class eoVRPGenericCrossover eoVRPQuadCrossover.h + * \brief Implementation of the generic crossover for the VRP-TW by Tavares et al. + */ + +class eoVRPGenericCrossover: public eoQuadOp { + +public: + + /** + * \brief Deafult constructor. + */ + + eoVRPGenericCrossover () { + + } + + + /** + * \brief Returns a string containing the name of the class. Used to display statistics. + * \return The string containing the name of the class. + */ + + std::string className () const { + + return "eoVRPGenericCrossover"; + + } + + + /** + * \brief Both parameters are the parents and the (future) children of the crossover. + * \param _genotype1 The first parent. + * \param _genotype2 The second parent. + * \return True if any of the parents was modified. False otherwise. + */ + + bool operator () (eoVRP& _genotype1, eoVRP& _genotype2) { + + Routes c1 = _genotype1.routes (); + Routes c2 = _genotype2.routes (); + + GenericCrossover (_genotype1.routes (), c2); + GenericCrossover (_genotype2.routes (), c1); + + _genotype1.encode (c1); + _genotype2.encode (c2); + + return true; + + } + + +private: + + /** + * \brief Actually performs the generic crossover. + * \param _donor Set of routes from the first parent. + * \param _receiver Set of routes from the second parent + * \return True if the second parent was modified. False otherwise. + */ + + bool GenericCrossover (const Routes& _donor, Routes& _receiver) const { + + unsigned srcRoute = rng.random (_donor.size ()); + unsigned srcPos1 = rng.random (_donor [srcRoute].size ()); + unsigned srcPos2 = rng.random (_donor [srcRoute].size ()); + + if (srcPos1 > srcPos2) + std::swap (srcPos1, srcPos2); + + Route::iterator it; + + for (unsigned i = srcPos1; i <= srcPos2; i++) + for (unsigned j = 0; j < _receiver.size (); j++) { + + it = find (_receiver [j].begin (), _receiver [j].end (), _donor [srcRoute][i]); + + if (it != _receiver [j].end ()) { + + // Deletion of the repeated client + _receiver [j].erase (it); + + // Deletion of empty route, if necessary + if (_receiver [j].size () == 0) + _receiver.erase (_receiver.begin () + j); + + break; + + } + + } + + unsigned dstRoute = rng.random (_receiver.size ()); + + it = _receiver [dstRoute].begin () + rng.random (_receiver [dstRoute].size ()); + + _receiver [dstRoute].insert (it + 1, _donor [srcRoute].begin () + srcPos1, _donor [srcRoute].begin () + srcPos2 + 1); + + return true; + + } + +}; + + +/** + * \class eoVRPOnePointCrossover eoVRPQuadCrossover.h + * \brief Implementation of the simple One Point Crossover. + */ + +class eoVRPOnePointCrossover: public eoQuadOp { + +public: + + /** + * \brief Deafult constructor. + */ + + eoVRPOnePointCrossover () { + + } + + + /** + * \brief Returns a string containing the name of the class. Used to display statistics. + * \return The string containing the name of the class. + */ + + std::string className () const { + + return "eoVRPOnePointCrossover"; + + } + + + /** + * \brief Performs a one point crossover. Both parameters are the parents and the (future) children of the crossover. + * \param _genotype1 The first parent. + * \param _genotype2 The second parent. + * \return True if any of the parents was modified. False otherwise. + */ + + bool operator () (eoVRP& _genotype1, eoVRP& _genotype2) { + + eoVRP& _gen = _genotype1; + + unsigned orig1, orig2, dest; + + // First child + orig1 = rng.random (_genotype2.size ()); + orig2 = rng.random (_genotype2.size ()); + + if (orig1 > orig2) + std::swap (orig1, orig2); + + for (unsigned i = orig1; i <= orig2; i++) + _genotype1.erase (find (_genotype1.begin (), _genotype1.end (), _genotype2 [i])); + + dest = rng.random (_genotype1.size ()); + + _genotype1.insert (_genotype1.begin () + dest, _genotype2.begin () + orig1, _genotype2.begin () + orig2 + 1); + + // Second child + orig1 = rng.random (_gen.size ()); + orig2 = rng.random (_gen.size ()); + + if (orig1 > orig2) + std::swap (orig1, orig2); + + for (unsigned i = orig1; i <= orig2; i++) + _genotype2.erase (find (_genotype2.begin (), _genotype2.end (), _gen [i])); + + dest = rng.random (_genotype2.size ()); + + _genotype2.insert (_genotype2.begin () + dest, _gen.begin () + orig1, _gen.begin () + orig2 + 1); + + _genotype1.cleanRoutes (); + _genotype2.cleanRoutes (); + + return true; + + } + +}; + + +/** + * \class eoVRPEdgeCrossover eoVRPQuadCrossover.h + * \brief Implementation of the classic Edge Crossover from the TSP. + */ + +class eoVRPEdgeCrossover: public eoQuadOp { + +public: + + /** + * \brief Deafult constructor. + */ + + eoVRPEdgeCrossover () { + + } + + + /** + * \brief Returns a string containing the name of the class. Used to display statistics. + * \return The string containing the name of the class. + */ + + std::string className () const { + + return "eoVRPEdgeCrossover"; + + } + + + /** + * \brief Both parameters are the parents and the (future) children of the crossover. + * \param _genotype1 The first parent. + * \param _genotype2 The second parent. + * \return True if any of the parents was modified. False otherwise. + */ + + bool operator () (eoVRP& _genotype1, eoVRP& _genotype2) { + + eoVRP par [2]; + + // Backup of the parents + par [0] = _genotype1; + par [1] = _genotype2; + + _genotype1.clean (); + _genotype2.clean (); + + EdgeCrossover (par [0], par [1], _genotype1); + EdgeCrossover (par [0], par [1], _genotype2); + + return true; + + } + + +private: + + /** + * \brief Actually performs the edge crossover. + * \param _genotype1 First parent. + * \param _genotype2 Second parent. + * \param _child Child. + * \return True if the second parent was modified. False otherwise. + */ + + bool EdgeCrossover (eoVRP& _genotype1, eoVRP& _genotype2, eoVRP& _child) { + + std::vector > _map; + std::vector visited; + + // Build map + unsigned len = _genotype1.size () ; + + _map.resize (len+1) ; + + for (unsigned i = 0 ; i < len ; i ++) { + + _map [_genotype1 [i]].insert (_genotype1 [(i + 1) % len]) ; + _map [_genotype2 [i]].insert (_genotype2 [(i + 1) % len]) ; + _map [_genotype1 [i]].insert (_genotype1 [(i - 1 + len) % len]) ; + _map [_genotype2 [i]].insert (_genotype2 [(i - 1 + len) % len]) ; + + } + + visited.clear () ; + visited.resize (len+1, false) ; + + + _child.clear () ; + + unsigned cur_vertex = rng.random (len)+1; + + add_vertex (cur_vertex, visited, _map, _child); + + for (unsigned i = 1; i < len; i ++) { + + unsigned len_min_entry = MAXINT; + + std::set & neigh = _map [cur_vertex]; + + for (std::set ::iterator it = neigh.begin (); it != neigh.end (); it ++) { + + unsigned l = _map [*it].size (); + + if (len_min_entry > l) + len_min_entry = l; + + } + + std::vector cand; /* Candidates */ + + for (std::set ::iterator it = neigh.begin (); it != neigh.end (); it ++) { + + unsigned l = _map [*it].size (); + + if (len_min_entry == l) + cand.push_back (*it); + + } + + if (!cand.size ()) { + + /* Oh no ! Implicit mutation */ + for (unsigned j = 1; j <= len; j ++) + if (!visited [j]) + cand.push_back (j); + + } + + cur_vertex = cand [rng.random (cand.size ())] ; + + add_vertex (cur_vertex, visited, _map, _child); + + } + + } + + + /** + * \brief Removes a vertex from all his neighbours. + * \param _vertex The vertex being erased. + * \param _map The structure containing the neighbourhood relationship. + */ + + void remove_entry (unsigned _vertex, std::vector >& _map) { + + std::set & neigh = _map [_vertex]; + + for (std::set ::iterator it = neigh.begin (); it != neigh.end (); it++) + _map [*it].erase (_vertex); + + } + + + /** + * \brief Adds a vertex to a child and erases it from the list of available vertices. + * \param _vertex The vertex being added to the child. + * \param _visited The vector of visited vertices. + * \param _map The structure containing the neighbourhood relationship. + * \param _child The child where we add the vertex. + */ + + void add_vertex (unsigned _vertex, std::vector & _visited, std::vector >& _map, eoVRP& _child) { + + _visited [_vertex] = true; + _child.push_back (_vertex); + remove_entry (_vertex, _map); + + } + +}; + +#endif diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPStat.h b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPStat.h new file mode 100644 index 000000000..10f92c4c1 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPStat.h @@ -0,0 +1,90 @@ +/* + * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 + * (C) OPAC Team, LIFL, 2002-2007 + * + * (c) Antonio LaTorre , 2007 + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + * ParadisEO WebSite : http://paradiseo.gforge.inria.fr + * Contact: paradiseo-help@lists.gforge.inria.fr + * + */ + +#ifndef _eoVRPStat_h +#define _eoVRPStat_h + +// The base definition of eoInit +#include + +/** + * \class eoVRPStat eoVRPStat.h + * \brief Manages the statistics of the VRP problem. + */ + +class eoVRPStat : public eoStat { + +public: + + /** + * \brief Constructor: initializes variables properly. + * \param _description A string identifying the class. + */ + + eoVRPStat (std::string _description = "eoVRPStat ") : eoStat (0.0, _description) { + + } + + + /** + * \brief Gets statistics from a population. + * \param _pop The population that will be analyzed. + */ + + void operator() (const eoPop& _pop) { + + double tmpStat (0.); + eoStat::value () = tmpStat; + + } + + + /** + * \brief Returns a string containing the name of the class. Used to display statistics. + * \return The string containing the name of the class. + */ + + virtual std::string className (void) const { + + return "eoVRPStat"; + + } + + +private: + +}; + +#endif diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPUtils.h b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPUtils.h new file mode 100644 index 000000000..e6c723d6c --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/eoVRPUtils.h @@ -0,0 +1,294 @@ +/* + * Copyright (C) DOLPHIN Project-Team, INRIA Futurs, 2006-2007 + * (C) OPAC Team, LIFL, 2002-2007 + * + * (c) Antonio LaTorre , 2007 + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + * ParadisEO WebSite : http://paradiseo.gforge.inria.fr + * Contact: paradiseo-help@lists.gforge.inria.fr + * + */ + +#ifndef eoVRPUtils_h +#define eoVRPUtils_h + +// General includes +#include +#include +#include +#include +#include +#include + +/** + * \def PI + * Guess you know what this constant represents. + */ + +#define PI 3.14159265 + +/** + * \def VEHICLE_CAPACITY + * Hard-coded parameter for the capacity of the vehicles. This + * should be parametrized in a config file in a future version. + */ + +#define VEHICLE_CAPACITY 200 + + +typedef std::vector Route; +typedef std::vector< Route > Routes; + + +/** + * \namespace eoVRPUtils + * \brief A set of structures and utility functions for the VRP-TW problem. + */ + +namespace eoVRPUtils { + +/** +* \var typedef struct ClientData ClientDataT. +* \brief Renaming of struct ClientData. +*/ + +/** +* \struct ClientData +* \brief Information regarding each client in the dataset. +* This structure is intended to be used to store the information of each +* client read from the data file. +*/ + +typedef struct ClientData { + + unsigned id; /**< Client ID number. */ + double x; /**< Client's 'x' position in the map. */ + double y; /**< Client's 'y' position in the map. */ + double demand; /**< Client's demand of delivered product. */ + double readyTime; /**< Client's beginning of the time window. */ + double dueTime; /**< Client's end of the time window. */ + double serviceTime; /**< Client's service time (time needed to serve the product). */ + +} ClientDataT; + + +static std::vector clients; /**< Vector to store clients's information. */ +static std::vector > dist; /**< Distance matrix. */ + + +/** + * \brief Computes the distance between two clients. + * The computed distances will be stored in dist. + */ + +void computeDistances () { + + unsigned numClients = clients.size (); + + dist.resize (numClients) ; + + for (unsigned i = 0; i < dist.size (); i ++) + dist [i].resize (numClients); + + // Distances computation + for (unsigned i = 0; i < dist.size (); i ++) + for (unsigned j = i + 1 ; j < dist.size (); j ++) { + + double distX = clients [i].x - clients [j].x; + double distY = clients [i].y - clients [j].y; + + dist [i][j] = dist [j][i] = sqrt (distX * distX + distY * distY); + + } + +} + + +/** + * \brief Returns the time window information of a given client. + * \param _client The client whose information we want to know. + * \param _readyTime Return value. The beginning of the client's time window. + * \param _dueTime Return value. The end of the client's time window. + * \param _serviceTime Return value. The client's service time. + */ + +void getTimeWindow (unsigned _client, double& _readyTime, double& _dueTime, double& _serviceTime) { + + assert (_client >= 0 && _client < clients.size ()); + + _readyTime = clients [_client].readyTime; + _dueTime = clients [_client].dueTime; + _serviceTime = clients [_client].serviceTime; + +} + + +/** + * \brief A function to get the distance between two clients. + * \param _from The first client. + * \param _to The second client. + * \return The distance between _from and _to. + */ + +float distance (unsigned _from, unsigned _to) { + + assert (_from >= 0 && _from < clients.size ()); + assert (_to >= 0 && _to < clients.size ()); + + return dist [_from][_to]; + +} + + +/** + * \brief Computes de polar angle between clients. + * \param _from The first client. + * \param _to The second client. + * \return The polar angle between _from and _to. + */ + +float polarAngle (unsigned _from, unsigned _to) { + + assert (_from >= 0 && _from < clients.size ()); + assert (_to >= 0 && _to < clients.size ()); + + double angle = atan2 (clients [_from].y - clients [_to].y, + clients [_from].x - clients [_to].x); + + // To convert it from radians to degrees + angle *= 180 / PI; + + if (angle < 0) + angle *= -1; + + return angle; + +} + + +/** + * \brief Loads the problem data from a given file. + * \param _fileName The file to load data from. + * \warning No error check is performed! + */ + +void load (const char* _fileName) { + + std::ifstream f (_fileName); + + if (f) { + + while (!f.eof ()) { + + ClientDataT client; + + f >> client.id; + f >> client.x; + f >> client.y; + f >> client.demand; + f >> client.readyTime; + f >> client.dueTime; + f >> client.serviceTime; + + clients.push_back (client); + + } + + f.close (); + + computeDistances (); + + } + else { + + std::cerr << "Error: the file: " << _fileName << " doesn't exist !!!" << std::endl ; + exit (1); + + } + +} + + +/** + * \brief Prints a route to the standard output. + * \param _route The route to print. + */ + +void printRoute (const Route& _route) { + + std::cout << "["; + + for (unsigned i = 0; i < _route.size (); i++) { + + std::cout << _route [i]; + + if (i != _route.size () -1) + std::cout << ", "; + + } + + std::cout << "]"; + +} + + +/** + * \brief Prints a set of routes to the standard output. + * \param _routes The set of routes to print. + */ + +void printRoutes (Routes& _routes) { + + std::cout << "["; + + for (unsigned i = 0; i < _routes.size (); i++) { + + std::cout << "["; + + for (unsigned j = 0; j < _routes [i].size (); j++) { + + std::cout << _routes [i][j]; + + if (j != _routes [i].size () -1) + std::cout << ", "; + + } + + if (i == _routes.size () -1) + std::cout << "]"; + else + std::cout << "]," << std::endl; + } + + std::cout << "]"; + +} + + +}; + +#endif diff --git a/contribution/tags/combinatorial/routing/cvrptw-1.0/src/index.h b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/index.h new file mode 100644 index 000000000..3e8ea6fa0 --- /dev/null +++ b/contribution/tags/combinatorial/routing/cvrptw-1.0/src/index.h @@ -0,0 +1,59 @@ +/** @mainpage Welcome to PARADISEO - CVRP-TW contribution + +@section Introduction + +The capacitated vehicle routing problem with time windows or CVRP-TW is a combinatorial +optimization problem seeking to service a number of customers with a fleet of vehicles +where the vehicles have a mimited capacity and the delivery locations have time windows +within which the deliveries (or visits) must be made. Often the context is that of +delivering goods located at a central depot to customers who have placed orders for such +goods. Implicit is the goal of minimizing the cost of distributing the goods. Finding the +global minimum for the cost function, except for the smallest instances, is +computationally complex. + +@section authors AUTHORS + + + + + + + +
Dolphin project-team INRIA Futurs, 2007.Antonio LaTorre atorre[at]fi.upm.esThomas Legrand paradiseo-help[at]lists.gforge.inria.fr
+ + +@section LICENSE + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + ParadisEO WebSite : http://paradiseo.gforge.inria.fr + Contact: paradiseo-help@lists.gforge.inria.fr + + +@section Paradiseo Home Page + +http://paradiseo.gforge.inria.fr + +*/