From d41316d4b40c407f7a441aa8d1f1893725df8eca Mon Sep 17 00:00:00 2001 From: legrand Date: Fri, 7 Dec 2007 15:58:27 +0000 Subject: [PATCH] added ready-to-read doc git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@839 331e1502-861f-0410-8da2-ba01fb791d7f --- .../routing/cvrptw/doc/html/annotated.html | 47 ++ .../doc/html/classeo_v_r_p-members.html | 90 +++ .../cvrptw/doc/html/classeo_v_r_p.html | 589 ++++++++++++++++++ .../routing/cvrptw/doc/html/classeo_v_r_p.png | Bin 0 -> 1374 bytes .../classeo_v_r_p_edge_crossover-members.html | 52 ++ .../html/classeo_v_r_p_edge_crossover.html | 301 +++++++++ .../doc/html/classeo_v_r_p_edge_crossover.png | Bin 0 -> 1283 bytes .../html/classeo_v_r_p_eval_func-members.html | 45 ++ .../doc/html/classeo_v_r_p_eval_func.html | 98 +++ .../doc/html/classeo_v_r_p_eval_func.png | Bin 0 -> 764 bytes ...asseo_v_r_p_generic_crossover-members.html | 50 ++ .../html/classeo_v_r_p_generic_crossover.html | 190 ++++++ .../html/classeo_v_r_p_generic_crossover.png | Bin 0 -> 1293 bytes .../doc/html/classeo_v_r_p_init-members.html | 54 ++ .../cvrptw/doc/html/classeo_v_r_p_init.html | 521 ++++++++++++++++ .../cvrptw/doc/html/classeo_v_r_p_init.png | Bin 0 -> 629 bytes .../html/classeo_v_r_p_mutation-members.html | 53 ++ .../doc/html/classeo_v_r_p_mutation.html | 283 +++++++++ .../doc/html/classeo_v_r_p_mutation.png | Bin 0 -> 1234 bytes ...seo_v_r_p_one_point_crossover-members.html | 49 ++ .../classeo_v_r_p_one_point_crossover.html | 142 +++++ .../classeo_v_r_p_one_point_crossover.png | Bin 0 -> 1280 bytes .../doc/html/classeo_v_r_p_stat-members.html | 71 +++ .../cvrptw/doc/html/classeo_v_r_p_stat.html | 160 +++++ .../cvrptw/doc/html/classeo_v_r_p_stat.png | Bin 0 -> 1420 bytes .../routing/cvrptw/doc/html/classes.html | 41 ++ .../routing/cvrptw/doc/html/doxygen.css | 358 +++++++++++ .../routing/cvrptw/doc/html/doxygen.png | Bin 0 -> 1281 bytes .../cvrptw/doc/html/eo_v_r_p_8h-source.html | 393 ++++++++++++ .../html/eo_v_r_p_eval_func_8h-source.html | 126 ++++ .../doc/html/eo_v_r_p_init_8h-source.html | 527 ++++++++++++++++ .../doc/html/eo_v_r_p_mutation_8h-source.html | 205 ++++++ .../eo_v_r_p_quad_crossover_8h-source.html | 345 ++++++++++ .../doc/html/eo_v_r_p_stat_8h-source.html | 99 +++ .../doc/html/eo_v_r_p_utils_8h-source.html | 249 ++++++++ .../routing/cvrptw/doc/html/files.html | 39 ++ .../routing/cvrptw/doc/html/ftv2blank.png | Bin 0 -> 174 bytes .../routing/cvrptw/doc/html/ftv2doc.png | Bin 0 -> 255 bytes .../cvrptw/doc/html/ftv2folderclosed.png | Bin 0 -> 259 bytes .../cvrptw/doc/html/ftv2folderopen.png | Bin 0 -> 261 bytes .../routing/cvrptw/doc/html/ftv2lastnode.png | Bin 0 -> 233 bytes .../routing/cvrptw/doc/html/ftv2link.png | Bin 0 -> 358 bytes .../routing/cvrptw/doc/html/ftv2mlastnode.png | Bin 0 -> 160 bytes .../routing/cvrptw/doc/html/ftv2mnode.png | Bin 0 -> 194 bytes .../routing/cvrptw/doc/html/ftv2node.png | Bin 0 -> 235 bytes .../routing/cvrptw/doc/html/ftv2plastnode.png | Bin 0 -> 165 bytes .../routing/cvrptw/doc/html/ftv2pnode.png | Bin 0 -> 200 bytes .../routing/cvrptw/doc/html/ftv2vertline.png | Bin 0 -> 229 bytes .../routing/cvrptw/doc/html/functions.html | 150 +++++ .../cvrptw/doc/html/functions_func.html | 130 ++++ .../cvrptw/doc/html/functions_vars.html | 58 ++ .../routing/cvrptw/doc/html/hierarchy.html | 108 ++++ .../routing/cvrptw/doc/html/index.html | 8 + .../cvrptw/doc/html/index_8h-source.html | 30 + .../routing/cvrptw/doc/html/installdox | 117 ++++ .../routing/cvrptw/doc/html/main.html | 46 ++ .../doc/html/namespaceeo_v_r_p_utils.html | 345 ++++++++++ .../cvrptw/doc/html/namespacemembers.html | 56 ++ .../doc/html/namespacemembers_func.html | 53 ++ .../doc/html/namespacemembers_type.html | 47 ++ .../doc/html/namespacemembers_vars.html | 48 ++ .../routing/cvrptw/doc/html/namespaces.html | 37 ++ .../routing/cvrptw/doc/html/search.idx | Bin 0 -> 319204 bytes .../routing/cvrptw/doc/html/search.php | 382 ++++++++++++ ...o_v_r_p_utils_1_1_client_data-members.html | 44 ++ .../structeo_v_r_p_utils_1_1_client_data.html | 84 +++ .../routing/cvrptw/doc/html/tab_b.gif | Bin 0 -> 35 bytes .../routing/cvrptw/doc/html/tab_l.gif | Bin 0 -> 706 bytes .../routing/cvrptw/doc/html/tab_r.gif | Bin 0 -> 2585 bytes .../routing/cvrptw/doc/html/tabs.css | 102 +++ .../routing/cvrptw/doc/html/tree.html | 172 +++++ .../routing/cvrptw/doc/latex/FreeSans.ttf | Bin 0 -> 22932 bytes .../routing/cvrptw/doc/latex/Makefile | 39 ++ .../routing/cvrptw/doc/latex/annotated.tex | 12 + .../cvrptw/doc/latex/classeo_v_r_p.eps | 221 +++++++ .../cvrptw/doc/latex/classeo_v_r_p.tex | 323 ++++++++++ .../latex/classeo_v_r_p_edge_crossover.eps | 215 +++++++ .../latex/classeo_v_r_p_edge_crossover.tex | 134 ++++ .../doc/latex/classeo_v_r_p_eval_func.eps | 209 +++++++ .../doc/latex/classeo_v_r_p_eval_func.tex | 52 ++ .../latex/classeo_v_r_p_generic_crossover.eps | 215 +++++++ .../latex/classeo_v_r_p_generic_crossover.tex | 96 +++ .../cvrptw/doc/latex/classeo_v_r_p_init.eps | 209 +++++++ .../cvrptw/doc/latex/classeo_v_r_p_init.tex | 232 +++++++ .../doc/latex/classeo_v_r_p_mutation.eps | 215 +++++++ .../doc/latex/classeo_v_r_p_mutation.tex | 164 +++++ .../classeo_v_r_p_one_point_crossover.eps | 215 +++++++ .../classeo_v_r_p_one_point_crossover.tex | 71 +++ .../cvrptw/doc/latex/classeo_v_r_p_stat.eps | 227 +++++++ .../cvrptw/doc/latex/classeo_v_r_p_stat.tex | 83 +++ .../routing/cvrptw/doc/latex/doxygen.sty | 78 +++ .../routing/cvrptw/doc/latex/hierarchy.tex | 48 ++ .../routing/cvrptw/doc/latex/main.tex | 15 + .../doc/latex/namespaceeo_v_r_p_utils.tex | 166 +++++ .../routing/cvrptw/doc/latex/namespaces.tex | 4 + .../routing/cvrptw/doc/latex/refman.tex | 51 ++ .../structeo_v_r_p_utils_1_1_client_data.tex | 45 ++ .../routing/cvrptw/doc/man/man3/eoVRP.3 | 360 +++++++++++ .../cvrptw/doc/man/man3/eoVRPEdgeCrossover.3 | 159 +++++ .../cvrptw/doc/man/man3/eoVRPEvalFunc.3 | 51 ++ .../doc/man/man3/eoVRPGenericCrossover.3 | 111 ++++ .../routing/cvrptw/doc/man/man3/eoVRPInit.3 | 295 +++++++++ .../cvrptw/doc/man/man3/eoVRPMutation.3 | 194 ++++++ .../doc/man/man3/eoVRPOnePointCrossover.3 | 82 +++ .../routing/cvrptw/doc/man/man3/eoVRPStat.3 | 85 +++ .../routing/cvrptw/doc/man/man3/eoVRPUtils.3 | 200 ++++++ .../doc/man/man3/eoVRPUtils_ClientData.3 | 55 ++ 107 files changed, 12125 insertions(+) create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/annotated.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p-members.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_edge_crossover-members.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_edge_crossover.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_edge_crossover.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_eval_func-members.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_eval_func.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_eval_func.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_generic_crossover-members.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_generic_crossover.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_generic_crossover.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_init-members.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_init.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_init.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_mutation-members.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_mutation.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_mutation.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_one_point_crossover-members.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_one_point_crossover.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_one_point_crossover.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_stat-members.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_stat.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_stat.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/classes.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/doxygen.css create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/doxygen.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_8h-source.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_eval_func_8h-source.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_init_8h-source.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_mutation_8h-source.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_quad_crossover_8h-source.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_stat_8h-source.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_utils_8h-source.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/files.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2blank.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2doc.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2folderclosed.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2folderopen.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2lastnode.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2link.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2mlastnode.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2mnode.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2node.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2plastnode.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2pnode.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2vertline.png create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/functions.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/functions_func.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/functions_vars.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/hierarchy.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/index.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/index_8h-source.html create mode 100755 contribution/trunk/combinatorial/routing/cvrptw/doc/html/installdox create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/main.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespaceeo_v_r_p_utils.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers_func.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers_type.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers_vars.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespaces.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/search.idx create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/search.php create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/structeo_v_r_p_utils_1_1_client_data-members.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/structeo_v_r_p_utils_1_1_client_data.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/tab_b.gif create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/tab_l.gif create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/tab_r.gif create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/tabs.css create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/html/tree.html create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/FreeSans.ttf create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/Makefile create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/annotated.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p.eps create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_edge_crossover.eps create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_edge_crossover.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_eval_func.eps create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_eval_func.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_generic_crossover.eps create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_generic_crossover.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_init.eps create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_init.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_mutation.eps create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_mutation.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_one_point_crossover.eps create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_one_point_crossover.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_stat.eps create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_stat.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/doxygen.sty create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/hierarchy.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/main.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/namespaceeo_v_r_p_utils.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/namespaces.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/refman.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/latex/structeo_v_r_p_utils_1_1_client_data.tex create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRP.3 create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPEdgeCrossover.3 create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPEvalFunc.3 create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPGenericCrossover.3 create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPInit.3 create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPMutation.3 create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPOnePointCrossover.3 create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPStat.3 create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPUtils.3 create mode 100644 contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPUtils_ClientData.3 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/annotated.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/annotated.html new file mode 100644 index 000000000..67c4677f6 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p-members.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p-members.html new file mode 100644 index 000000000..f7b40f22c --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p.html new file mode 100644 index 000000000..62afaa029 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p.png new file mode 100644 index 0000000000000000000000000000000000000000..003d636184eb2110ac5fc806bc4d7813477c3397 GIT binary patch literal 1374 zcmeAS@N?(olHy`uVBq!ia0y~yU_1e2|6pMTlCzq!4*)5N0G|-o|Ns93ng9PEm_I*Z z0+0p92M!#lKJ@D5(}V%|D=icQL#Z|J2mIY#m2w@EgqZmQl5_6*G}dLO%a$@|!~tL}Yu zbpYDZqN1W`IqeBgyGpd;OBM@-mn;%Lc6g>AI3O}3-dKqmcOV_SjjfYuYs8s zIIC9q^Un+V@{|9nywSfGeA{u7`7?DDYlf444xg;&$hYl!^I0NmnZAj~u}nqRHKz{v zPAZcQ`Xlf|L3h&W#}ZH1P5SMSWbb~Mzv_OOjNHe4Azosao&E&d=T-jw{BE){AKSV~ zI&CfQi%l*`d~Ckr0hEl{5dBG)&&A$l_Y=EK`=d*Bm$mNrq0h4B&+BWR?=G7xda`Zt z{3mky9mihHVk*}<`E;YoYW4Q3Q&ak;zcUj_vrK&Qe@n>q3%fUMI~fz(ZFbYs=v&#t z;!Q7NW53@swK;p$^vk+^->tvg|MNoHzco5-M!rp_q)PUzq%@P0Y6>?wJ-#tan)_qU z;|VFs@@w<|a2}D#=kn|{eE%j`Ep5V|9h^Qc59b*fwmy-O##Gzj~hukH0QfSpHJWNUus#-`_y?exV(>L-^ri;$-K^Z&C`dUG(OjytQNj5QCRqtqyB5{|Gt1j z*KXvV{&l}sd{y~(@1_pVcdJEPPQO_G)imhhQd5>W*ZZ=2A|_8eZ16Gh=JrdMm>rG6 z9xK$!o!nA)a?JD%^fHQsbs+Kn3`PkFYLT5o$b^VxQmlNO9B zYhNe6ZC(=VwN@qbOl|4e)+|@=qLY)%*1rgx_9RGE^8Vv$+&ewtE+kEVX@Cb$!38ug>`^yRBwlljq#7qj`V#zJ}-W z6a2sRX}{bzvF6j%q?nUkt;gA>+3=|-0z=%d$YayQjeL6MMy*eHg4LEyn3Htsh{&Yk z5*v85V}>&%T_k%-#jR7CbS6-7rK*<7Ru@^1Pml8VtzPp^&wcWqW7Yo)?3Wq6iYgL+ ze82RncIC|@>ppv|%AG8p>?9c%H1)02yU;7so + +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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_edge_crossover.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_edge_crossover.html new file mode 100644 index 000000000..fed5f69a0 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_edge_crossover.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_edge_crossover.png new file mode 100644 index 0000000000000000000000000000000000000000..40b28088f6c7baa516bf079d9b7f37bd106ba464 GIT binary patch literal 1283 zcmZXUZB&v66vr_$Q`5|&p48q}2~(sMC6vy}(u(=IFfE=$HWgDJs5Flz35V2LJCQBR zKwKO(Y`IDJ_F!g$S~`bl%j8Y)ttqBaGZHc}#_7|}>BIfs-@W(a|9|e4*yzK~j^2(i z7|a=WBGSvfS3HpFjuh?t|UJ+VVXMN zM-ZKxebI>t#~IT5y9lPV0RCwq(-|b~{4O1;P0n-zU)5f#%YR(A4)P-&TEpegn;KB~ zLJH;ynfEtlLb>wP3uct+UiT6j3jAZHYo%OTp!TtHA-~vf*qaJ(!D|N%Qd7;ScoXRT3C7vS#mdx0u@WW>$Mw#Vpy^ zG-sz%o;xad&=dO`qdk69MG&$CZ8`cjqqIf6Sy50(5rhuG+Y8mG?j4uiJ|V%gB2Bj9 zNU;C_7q#69o&E)7D8EY(;A{TbUJ8d?nh!?Xo6U;G0*ONI0?O=9NRt)1E-lk!wzquhitfUd^vB^HcnM=?F5q&|L^>AiL$f|#zbT4obr-3q- zW=ni{-@8&RZ)-g2dWNgyV&hyl+5HrEldS1$1|68}4Xcv literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_eval_func-members.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_eval_func-members.html new file mode 100644 index 000000000..9ab13b3d9 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_eval_func.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_eval_func.html new file mode 100644 index 000000000..012b3c7b9 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_eval_func.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_eval_func.png new file mode 100644 index 0000000000000000000000000000000000000000..2f15f89bcc967fd2a239619e74f8f8ab742ad7b7 GIT binary patch literal 764 zcmVu8 zAPfM|@U!pOH!vrdwhQg6_dmkGhG0lS(+pLaV!E~oC2z(|N*qm zDCH>j9)QAF6;T86)F4i+UX0C%d>`UhS|`1mqZAyq(2*ReRr4U@LyxSQ&}JxSpk6cRtMyQYL_^bm&lI|sM+L4*{l{Q?^{Fpuz{q!t)MVx@@Y3c&OdL7`=#10kjfED z0+mgEk1=``kwB1FLt>#ky_7UuBJvulrdCJf6|^jfim2pB>hcT`=Gjy^lAjEz9OYF5 z-qjE9B!dVstzx}uHMIUa`cpIL=FqU)(XbojJ0Yw44@iR?gA6jrAcG9LAp~REJk4XG zHs~xA`ep|(rDq=E;u60Om1l0Q6Mh4^@C!o#jvoc$b4XCQ#JQP=?n80V + +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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_generic_crossover.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_generic_crossover.html new file mode 100644 index 000000000..236363931 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_generic_crossover.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_generic_crossover.png new file mode 100644 index 0000000000000000000000000000000000000000..eef33ab4696aa8c39d79878b0db2c5f472bfa914 GIT binary patch literal 1293 zcma)+Ygm#86vye}DoSi=b|EWQn#i!*1WhrQT5911yiB1&O%!|0-ZCWck|l{Y&A6pjDl`x;6_uGV>eD{#!#8U&;NhU`G~N6w$Qau z2n1pq5*&z!K<0r~mM&ai%}gW_X)UWG4nzf6EEX$TEYj*~@+B*M38_??(`Fg9w)3*^ zVFZZ3R!MiogfYk) zU0YWe1O@F8aruTiw0bI~o|D0+*#hK#e0^#(y>Gp;FM4HY^gYxDuvskJjK*3J)KKkw z!p-yYZ~sD%D;KBYt8mPq^xZ;)iK`ddXp+lzbP9n6Nd>+N5X?r3c*# z(GF86qe>fYxmMrE$Hoq;;~Q~kvFFJ{&8KCclA9+5N3Xa$^;~HZfZcv{3ykOmj5njM z2P#nDNSbj+0_U!bu{nU1AD_-|b})~BR3#H(22$D2yg%PO3OY&RWd)~aFKTJuTWI&t zUY1#+mJ2GS$p9$v4o}owgK^NxcU&yo>Giqvt^th5ThX6Q7?Kn2&{69cFjNw;%&Gk4 zRus;#sy-IbUP&>cai>N10c}U!SiMAjjL@ysq+ehwT4$19-1(R-qAzW=Em|^%>ImUL z-(!4GJ%)~%LA_>9zGw@s@b?y-+3XlUNo8N&Q9Rfaqi2~i- zdCn*Ckq2+%OeLyg&ssMKDpxDHW(3O*W1HkF z6WN8V3Z31r12ETzL;NReSuC9d)!Rvw56#zjVT!)nHnPp*Y?NPdK|Osr#a{ z&{L@L*+Qk^Rx`Gz>>PWu!aD==M=ocuH7rS)Gr|_bUHZ4P3>lQJa!rjh=>@vhlj#UP z!!HH!P)*{CyTUwCCIX`z_Y7f)c9s&;Xt-tVZ4~F9a36}+pp~RojX=9=FdP5}$46)5 z^KfeW=ZdrWaK_U^bvEc#TkOF|e7PX^$Ens!6B+2tA}=b;4U@43#TV} + +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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_init.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_init.html new file mode 100644 index 000000000..5e694c95e --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_init.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_init.png new file mode 100644 index 0000000000000000000000000000000000000000..79241afad814bab4cb599a0af7b04168d366fd96 GIT binary patch literal 629 zcmV-*0*d{KP)P1i^_5GUxg7s@L4KSDtgSl~yACzG^^l-OenK7?eC=ZES0gndq5@pgL;3INO< zRWBY=Z7WqT#nzOf6eEp@+y{v;djPW=F;m=u`xq*BO>Koj5>FlnIF{U!Mr|qJcx3>g zQ1eRO*ios$#%d{SoeY+gA-I@BhK90IxFAt+0Swp9sa>}VUqg>D5mqOOQRnt?f@|+r_zov|)M;7R1 z09;X3i}qBFwMA9ks}!-8jnq@HN3qHk)KZ#Pqs*(G7fFsw&l*cFpotaj32yd|^yy-=c~TS`w5JIdt6 zm{0(gk}0Y)O}Wfc6U7=UZpDg*s--otx*0Zk6@iWm)Yni-($uh}*3WC)oO&MRdVa`U z&pYLmQ%=1E1t%;_;lwQ7i%PyQ15A8m$J};1pq4{jyVMNn0fsbm{uL^ufVp9p3c1(Z zQNZXRRr3nJQR!uoD0P-2RG6lPl1dCw5=;K0l-6*AI;!EIIrTj1)R*lCZ + +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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_mutation.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_mutation.html new file mode 100644 index 000000000..b76e950bb --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_mutation.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_mutation.png new file mode 100644 index 0000000000000000000000000000000000000000..87103b834eaf2359ec4bd3ab6ccc1b4d24210e79 GIT binary patch literal 1234 zcmeAS@N?(olHy`uVBq!ia0y~yV6+0V53n!;$uyx&OMsL_fKQ0)|NsAi%>Vxn%%7hy z0muU50|yRNANv0U$Ym@E@(X5gcy=R=fq^B%)5S5QV$Rz;(M7incvu56ttRJBv}V}d z=(k(3uJXUP#(jQoClNNW87$j9XP+=CYEznf>qtf9iqHK9Pj)1^Wr6;R^<2r~ z`&<8N+*=Wx_{YfPRmrUKcPkPvSvpvk?bVBmwC}pGc9!(@X_f-OS)suEIX6TqR^gd-<090Z!O}gP&5%YzJJO-)Lybj5vOWw#{K5@T< zN7RHrts$417D?-C?E2W$e)QM1i96a~eGl6BY~o(NKV=_3*E+E`1npEl(4cp`_>^p4 z>4nmMhdt~PYf7Jllm|#(>MPUXnO<5dee14uzx)z^*{eGjvs`XHSaYE z^?poT_g3q}UZpzcn)TkZe|@~B9DDQkd3)<=EB7+=u8X;OXF1bWlSSQkb=1!7_M3iN zVP0js)zV9uYuC*z-*slUpZL4aOIEK{ei$$nv!)~Z)zv|UDY$; z<_jMLJb%Ac+Pc`FY%Sk`D@@Om(|2h{p9+x`iA~*SUS`$r`zlcD^SU*W>wn+b(=8u5 zUF}|L<#aLMiao2d&Ft?z72LBct#;<$S#L|-mYU7v&fX?}eDdMt{Z)teYoF7qi)go1 z<9~gwj=45sdHh0a{U5CV#SNl-N**7ro6+}$^Pcy-rhW3&ANQPA)b)t!*`-j~%$9j@ zXXz7OsU@t>ubthiU);){57f(C#Y!*rP zzc{A6>m!ue_o@4X>tXvZR=dPwdSAGFw=KP8B3)Z>WyPZ4=mYJ-{ZI$ditMgCo0$^kmA<^S%(zD{{Q8$Y)BEOHUY@$qI5a$ZVV>mfW!G2KB__@G zGJk)`{n}mQ_g + +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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_one_point_crossover.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_one_point_crossover.html new file mode 100644 index 000000000..7ac9cdeb7 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_one_point_crossover.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_one_point_crossover.png new file mode 100644 index 0000000000000000000000000000000000000000..52014fd384903be5674042c4a82fea3768fa2ce0 GIT binary patch literal 1280 zcmZXUdsNZ~6vxR&by(J!rc0T&mJiIBHH*Yj%Cu6a6e#Ab&{RT5k z6uJQkvU8)Gq$qkt2HGHN!2#HrOLMMOB0Ptl8c^!d*?XRBNqee z zSB0Li=0M*v-nVx)BqaRu%nE&aBfC(**)d)Dc=dq%K>5jBv|~Ca(ql+&a82_;&(Kx+ z#DGC$JfbrnT_Ez9D0foQ=G`|v$VAtUqbfWO>Q-}Yu{izwfevJq2g?qUe%x;Zyz1Ba zx5VlfQdW&LfXd&E`7eH4YK#|>NF-MF7&WzmJ=tUh_*tW?EEo|*;q}rwLR_CGZ*o19 z1^?eTjepz7;nuYFjy?k)tP)ayA}uBlTh&8;Cuk43uA(`5Cu+Qv_tH1x=2c8$G}3*kJA@>vn;qC4Bi!ov!oVk&gyWaLFi_~!RN}EaT?51K8vC@-2n2yq+vWwd zEMM>++q&eMR-}ccwM}#~a%g_6HAsO>c-$EhcUcNOqerXUIqD3bwx0dsD=4%)oRE6z ztp*=B$Zsk9HMe8J$^Yt*?>FNhzX{8%$TcX%H#}o65B=<$e&^1iAInkxi0r)hL#PT4Z zI6?Q9r=w;TO>T&~vb&O=>@j!&Lo1aM7tSiD?@zW9ZRW4CL1krin6$3X1r3IL2)VK?PqL$* z9Pj<~a^<`zlk?cFew|?SBN5MKAREb}rD3pSP{S=j#U6!9e5JsA1ID1Ilf+mBJU z7R|eT@{!j^PEmq~=hw}G<->WcwV=|efLI_0P*^WXlCVx~`w5SqV2YO=cooT{BFT;3 zWY5(A&Ky&#_zN?^JLU%5GQXU?b|;^hStlq+zRv^VTi%J!{bVry zRVs=I91g=)LlfYZxXrrHHTxyg?r4sNs65X~Y^X*w-ePNPg#i@$c(iia9%{BPcY^d? zQSq7tiG~7f7kA~*8y^M=x8dr5^Y-+~vY3#UzK6omxaR%I4Kyv)Vu)@rWcQ!qe^@t* YwQBBYqZko$=63}P362Qj1jZHr1KS{u6#xJL literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_stat-members.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_stat-members.html new file mode 100644 index 000000000..81ca895cb --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_stat.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_stat.html new file mode 100644 index 000000000..3c107f0c1 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_stat.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classeo_v_r_p_stat.png new file mode 100644 index 0000000000000000000000000000000000000000..3963a19117c5587d33a88b6007570d67d2e246aa GIT binary patch literal 1420 zcmZ{keKga19LJ}Wr>6Zv^ANMmLs^%&UAmqw_0yV=**fW7&nsNBgkf??^6=Y;ZjoXm zqx3+j7{e~H($THRGvORhZSzn{Xp7yQ?jPOLIroq6=kxx2&iVZDd7by?%k=ib!`1cG zVK5k+a0v8)!IVISURBM7& zeY{98mzlv(7;F=U0J@SH?0F6~W?~N_-II1S1v?s4iyRylAX*yaK>wNNR|3&A6Z26Q z*tzMv#Vz^OxsF>HYf_aywe)tY^Sx1+ZHsse%cqfXheX9gJ(c!#5~&~xzoXo|6Wz(^ z?&RgbdB=Bflc&ad)Vrhg41t2=o$Gmn{i|dv;l~${dqJ&{^%R#zW9{?NCbH3u@annD zk}EyM<>5SFH1PQD;_ZCh4HmIN9^aQ-ODs7Nxu`QAOZs?is4YM5wy;K8arEe!TOqxwJTvZNZt-|jGxOq4m*4J9p_-L=4FN!v2nPDW1#GhE9 z56g~*=Oe!OT8S%hLSz(!q zkb}xJLL_`$x62gqz#+eKPJwDtWRRzkymvxrAu1J{!Vao~6$e?St_o!-U1nDm$gcZA zs@)skjJtq2-!Og8j(a4`^OsM)c0kL$Y_z*>uLrhxcI?_AiQ~fPSc_>wCGmkIss248@vM(}FXMtaJEDS($`Klqx+sm{nMJh%svs62G}Y99!jZ zy~GLsy3+r^mX{fA>opNwz`OMB?z!vj9wy!W-e}1_s#nRa6ZRD59iUQ^sot#()wy<9 zv7KE@cALgGXNC*$HZvhbP8~^}>`^m(bejkeWIxrbXx8aiA?wlGxUoWS*m9q`H6z(E z-v^ECnfo~+@jzh?nq`Kbfg5sAH)JPGS^SZVokjUSUWOY=%wpXEY);b61)7zjN!t!Y8$Xd{Rz^Q<@oO%`zt0Oi2EMrQSSv} zmb0$<+gj}4rrml2$)Aw8jopL5 z4R|iu<{vE0@ns)7G)+>wonRa~;7Ny02yKvuQSQ+^Y@AuhbfcPcahpiXkZ>3R{5kqh zuFaasB5k-;n5TNsSWTIRkYFjLGIe8!0xKkL;6*L>u#l09tAA#IlWGlf(r!9UEIT^; z8!tc*Xc9sZt|$0xW#O?1iJVMCx-_@m=31sQGGfsGdyQXhR(1ul+tjxUGF*vwuLS4r z*OTmNX$;hTO5aE)YI9Nx-`hbbt~L-BUl>mQV>G~~M4u8dlH}6-Tg8ZSwDyxs-K pX6N(0n1g{)mGm>3A$K{w^5BYt?`v$X2^3!^jNs-4-rFCP_7DCHgSP+x literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classes.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/classes.html new file mode 100644 index 000000000..80da428bd --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/doxygen.css b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/doxygen.css new file mode 100644 index 000000000..5d583694e --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/doxygen.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a274bbaffdd67f6d784c894d9cf28729db0e14 GIT binary patch literal 1281 zcmaJ>ZA?>F7(Vx-ms?uoS`b@hdRtpo6o^%HU>M$hfGrBvQnk$LE?p^P!kn&ikhyq! zX~V@&tPF5Qt@V?oTL96Bi%aRiwbe1)9DWQI#?)=HxS7QSw`J`5fAJ*eJbB;uNuKA& zdERDo*{Y<(If(#(B$Lr#;nB(8Y#ia=ZCeW?JfPLuQY`=@cW$k}Rivq|vbxGrRq1Tl9;+(gNt?}UtVKM2`T5t1jLzuL@0UIs`S#vlhl4)^ zLgSYrPj@$+`|j?eSbXTmiHGkWxV8V}BzNR?pl9k_s4pDu9vd5a_UzZEPk)}Ad{AV_ zzddrjrh4=Imr`E06;LY{)YYt?o}L~H@7C}F^WB!Ra=v`Q0bj{>5&$66CWF>mf6vjP z2N>RRY6ZYa=K`76>+|_)Xdwko+7wv}7cN|btOhWb(*{sta~6b?S8Omrxw}!4`NhGr zZVpNqpu1@BE`QGWNTpEpcJVW5izu~2B^GlM?1(OPg)zwW;QcP@Ltcclm>XbJL9C|j z=9!2?ua=uIlf0%AndzHsRC}IyTL$EhAee(fdKB`?27KeS^2M8M_7b~PiCFO&r5LC7 z7gl1*a<8;SjNaw#h=843_AV9iZbWQOAp5YOC^&_F*9K0> zB|6%IDb?aM#3viTxkLU4aXg&@+CkNTOnQ1iMP*^?b|^lJy$4C)Zk4isV!|RZ*XhXh zw8q3$=*0LeGC!XI_Wc?dkT~3+*Gu%%yIqP+Wr3H$=&ROMQU6q}Ag^P~>c5vAEO;a- z_dK-3PPeKar%)6$j~vI2#*-YH!1h6HYVtwCX5_wM`iF#UKz&&@9Oo5w3%XGYrX zW>dY~)SG-((Yim%`InwgTvyRC?e=Wh^8KCao!R6Eg&TpVWUY1sN~4G}V?nFnEGo-; zHZ_$eW9-GnC%^WS9b z@p;-$oH#MtC0v>Q$HX%4^JdFdO$0cbv-W)Q TtK}Eh@>>I#ipmV1>S*>q-hkC} literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_8h-source.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_8h-source.html new file mode 100644 index 000000000..bce2ad5c2 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_eval_func_8h-source.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_eval_func_8h-source.html new file mode 100644 index 000000000..c2ac1f146 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_init_8h-source.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_init_8h-source.html new file mode 100644 index 000000000..592c51fb1 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_mutation_8h-source.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_mutation_8h-source.html new file mode 100644 index 000000000..f35a9a1b6 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_quad_crossover_8h-source.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_quad_crossover_8h-source.html new file mode 100644 index 000000000..c5912e070 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_stat_8h-source.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_stat_8h-source.html new file mode 100644 index 000000000..7c4191a96 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_utils_8h-source.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/eo_v_r_p_utils_8h-source.html new file mode 100644 index 000000000..0e174e47c --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/files.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/files.html new file mode 100644 index 000000000..b11d679c3 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/ftv2blank.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2blank.png new file mode 100644 index 0000000000000000000000000000000000000000..493c3c0b615ade5b22027bde773faf2c0e076d66 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr2qYM%T@!Q%(o7{me!&ckj8p!u14)&*MwA5S zr6z#mEsk^N1FBF3sc_EE%}vcKVF=AhO-xa6_jFST&P^;T z2~I3aEm8;rVk12R#UIz>f`J-DJY5_^DsClP9B62eH+WF*G=YJMp~A-KbWwke5Kx}M M)78&qol`;+0EL(^EC2ui literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2doc.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2doc.png new file mode 100644 index 0000000000000000000000000000000000000000..f72999f92172cca6edaa2538286b3e369bec9f49 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^5yjnX4egh%q=bp-`Pe zR7&bp17l3gfhmh7Fm(iZ2eAfco|q!h5)>qKG?UBh!IC9QGMbJAHf6IEiufk_g|d7~ qkWqJ4k(|I-Aeo-5U~n{Fnc?dN!3Uwu?t6hQVDNPHb6Mw<&;$TLIZ`G7 literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2folderclosed.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d063440cbf13c4128dacd96661b6fce58abf26 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^55uo^`BphW;jCHO69?}tw{JfcdnZ<*@N=4I z?xF5Qc|QYEmKAIZ;JRGVHe=bn*tx1_|J^^vyg*oVM#A1kZlFULJYD@<);T3K0RTgB BWg7qh literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2folderopen.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe2c913cf493ee37ad8e3a5132382138d93ac92 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^5u(C zYP)Mg%H-DB+{J~>rPn_#pYTax?r*V6ubqGX{lvROQ{?n5_cbm+cQAOm`njxgN@xNA D92;js literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2lastnode.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2lastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..e7b9ba90cb0cf71c8ce662956bfee7d64cf60fa6 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!py+H=+kU?6UZ?L@CkAK|NlRbNhD}!Xpp$P zU;Pg)ksC(lf|p%(p+w2Gk+!>EaktaVt4N i!r*{E4>QXNV>t$uAA#a^n)TVt_DW*G8-srQl%FeIsRSdYm zeDdtWec}u&7@8h5rqv#p7g*pRdwwmugmlS-+cHV~j}#7`Nwj9m+AU)JGGo`8z_}`K z?s#Xsy%Z;1_jl5Y+?Gum8WyK6`MBvup0SAOKJ)mWcHyteJ?WLL>>-)=?&<$H&t5oH Vd!azZ1yDdSc)I$ztaD0e0sw}(dc*(# literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2mlastnode.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2mlastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..09ceb6adb01054ce799ad20c0e818ab9272f2df2 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr#LU3Jc=+&fg$isFPOjJ*AaIJQGm()YSDb0rfjgNefXW#>UHx3vIVCg! E0ORy6RsaA1 literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2mnode.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2mnode.png new file mode 100644 index 0000000000000000000000000000000000000000..3254c05112199fbc80aad313611c58a5b388792d GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!py+H=+kU?6Ub2s@Ck7}aNq!ti3c<^Gz9OH zn+a6GSQ6wH%;50sMjDVKR^l2_5}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&YcgaLd(;| zF{I*Fa>4?=2W(CyOv{5p*uLi}G<-ambjQcb>&~4!CzK3KXWY6d$*{eWU47N}X+XCz OFnGH9xvXPg)ksC(lf|p%(p+w2Gk+y>EaktaVt4N l!r*{E4>Lv;t literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2plastnode.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2plastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..0b07e00913d8069ebbb51bd7fd6d70d8bba88f75 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr#LU3Jc=+&MJ literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2pnode.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2pnode.png new file mode 100644 index 0000000000000000000000000000000000000000..2001b797ba2b98a4127f1d3efca64aef08bf6d51 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!py+H=+kU?6Ub2s@Ck7}aNq!ti3c<^Gz9OH zn+a6GSQ6wH%;50sMjDVKR^l2_5}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Ycga!obtT zF{I*Fa>4?=2W(Dkd1@Anj~<0|oqBMOmqox%*rjK-r)THv+0v0L%h-agt(X~hWwYzA SIxU|Ma*U^|pUXO@geCywmoZiV literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2vertline.png b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/ftv2vertline.png new file mode 100644 index 0000000000000000000000000000000000000000..b330f3a33c0085c183ff39fc56b1b274160c1da0 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!py+H=+kU?6UZ?L@CkAK|NlRbNhD}!Xpp$P zU;Pg)ksC(lf|p%(p+w2Gqgt>EaktaVt4N e!r*{^G#i7W2*a|cHZQDzQVgE1elF{r5}E+)J2fZ( literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/functions.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/functions.html new file mode 100644 index 000000000..5f2912d67 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/functions_func.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/functions_func.html new file mode 100644 index 000000000..b43e86277 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/functions_vars.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/functions_vars.html new file mode 100644 index 000000000..b3df787d8 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/hierarchy.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/hierarchy.html new file mode 100644 index 000000000..57e647b4e --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/index.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/index.html new file mode 100644 index 000000000..1eb1976cf --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/index.html @@ -0,0 +1,8 @@ + + +CVRP-TW + + + + + diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/index_8h-source.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/index_8h-source.html new file mode 100644 index 000000000..25a58996e --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/installdox b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/installdox new file mode 100755 index 000000000..1628445b3 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/main.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/main.html new file mode 100644 index 000000000..036f60bd7 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/namespaceeo_v_r_p_utils.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespaceeo_v_r_p_utils.html new file mode 100644 index 000000000..f186dc4e2 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers.html new file mode 100644 index 000000000..b1a2c4995 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers_func.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers_func.html new file mode 100644 index 000000000..3a5a2ee49 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers_type.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers_type.html new file mode 100644 index 000000000..408ea945c --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers_vars.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespacemembers_vars.html new file mode 100644 index 000000000..c17e46fb7 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/namespaces.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/namespaces.html new file mode 100644 index 000000000..9f951708d --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/search.idx b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/search.idx new file mode 100644 index 0000000000000000000000000000000000000000..c29e5b3850cb1f5f960a77b7b471118256500e44 GIT binary patch literal 319204 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 UK#C>j;WiVQdtrcv#4juVAKM#eCjbBd literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/search.php b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/search.php new file mode 100644 index 000000000..f1910e78c --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/structeo_v_r_p_utils_1_1_client_data-members.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/structeo_v_r_p_utils_1_1_client_data-members.html new file mode 100644 index 000000000..07a3243ba --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/structeo_v_r_p_utils_1_1_client_data.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/structeo_v_r_p_utils_1_1_client_data.html new file mode 100644 index 000000000..8ebd25fd6 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/tab_b.gif b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/tab_b.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d623483ffdf5f9f96900108042a7ab0643fe2a3 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcJy*>IeJfk6j|fqX^=1|}vKMh0sDa2W*H literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/tab_l.gif b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/tab_l.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b1e6337c9299a700401a2a78a2c6ffced475216 GIT binary patch literal 706 zcmZ?wbhEHbZT`}F1e&(Gg}Y(8=I;HA5#Z$3JI=gGB)FQ#odI(O&E^@q;x zK6mr*m3xOS-#u~t!I@i+u0DKm^U160k6t`|^WpV}&n+8{U%dD9&a>B#U%!9-@yol< zU%&tQ{rk_K|NsC0`}dE5ET99@1@a36+kb~?0UJ*yc&I3X_m z!ND^5$O7$#8OFRuDhG}!?8z?cdZK&!`PWjdR;Aj^wZ` zeK{IEYHBJ)6K8VIp1`BVt++swf6j+=L{p1*nO(VhE`pFexG@5$|>uaCcd z`0m=9m+yak{QmXN#Sc$^{$X9h9&q2jiKAI|&T)a;PPx2K9p`YIdw8HtR5k2Q$2-O2 z*;3y{MQ-RnJTgJfI&R5|O)AHxDf_00XbPvDZPy4t=hHd)nfLPvms&O`Ok(sD()5v$ z5U@&h;a=#xbxVbo2~X&Xj0Ie(f{v>vERH+qC+nTG=B8Nca=wU-O$?1&vUgV~9=!H; zx>3p9Yn%*<>t~sk+&0xfyS8RsPfYBd<~wWK%j-LmpU>O7yX^h#UCp1x-p#i7@bE;py8XI6 zmY<)m>~)W~yIWcMVoiPg{duuf<*)9qZ9l$m*Ph&W&$jlv*Vpa+{pH@n=IQ$L?0$ax ec60Ul|8o2P|NVbd{6P)#weSbE3}s?04AuZvx_~SI literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/tab_r.gif b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/tab_r.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce9dd9f533cb5486d6941844f442b59d4a9e9175 GIT binary patch literal 2585 zcmbV}`9Bkk1ILFF--w5zJc=ZZT(zjE=;2|_S)Qm~rCWz1Pc)KPl;jv%A#&v2*x}yc zmf2~Jm~&=xjJY?PqwIN}f8qQ2{r$uH{c*nJbmr{cR5??*egHrs-B=MzCF`3%e{FAW z{oL5xTHn~5TM{jaB;@|_Ue5F&Zb@p(kMyG{*;gWDg zyeL|eZf7Qd8=#bXzSiR{yzRgLSj-fJS8>lBjVHN z^o-0eS=nE6a`W;LChBs=`+QAJP~{b93>H^eRb5kCSC1zUNezun%`L5M?RDzv#%jk7 zYVRX=vATPD`+oEfum^{RM@GjuP?-r=yh0!p;Vx^T9G7~`7%5ydH%70=jyJ;;`d;hv92x3R=z{xp+Lg2!*@OK*K15-t&okoPtSED)h&$RLxdbA zseWm^C3d%-yRNi-ryk^!ek+C`n&~cd$#ZWct_cUL{l~i+Nzx^5d!n94(>bW-iL~Rl z&8r)?q|1DIo=0=judQ{FaGcfLERz8gfn3-Qt<2lksh{mzpT}DXxUuR^z=^key&q4! z+wWI45vL0k$R^(F#{qfqhUsN@WA+w-V?LPH33!Q?WFSB3)WBojE@hK41Nb?KfS+Qo zXgrzfsP$wr4Qzy*{OD>uJBjdgGM@VMml5)2f~_}lD*YyOb}Hjeobhz#4c`w(l^>KK zr?Ud;W~Z}*w;%hZ|2^p^+f06gJDJQD zeIhGADbDmm&6arh(q>EZ<7mjzg7l|z$hRL8=1>)Nv=S7CY$B}iYJ&*T_-T_OG*L1q ztZ3Lana33?y3AKnyq^YCF|4x%Rb5WU&2qcl{TFKey%QJeMxn^SdT!hZ5+0i1zeusiYVp-phBl7b5+Px-X&LhByq z0F&<;K0l2+v>qiHlXb#$jXMv$uK-dEGE9L~qtdU(XeRXmvu*K2Q&6!fD**JxYP4b4BR7FdJ$Qx9G9`J%-_X!a#LGpp3g9)VWytGCa;7`S1_e8F~!R+aSJ zOF17p2`H?2kPs8Q`_;U}+D%3p zs2-0BTqFwpUoBk`?P;iPQ(IbEA|JmMx!P&YYG|R@S=5Mnw;-?A6rEEVyV%d7{iU4a zNk`i!%F(Ykpm`}#oH;BjY->@b8vQedv;pza2FL&*6ufjd+*3Ute&>kes~TU?^KkojsTh(o~(3tk1Y6>4(yn( z#U*ID9@eg-beKo1B;HXe+}{Z%n@7m0+yxivuqk9~;!1LGQlah)xYK4>wgL}l6dsaN zIxlRlq`*`j9PG4*0hD6YV_b_2w5b#)o7J?`q#{GjvvKlD`T*dWcZx<-s(ZvLB44E# z=!|sw!?)@%y$oRNL#25WS3lzdii}TuQ3?CLnvQ1_n};2sT_;Y;#d3=+-(O% zMN$>O!3;ke(UuLR%h_&)N zs^!-@A>QR}4yB1bPp`9S19ikTbZ~O{&FF-yHK{En;mmShDUIEw03`j(DBIsM}Rjki2J#SQa3gFZTKBPDeIiLt9Z z%bL3(B@Qw%(B`wSMS~dPh$=R`(}lBoFXKy(s|*{#ru$wjsBc_O#zxNk9w+UUHmx(U zmJ8+M+ndtnZ<7|VU9Mbt61zpo9T&3%Wx&XII=#QJxjR`CZf22ac3d51Z?GD%LEe_&*t46Qf;4`bZ7p2K(Ab5>GfT^}4! zBT&HZD`^PEgWoI&{~o-ID0F?O`75sm(87x%A{(}Ch1)QlzdJ)1B-eqe5a(weg0`4lQIf1evjvbBY50DVbzO7CLf|vP z2#0(U-|jZ`H{y5N^o7%iK6H>_HEGN->U6^!)1{XpJV!!4(Ig7wzZQ*9WYF4X1rG0x z=1uA@i`rIAciubDC{;~b(|&|A@xkjRP5aRcvRU9tvIm}jDB6J eQ0-6-y)mpwdT=ayS0tBxKDA*~;EWmo literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/html/tabs.css b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/tabs.css new file mode 100644 index 000000000..a61552a67 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/html/tree.html b/contribution/trunk/combinatorial/routing/cvrptw/doc/html/tree.html new file mode 100644 index 000000000..c3a6323ee --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/FreeSans.ttf b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/FreeSans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b550b90ba5480f9a3db170a19a1f86daecb0dc92 GIT binary patch literal 22932 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 RlllN>Fk>(~eFPlj{{dxA`xyWL literal 0 HcmV?d00001 diff --git a/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/Makefile b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/Makefile new file mode 100644 index 000000000..776fcf968 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/annotated.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/annotated.tex new file mode 100644 index 000000000..f025285a9 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p.eps b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p.eps new file mode 100644 index 000000000..f395d6452 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p.tex new file mode 100644 index 000000000..969c17b16 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_edge_crossover.eps b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_edge_crossover.eps new file mode 100644 index 000000000..a5850dde8 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_edge_crossover.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_edge_crossover.tex new file mode 100644 index 000000000..65c411ca5 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_eval_func.eps b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_eval_func.eps new file mode 100644 index 000000000..4b0cc0569 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_eval_func.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_eval_func.tex new file mode 100644 index 000000000..1a5160308 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_generic_crossover.eps b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_generic_crossover.eps new file mode 100644 index 000000000..2d3c00b42 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_generic_crossover.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_generic_crossover.tex new file mode 100644 index 000000000..2a18977d8 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_init.eps b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_init.eps new file mode 100644 index 000000000..f35a9c8c2 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_init.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_init.tex new file mode 100644 index 000000000..38dc96b38 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_mutation.eps b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_mutation.eps new file mode 100644 index 000000000..5db2e6e71 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_mutation.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_mutation.tex new file mode 100644 index 000000000..b91f13314 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_one_point_crossover.eps b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_one_point_crossover.eps new file mode 100644 index 000000000..4c1ef5e1b --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_one_point_crossover.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_one_point_crossover.tex new file mode 100644 index 000000000..ce51ac5f4 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_stat.eps b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_stat.eps new file mode 100644 index 000000000..12e4d12bd --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_stat.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/classeo_v_r_p_stat.tex new file mode 100644 index 000000000..f191cf01a --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/doxygen.sty b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/doxygen.sty new file mode 100644 index 000000000..e8ddc576a --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/hierarchy.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/hierarchy.tex new file mode 100644 index 000000000..56eb4ea9c --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/main.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/main.tex new file mode 100644 index 000000000..21049b777 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/namespaceeo_v_r_p_utils.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/namespaceeo_v_r_p_utils.tex new file mode 100644 index 000000000..5d19e6581 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/namespaces.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/namespaces.tex new file mode 100644 index 000000000..d507c8323 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/refman.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/refman.tex new file mode 100644 index 000000000..c3fa5e061 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/latex/structeo_v_r_p_utils_1_1_client_data.tex b/contribution/trunk/combinatorial/routing/cvrptw/doc/latex/structeo_v_r_p_utils_1_1_client_data.tex new file mode 100644 index 000000000..25e7b5224 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRP.3 b/contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRP.3 new file mode 100644 index 000000000..a000d4d02 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPEdgeCrossover.3 b/contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPEdgeCrossover.3 new file mode 100644 index 000000000..5e4ec243c --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPEvalFunc.3 b/contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPEvalFunc.3 new file mode 100644 index 000000000..657cbe5af --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPGenericCrossover.3 b/contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPGenericCrossover.3 new file mode 100644 index 000000000..1749ee50f --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPInit.3 b/contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPInit.3 new file mode 100644 index 000000000..290ee5e30 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPMutation.3 b/contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPMutation.3 new file mode 100644 index 000000000..bdb093784 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPOnePointCrossover.3 b/contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPOnePointCrossover.3 new file mode 100644 index 000000000..7dd972bf2 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPStat.3 b/contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPStat.3 new file mode 100644 index 000000000..2197690a5 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPUtils.3 b/contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPUtils.3 new file mode 100644 index 000000000..ad582b8c3 --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPUtils_ClientData.3 b/contribution/trunk/combinatorial/routing/cvrptw/doc/man/man3/eoVRPUtils_ClientData.3 new file mode 100644 index 000000000..03e7cadee --- /dev/null +++ b/contribution/trunk/combinatorial/routing/cvrptw/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.