From 06933583072bc4f9be06512da9aa22fa329e5e34 Mon Sep 17 00:00:00 2001 From: jboisson Date: Tue, 31 Jul 2007 11:48:12 +0000 Subject: [PATCH] moFitSolContinue, moSteadyFitSolContinue and moNoFitImprSolContinue are added git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@582 331e1502-861f-0410-8da2-ba01fb791d7f --- trunk/paradiseo-mo/doc/html/annotated.html | 9 +- .../doc/html/class_empty_selection.html | 2 +- trunk/paradiseo-mo/doc/html/classes.html | 14 +- .../doc/html/classmo_algo-members.html | 2 +- trunk/paradiseo-mo/doc/html/classmo_algo.html | 2 +- .../doc/html/classmo_aspir_crit-members.html | 2 +- .../doc/html/classmo_aspir_crit.html | 2 +- .../classmo_best_impr_select-members.html | 2 +- .../doc/html/classmo_best_impr_select.html | 2 +- .../classmo_cooling_schedule-members.html | 2 +- .../doc/html/classmo_cooling_schedule.html | 2 +- ..._exponential_cooling_schedule-members.html | 2 +- .../classmo_exponential_cooling_schedule.html | 2 +- .../classmo_first_impr_select-members.html | 2 +- .../doc/html/classmo_first_impr_select.html | 2 +- .../classmo_fit_sol_continue-members.html | 47 ++++ .../doc/html/classmo_fit_sol_continue.html | 192 +++++++++++++++ .../doc/html/classmo_fit_sol_continue.png | Bin 0 -> 896 bytes .../classmo_gen_sol_continue-members.html | 2 +- .../doc/html/classmo_gen_sol_continue.html | 54 ++--- .../doc/html/classmo_h_c-members.html | 2 +- trunk/paradiseo-mo/doc/html/classmo_h_c.html | 2 +- .../classmo_h_c_move_loop_expl-members.html | 2 +- .../doc/html/classmo_h_c_move_loop_expl.html | 2 +- ...ssmo_impr_best_fit_aspir_crit-members.html | 2 +- .../classmo_impr_best_fit_aspir_crit.html | 2 +- .../classmo_it_rand_next_move-members.html | 2 +- .../doc/html/classmo_it_rand_next_move.html | 2 +- .../html/classmo_l_s_check_point-members.html | 2 +- .../doc/html/classmo_l_s_check_point.html | 2 +- ...assmo_linear_cooling_schedule-members.html | 2 +- .../html/classmo_linear_cooling_schedule.html | 2 +- .../doc/html/classmo_move-members.html | 2 +- trunk/paradiseo-mo/doc/html/classmo_move.html | 2 +- .../doc/html/classmo_move_expl-members.html | 2 +- .../doc/html/classmo_move_expl.html | 2 +- .../html/classmo_move_incr_eval-members.html | 2 +- .../doc/html/classmo_move_incr_eval.html | 2 +- .../doc/html/classmo_move_init-members.html | 2 +- .../doc/html/classmo_move_init.html | 2 +- .../html/classmo_move_loop_expl-members.html | 2 +- .../doc/html/classmo_move_loop_expl.html | 2 +- .../doc/html/classmo_move_select-members.html | 2 +- .../doc/html/classmo_move_select.html | 2 +- .../doc/html/classmo_next_move-members.html | 2 +- .../doc/html/classmo_next_move.html | 2 +- .../html/classmo_no_aspir_crit-members.html | 2 +- .../doc/html/classmo_no_aspir_crit.html | 2 +- ...ssmo_no_fit_impr_sol_continue-members.html | 50 ++++ .../classmo_no_fit_impr_sol_continue.html | 203 ++++++++++++++++ .../html/classmo_no_fit_impr_sol_continue.png | Bin 0 -> 959 bytes .../classmo_rand_impr_select-members.html | 2 +- .../doc/html/classmo_rand_impr_select.html | 2 +- .../doc/html/classmo_rand_move-members.html | 2 +- .../doc/html/classmo_rand_move.html | 2 +- .../doc/html/classmo_s_a-members.html | 2 +- trunk/paradiseo-mo/doc/html/classmo_s_a.html | 2 +- ...classmo_simple_move_tabu_list-members.html | 2 +- .../html/classmo_simple_move_tabu_list.html | 2 +- ...smo_simple_solution_tabu_list-members.html | 2 +- .../classmo_simple_solution_tabu_list.html | 2 +- .../html/classmo_sol_continue-members.html | 2 +- .../doc/html/classmo_sol_continue.html | 21 +- .../doc/html/classmo_sol_continue.png | Bin 913 -> 2035 bytes ...assmo_steady_fit_sol_continue-members.html | 52 +++++ .../html/classmo_steady_fit_sol_continue.html | 219 ++++++++++++++++++ .../html/classmo_steady_fit_sol_continue.png | Bin 0 -> 967 bytes .../doc/html/classmo_t_s-members.html | 2 +- trunk/paradiseo-mo/doc/html/classmo_t_s.html | 2 +- .../classmo_t_s_move_loop_expl-members.html | 2 +- .../doc/html/classmo_t_s_move_loop_expl.html | 2 +- .../doc/html/classmo_tabu_list-members.html | 2 +- .../doc/html/classmo_tabu_list.html | 2 +- trunk/paradiseo-mo/doc/html/files.html | 5 +- trunk/paradiseo-mo/doc/html/functions.html | 67 ++++-- .../paradiseo-mo/doc/html/functions_func.html | 26 ++- .../paradiseo-mo/doc/html/functions_type.html | 5 +- .../paradiseo-mo/doc/html/functions_vars.html | 27 ++- trunk/paradiseo-mo/doc/html/hierarchy.html | 5 +- .../doc/html/index_8h-source.html | 2 +- trunk/paradiseo-mo/doc/html/main.html | 2 +- trunk/paradiseo-mo/doc/html/mo_8h-source.html | 57 ++--- .../doc/html/mo_algo_8h-source.html | 2 +- .../doc/html/mo_aspir_crit_8h-source.html | 2 +- .../html/mo_best_impr_select_8h-source.html | 2 +- .../html/mo_cooling_schedule_8h-source.html | 2 +- ...xponential_cooling_schedule_8h-source.html | 2 +- .../html/mo_first_impr_select_8h-source.html | 2 +- .../html/mo_fit_sol_continue_8h-source.html | 84 +++++++ .../html/mo_gen_sol_continue_8h-source.html | 45 ++-- .../doc/html/mo_h_c_8h-source.html | 2 +- .../html/mo_h_c_move_loop_expl_8h-source.html | 2 +- ...mo_impr_best_fit_aspir_crit_8h-source.html | 2 +- .../html/mo_it_rand_next_move_8h-source.html | 2 +- .../html/mo_l_s_check_point_8h-source.html | 2 +- .../mo_linear_cooling_schedule_8h-source.html | 2 +- .../doc/html/mo_move_8h-source.html | 2 +- .../doc/html/mo_move_expl_8h-source.html | 2 +- .../doc/html/mo_move_incr_eval_8h-source.html | 2 +- .../doc/html/mo_move_init_8h-source.html | 2 +- .../doc/html/mo_move_loop_expl_8h-source.html | 2 +- .../doc/html/mo_move_select_8h-source.html | 2 +- .../doc/html/mo_next_move_8h-source.html | 2 +- .../doc/html/mo_no_aspir_crit_8h-source.html | 2 +- ...mo_no_fit_impr_sol_continue_8h-source.html | 109 +++++++++ .../html/mo_rand_impr_select_8h-source.html | 2 +- .../doc/html/mo_rand_move_8h-source.html | 2 +- .../doc/html/mo_s_a_8h-source.html | 2 +- .../mo_simple_move_tabu_list_8h-source.html | 2 +- ...o_simple_solution_tabu_list_8h-source.html | 2 +- .../doc/html/mo_sol_continue_8h-source.html | 6 +- .../mo_steady_fit_sol_continue_8h-source.html | 123 ++++++++++ .../doc/html/mo_t_s_8h-source.html | 2 +- .../html/mo_t_s_move_loop_expl_8h-source.html | 2 +- .../doc/html/mo_tabu_list_8h-source.html | 2 +- trunk/paradiseo-mo/doc/html/search.idx | Bin 341761 -> 357915 bytes trunk/paradiseo-mo/doc/html/search.php | 2 +- trunk/paradiseo-mo/doc/html/tree.html | 11 +- trunk/paradiseo-mo/doc/latex/annotated.tex | 7 +- .../doc/latex/classmo_fit_sol_continue.eps | 209 +++++++++++++++++ .../doc/latex/classmo_fit_sol_continue.tex | 109 +++++++++ .../doc/latex/classmo_gen_sol_continue.tex | 36 +-- .../classmo_no_fit_impr_sol_continue.eps | 209 +++++++++++++++++ .../classmo_no_fit_impr_sol_continue.tex | 116 ++++++++++ .../doc/latex/classmo_sol_continue.eps | 38 ++- .../doc/latex/classmo_sol_continue.tex | 12 +- .../latex/classmo_steady_fit_sol_continue.eps | 209 +++++++++++++++++ .../latex/classmo_steady_fit_sol_continue.tex | 124 ++++++++++ trunk/paradiseo-mo/doc/latex/doxygen.sty | 4 +- trunk/paradiseo-mo/doc/latex/hierarchy.tex | 3 + trunk/paradiseo-mo/doc/latex/refman.tex | 5 +- .../doc/man/man3/EmptySelection.3 | 2 +- trunk/paradiseo-mo/doc/man/man3/moAlgo.3 | 2 +- trunk/paradiseo-mo/doc/man/man3/moAspirCrit.3 | 2 +- .../doc/man/man3/moBestImprSelect.3 | 2 +- .../doc/man/man3/moCoolingSchedule.3 | 2 +- .../man/man3/moExponentialCoolingSchedule.3 | 2 +- .../doc/man/man3/moFirstImprSelect.3 | 2 +- .../doc/man/man3/moFitSolContinue.3 | 115 +++++++++ .../doc/man/man3/moGenSolContinue.3 | 31 +-- trunk/paradiseo-mo/doc/man/man3/moHC.3 | 2 +- .../doc/man/man3/moHCMoveLoopExpl.3 | 2 +- .../doc/man/man3/moImprBestFitAspirCrit.3 | 2 +- .../doc/man/man3/moItRandNextMove.3 | 2 +- .../doc/man/man3/moLSCheckPoint.3 | 2 +- .../doc/man/man3/moLinearCoolingSchedule.3 | 2 +- trunk/paradiseo-mo/doc/man/man3/moMove.3 | 2 +- trunk/paradiseo-mo/doc/man/man3/moMoveExpl.3 | 2 +- .../doc/man/man3/moMoveIncrEval.3 | 2 +- trunk/paradiseo-mo/doc/man/man3/moMoveInit.3 | 2 +- .../doc/man/man3/moMoveLoopExpl.3 | 2 +- .../paradiseo-mo/doc/man/man3/moMoveSelect.3 | 2 +- trunk/paradiseo-mo/doc/man/man3/moNextMove.3 | 2 +- .../paradiseo-mo/doc/man/man3/moNoAspirCrit.3 | 2 +- .../doc/man/man3/moNoFitImprSolContinue.3 | 127 ++++++++++ .../doc/man/man3/moRandImprSelect.3 | 2 +- trunk/paradiseo-mo/doc/man/man3/moRandMove.3 | 2 +- trunk/paradiseo-mo/doc/man/man3/moSA.3 | 2 +- .../doc/man/man3/moSimpleMoveTabuList.3 | 2 +- .../doc/man/man3/moSimpleSolutionTabuList.3 | 2 +- .../paradiseo-mo/doc/man/man3/moSolContinue.3 | 14 +- .../doc/man/man3/moSteadyFitSolContinue.3 | 137 +++++++++++ trunk/paradiseo-mo/doc/man/man3/moTS.3 | 2 +- .../doc/man/man3/moTSMoveLoopExpl.3 | 2 +- trunk/paradiseo-mo/doc/man/man3/moTabuList.3 | 2 +- trunk/paradiseo-mo/src/mo.h | 3 + trunk/paradiseo-mo/src/moFitSolContinue.h | 75 ++++++ trunk/paradiseo-mo/src/moGenSolContinue.h | 29 +-- .../paradiseo-mo/src/moNoFitImprSolContinue.h | 102 ++++++++ trunk/paradiseo-mo/src/moSolContinue.h | 4 +- .../paradiseo-mo/src/moSteadyFitSolContinue.h | 120 ++++++++++ .../tutorial/Lesson2/tabu_search.cpp | 3 + 172 files changed, 3155 insertions(+), 355 deletions(-) create mode 100644 trunk/paradiseo-mo/doc/html/classmo_fit_sol_continue-members.html create mode 100644 trunk/paradiseo-mo/doc/html/classmo_fit_sol_continue.html create mode 100644 trunk/paradiseo-mo/doc/html/classmo_fit_sol_continue.png create mode 100644 trunk/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue-members.html create mode 100644 trunk/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.html create mode 100644 trunk/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.png create mode 100644 trunk/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue-members.html create mode 100644 trunk/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.html create mode 100644 trunk/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.png create mode 100644 trunk/paradiseo-mo/doc/html/mo_fit_sol_continue_8h-source.html create mode 100644 trunk/paradiseo-mo/doc/html/mo_no_fit_impr_sol_continue_8h-source.html create mode 100644 trunk/paradiseo-mo/doc/html/mo_steady_fit_sol_continue_8h-source.html create mode 100644 trunk/paradiseo-mo/doc/latex/classmo_fit_sol_continue.eps create mode 100644 trunk/paradiseo-mo/doc/latex/classmo_fit_sol_continue.tex create mode 100644 trunk/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.eps create mode 100644 trunk/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.tex create mode 100644 trunk/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.eps create mode 100644 trunk/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.tex create mode 100644 trunk/paradiseo-mo/doc/man/man3/moFitSolContinue.3 create mode 100644 trunk/paradiseo-mo/doc/man/man3/moNoFitImprSolContinue.3 create mode 100644 trunk/paradiseo-mo/doc/man/man3/moSteadyFitSolContinue.3 create mode 100644 trunk/paradiseo-mo/src/moFitSolContinue.h create mode 100644 trunk/paradiseo-mo/src/moNoFitImprSolContinue.h create mode 100644 trunk/paradiseo-mo/src/moSteadyFitSolContinue.h diff --git a/trunk/paradiseo-mo/doc/html/annotated.html b/trunk/paradiseo-mo/doc/html/annotated.html index 9409c33f8..6c8dfc10b 100644 --- a/trunk/paradiseo-mo/doc/html/annotated.html +++ b/trunk/paradiseo-mo/doc/html/annotated.html @@ -38,7 +38,8 @@ moCoolingScheduleThis class gives the description of a cooling schedule moExponentialCoolingScheduleOne of the possible moCoolingSchedule moFirstImprSelect< M >One possible moMoveSelect - moGenSolContinue< EOT >One possible stop criterion for a solution-based heuristic + moFitSolContinue< EOT >One possible stop criterion for a solution-based heuristic + moGenSolContinue< EOT >One possible stopping criterion for a solution-based heuristic moHC< M >Hill Climbing (HC) moHCMoveLoopExpl< M >Iterative explorer used by a moHC moImprBestFitAspirCrit< M >One of the possible moAspirCrit @@ -53,17 +54,19 @@ moMoveSelect< M >Class that describes a move selector (moMove) moNextMove< M >Class which allows to generate a new move (moMove) moNoAspirCrit< M >One of the possible aspiration criterion (moAspirCrit) + moNoFitImprSolContinue< EOT >One possible stop criterion for a solution-based heuristic moRandImprSelect< M >One of the possible moMove selector (moMoveSelect) moRandMove< M >Random move generator moSA< M >Simulated Annealing (SA) moSimpleMoveTabuList< M >Class describing a move tabu list with a limited memory moSimpleSolutionTabuList< M >Class describing a solution tabu list with limited length - moSolContinue< EOT >Class that describes a stop criterion for a solution-based heuristic + moSolContinue< EOT >Class that describes a stopping criterion for a solution-based heuristic + moSteadyFitSolContinue< EOT >One possible stopping criterion for a solution-based heuristic moTabuList< M >Class describing a tabu list that a moTS uses moTS< M >Tabu Search (TS) moTSMoveLoopExpl< M >Explorer for a Tabu Search algorithm -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/class_empty_selection.html b/trunk/paradiseo-mo/doc/html/class_empty_selection.html index 27239f582..4b9db688d 100644 --- a/trunk/paradiseo-mo/doc/html/class_empty_selection.html +++ b/trunk/paradiseo-mo/doc/html/class_empty_selection.html @@ -47,7 +47,7 @@ This class is used as an exception that can be thrown if a solution selector has

Definition at line 21 of file moMoveSelect.h.


The documentation for this class was generated from the following file: -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classes.html b/trunk/paradiseo-mo/doc/html/classes.html index 83d6f5416..f554c1dda 100644 --- a/trunk/paradiseo-mo/doc/html/classes.html +++ b/trunk/paradiseo-mo/doc/html/classes.html @@ -33,9 +33,8 @@

PARADISEO-MO Class Index

A | B | C | E | F | G | H | I | L | M | N | R | S | T

  A  
-
moHC   
  N  
-
moAlgo   moHCMoveLoopExpl   moNextMove   
moAspirCrit   
  I  
-
moNoAspirCrit   
  B  
+
moHC   moNextMove   
moAlgo   moHCMoveLoopExpl   moNoAspirCrit   
moAspirCrit   
  I  
+
moNoFitImprSolContinue   
  B  
moImprBestFitAspirCrit   
  R  
moBestImprSelect   moItRandNextMove   moRandImprSelect   
  C  
  L  
@@ -43,11 +42,12 @@
  E  
moLSCheckPoint   moSA   
EmptySelection   
  M  
moSimpleMoveTabuList   
moExponentialCoolingSchedule   moMove   moSimpleSolutionTabuList   
  F  
-
moMoveExpl   moSolContinue   
moFirstImprSelect   moMoveIncrEval   
  T  
+
moMoveExpl   moSolContinue   
moFirstImprSelect   moMoveIncrEval   moSteadyFitSolContinue   
moFitSolContinue   moMoveInit   
  T  
  G  
-
moMoveInit   moTabuList   
moGenSolContinue   moMoveLoopExpl   moTS   
  H  
-
moMoveSelect   moTSMoveLoopExpl   

A | B | C | E | F | G | H | I | L | M | N | R | S | T

-


Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +moMoveLoopExpl   moTabuList   moGenSolContinue   moMoveSelect   moTS   
  H  
+
  N  
+moTSMoveLoopExpl   

A | B | C | E | F | G | H | I | L | M | N | R | S | T

+


Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_algo-members.html b/trunk/paradiseo-mo/doc/html/classmo_algo-members.html index 69c0b05ed..02b1fcad9 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_algo-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_algo-members.html @@ -42,7 +42,7 @@ ~eoFunctorBase()eoFunctorBase [virtual] ~eoOp()eoOp< EOType > [virtual] ~eoUF()eoUF< EOT &, bool > [virtual] -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_algo.html b/trunk/paradiseo-mo/doc/html/classmo_algo.html index 4df7acbd0..ec94dbc0a 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_algo.html +++ b/trunk/paradiseo-mo/doc/html/classmo_algo.html @@ -58,7 +58,7 @@ Description of an algorithm of the paradiseo-mo library.

Definition at line 21 of file moAlgo.h.


The documentation for this class was generated from the following file: -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_aspir_crit-members.html b/trunk/paradiseo-mo/doc/html/classmo_aspir_crit-members.html index 4c0ce5bab..badb27eeb 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_aspir_crit-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_aspir_crit-members.html @@ -36,7 +36,7 @@ operator()(const M &, const M::EOType::Fitness &)=0eoBF< const M &, const M::EOType::Fitness &, bool > [pure virtual] ~eoBF()eoBF< const M &, const M::EOType::Fitness &, bool > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_aspir_crit.html b/trunk/paradiseo-mo/doc/html/classmo_aspir_crit.html index 50995f59d..349bbbc21 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_aspir_crit.html +++ b/trunk/paradiseo-mo/doc/html/classmo_aspir_crit.html @@ -88,7 +88,7 @@ Implemented in moAspirCrit.h -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_best_impr_select-members.html b/trunk/paradiseo-mo/doc/html/classmo_best_impr_select-members.html index 6ac91d235..787cb76e3 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_best_impr_select-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_best_impr_select-members.html @@ -41,7 +41,7 @@ update(const M &__move, const Fitness &__fit)moBestImprSelect< M > [inline, virtual] ~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_best_impr_select.html b/trunk/paradiseo-mo/doc/html/classmo_best_impr_select.html index 5a03d73aa..22a8ca382 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_best_impr_select.html +++ b/trunk/paradiseo-mo/doc/html/classmo_best_impr_select.html @@ -184,7 +184,7 @@ References moBest


The documentation for this class was generated from the following file:
-
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_cooling_schedule-members.html b/trunk/paradiseo-mo/doc/html/classmo_cooling_schedule-members.html index 42e61001e..714d89727 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_cooling_schedule-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_cooling_schedule-members.html @@ -35,7 +35,7 @@ operator()(double &)=0eoUF< double &, bool > [pure virtual] ~eoFunctorBase()eoFunctorBase [virtual] ~eoUF()eoUF< double &, bool > [virtual] -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_cooling_schedule.html b/trunk/paradiseo-mo/doc/html/classmo_cooling_schedule.html index 52c4b3e6c..5ce588db2 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_cooling_schedule.html +++ b/trunk/paradiseo-mo/doc/html/classmo_cooling_schedule.html @@ -55,7 +55,7 @@ It is only a description... An object that herits from this class is needed to b

Definition at line 22 of file moCoolingSchedule.h.


The documentation for this class was generated from the following file: -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule-members.html b/trunk/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule-members.html index bbe1c3f84..a9c767fee 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule-members.html @@ -38,7 +38,7 @@ thresholdmoExponentialCoolingSchedule [private] ~eoFunctorBase()eoFunctorBase [virtual] ~eoUF()eoUF< double &, bool > [virtual] -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule.html b/trunk/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule.html index d267bc82f..295ff0214 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule.html +++ b/trunk/paradiseo-mo/doc/html/classmo_exponential_cooling_schedule.html @@ -146,7 +146,7 @@ References moExponentialCoolingSchedule.h -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_first_impr_select-members.html b/trunk/paradiseo-mo/doc/html/classmo_first_impr_select-members.html index 0ce0b988c..0985670be 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_first_impr_select-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_first_impr_select-members.html @@ -43,7 +43,7 @@ validmoFirstImprSelect< M > [private] ~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_first_impr_select.html b/trunk/paradiseo-mo/doc/html/classmo_first_impr_select.html index ad1d1f128..45683c6e9 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_first_impr_select.html +++ b/trunk/paradiseo-mo/doc/html/classmo_first_impr_select.html @@ -215,7 +215,7 @@ References moFir


The documentation for this class was generated from the following file:
-
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_fit_sol_continue-members.html b/trunk/paradiseo-mo/doc/html/classmo_fit_sol_continue-members.html new file mode 100644 index 000000000..f59c873ce --- /dev/null +++ b/trunk/paradiseo-mo/doc/html/classmo_fit_sol_continue-members.html @@ -0,0 +1,47 @@ + + +PARADISEO-MO: Member List + + + + +
+ +
+ +

moFitSolContinue< EOT > Member List

This is the complete list of members for moFitSolContinue< EOT >, including all inherited members.

+ + + + + + + + + +
Fitness typedefmoFitSolContinue< EOT >
fitnessmoFitSolContinue< EOT > [private]
functor_category()eoUF< const EOT &, bool > [static]
init()moFitSolContinue< EOT > [inline, virtual]
maximizationmoFitSolContinue< EOT > [private]
moFitSolContinue(Fitness __fitness, bool __maximization=true)moFitSolContinue< EOT > [inline]
operator()(const EOT &__sol)moFitSolContinue< EOT > [inline, virtual]
~eoFunctorBase()eoFunctorBase [virtual]
~eoUF()eoUF< const EOT &, bool > [virtual]


Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  + +doxygen 1.5.2
+ + diff --git a/trunk/paradiseo-mo/doc/html/classmo_fit_sol_continue.html b/trunk/paradiseo-mo/doc/html/classmo_fit_sol_continue.html new file mode 100644 index 000000000..fff45bfb1 --- /dev/null +++ b/trunk/paradiseo-mo/doc/html/classmo_fit_sol_continue.html @@ -0,0 +1,192 @@ + + +PARADISEO-MO: moFitSolContinue< EOT > Class Template Reference + + + + +
+ +
+ +

moFitSolContinue< EOT > Class Template Reference

One possible stop criterion for a solution-based heuristic. +More... +

+#include <moFitSolContinue.h> +

+

Inheritance diagram for moFitSolContinue< EOT >: +

+ +moSolContinue< EOT > +eoUF< const EOT &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef EOT::Fitness Fitness
 Alias for the fitness.

Public Member Functions

 moFitSolContinue (Fitness __fitness, bool __maximization=true)
 Basic constructor.
bool operator() (const EOT &__sol)
 Function that activates the stopping criterion.
+void init ()
 Procedure which allows to initialise all the stuff needed.

Private Attributes

+Fitness fitness
 Fitness target.
bool maximization
 Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value.
+

Detailed Description

+

template<class EOT>
+ class moFitSolContinue< EOT >

+ +One possible stop criterion for a solution-based heuristic. +

+The stop criterion corresponds to a fitness threshold gained. +

+ +

+Definition at line 21 of file moFitSolContinue.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + + + + + + + + + + +
moFitSolContinue< EOT >::moFitSolContinue (Fitness  __fitness,
bool  __maximization = true 
) [inline]
+
+
+ +

+Basic constructor. +

+

Parameters:
+ + + +
__fitness The fitness to reach.
__maximization Indicate if the the aim is to maximize or minimize the fitness.
+
+ +

+Definition at line 34 of file moFitSolContinue.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
bool moFitSolContinue< EOT >::operator() (const EOT &  __sol  )  [inline, virtual]
+
+
+ +

+Function that activates the stopping criterion. +

+Indicates if the fitness threshold has not been yet reached.

+

Parameters:
+ + +
__sol the current solution.
+
+
Returns:
true or false according to the value of the fitness.
+ +

+Implements eoUF< const EOT &, bool >. +

+Definition at line 44 of file moFitSolContinue.h. +

+References moFitSolContinue< EOT >::fitness, and moFitSolContinue< EOT >::maximization. +

+

+


Member Data Documentation

+ +
+
+
+template<class EOT>
+ + + + +
bool moFitSolContinue< EOT >::maximization [private]
+
+
+ +

+Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. +

+It can be interesting to know this information because some solution-based metaheuristics can generate solution with a fitness that is worse that the best known fitness (in this case, the counter is not reinitialized). +

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

+Referenced by moFitSolContinue< EOT >::operator()(). +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  + +doxygen 1.5.2
+ + diff --git a/trunk/paradiseo-mo/doc/html/classmo_fit_sol_continue.png b/trunk/paradiseo-mo/doc/html/classmo_fit_sol_continue.png new file mode 100644 index 0000000000000000000000000000000000000000..76c36e46ca77d18247f108197d0a2e3656cbc8ca GIT binary patch literal 896 zcmV-`1AqL9P)W8)^Cuyn#21uZ-LsOsGX99K}VCIe(IIzEoBR4uzww;Q+T-;8J)$p_L)>wHqOY0Ji&4Y1`Yh2?R*SN+tuEeVM z>Z^UfFz%j9*~6H4V>!uY8nF4o?hB}MjWFX*u8-x1_zy}s-s7_WvFDa#w$9imscbrM zK@l{!**BF7u_wjG!6Ucn0I?fD*|r&S0m=f3+C8fJ>VCVesJQ|bE-z^PLfml)NByQG zj<^gi{l<+B`+nn4hvt6H`#sY)ZuC|2fK}kBzU6N6Y#!!8bb#3Bx9SVA=rfy#7h+~G zzsP;spL{ipdsXhL=lrVolFxI^KU>Sa+B_K7xW+ZEagA$S<4UZ0ufE#%3*%0?Wpfhp zW~CAX2aIGNPu|aSFx^I6W#DupU|=**x%kK~*!Xf3yXyhXu3--?Z!f~)o>YH}Vs(M; za1rVbvsi4M*tegN@^PvIwBZuYxOHb$gdMk?s$6lbcr#h=SA)mgh8l4btvhTR9Ta%P zrE@M@eUpU1duJYgGmLB8_i$G|=U2U# ze4cCm*;?+^=E1neHLh`uYh2?RR|1wqaAC>6X52S()4g=TI}e=qIZ;pfK@Yh+mw4!P zLvE-9F9+VW3P0@2m6EW_m(L;O-sEF|!1YjD%y~$^gZF`#Kv3M^^woD<@R=-}e83$9 zUmEg`)d`+6T*xJRE*!YLDz67#=cKXD4XvVZeW?2CeqqKf{kn!4asdQ;)B(=9;hgJ= z37d$^09^Zxoperator()(const EOT &__sol)moGenSolContinue< EOT > [inline, virtual] ~eoFunctorBase()eoFunctorBase [virtual] ~eoUF()eoUF< const EOT &, bool > [virtual] -
Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
diff --git a/trunk/paradiseo-mo/doc/html/classmo_gen_sol_continue.html b/trunk/paradiseo-mo/doc/html/classmo_gen_sol_continue.html index 970b2bd77..eb05162a2 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_gen_sol_continue.html +++ b/trunk/paradiseo-mo/doc/html/classmo_gen_sol_continue.html @@ -30,7 +30,7 @@
  • Class Members
  • -

    moGenSolContinue< EOT > Class Template Reference

    One possible stop criterion for a solution-based heuristic. +

    moGenSolContinue< EOT > Class Template Reference

    One possible stopping criterion for a solution-based heuristic. More...

    #include <moGenSolContinue.h> @@ -47,13 +47,14 @@

    Public Member Functions

     moGenSolContinue (unsigned int __maxNumGen) - Simple constructor.
    + Basic constructor.
    bool operator() (const EOT &__sol)  Function that activates the stop criterion.
    -void init () + +void init () - Procedure which allows to initialise the generation counter.
    + Procedure which allows to initialise all the stuff needed.

    Private Attributes

    unsigned int maxNumGen @@ -68,9 +69,9 @@ unsigned int template<class EOT>
    class moGenSolContinue< EOT > -One possible stop criterion for a solution-based heuristic. +One possible stopping criterion for a solution-based heuristic.

    -The stop criterion corresponds to a maximum number of iteration. +The stopping criterion corresponds to a maximum number of iteration.

    @@ -94,7 +95,7 @@ template<class EOT>

    -

    - -

    -
    -
    -template<class EOT>
    - - - - - - - - -
    void moGenSolContinue< EOT >::init (  )  [inline, virtual]
    -
    -
    - -

    -Procedure which allows to initialise the generation counter. -

    -It can also be used to reset the iteration counter. -

    -Implements moSolContinue< EOT >. -

    -Definition at line 54 of file moGenSolContinue.h. -

    -References moGenSolContinue< EOT >::numGen. +References moGenSolContinue< EOT >::maxNumGen, and moGenSolContinue< EOT >::numGen.


    The documentation for this class was generated from the following file: -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_h_c-members.html b/trunk/paradiseo-mo/doc/html/classmo_h_c-members.html index 8e5e253e6..a7ba62c3f 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_h_c-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_h_c-members.html @@ -48,7 +48,7 @@ ~eoFunctorBase()eoFunctorBase [virtual] ~eoOp()eoOp< EOType > [virtual] ~eoUF()eoUF< M::EOType &, bool > [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_h_c.html b/trunk/paradiseo-mo/doc/html/classmo_h_c.html index a1bc3b7c6..13221c464 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_h_c.html +++ b/trunk/paradiseo-mo/doc/html/classmo_h_c.html @@ -231,7 +231,7 @@ References moHC< M >::fu


    The documentation for this class was generated from the following file:
    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl-members.html b/trunk/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl-members.html index a4f1a3e32..b1e5d7d72 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl-members.html @@ -42,7 +42,7 @@ operator()(const EOT &__old_sol, EOT &__new_sol)moHCMoveLoopExpl< M > [inline, virtual] ~eoBF()eoBF< const M::EOType &, M::EOType &, void > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl.html b/trunk/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl.html index 8aa678cef..0cbb71cad 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl.html +++ b/trunk/paradiseo-mo/doc/html/classmo_h_c_move_loop_expl.html @@ -193,7 +193,7 @@ References moHC


    The documentation for this class was generated from the following file:
    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit-members.html b/trunk/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit-members.html index e909f3e3c..cb16268c7 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit-members.html @@ -40,7 +40,7 @@ operator()(const M &__move, const Fitness &__fit)moImprBestFitAspirCrit< M > [inline, virtual] ~eoBF()eoBF< const M &, const M::EOType::Fitness &, bool > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit.html b/trunk/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit.html index fbeb074e1..f1a936ee4 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit.html +++ b/trunk/paradiseo-mo/doc/html/classmo_impr_best_fit_aspir_crit.html @@ -131,7 +131,7 @@ References moImprBestFitAspirCrit.h -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_it_rand_next_move-members.html b/trunk/paradiseo-mo/doc/html/classmo_it_rand_next_move-members.html index 80a84b55f..597c7f9b8 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_it_rand_next_move-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_it_rand_next_move-members.html @@ -40,7 +40,7 @@ rand_movemoItRandNextMove< M > [private] ~eoBF()eoBF< M &, const M::EOType &, bool > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_it_rand_next_move.html b/trunk/paradiseo-mo/doc/html/classmo_it_rand_next_move.html index fbb1ed73b..91209b626 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_it_rand_next_move.html +++ b/trunk/paradiseo-mo/doc/html/classmo_it_rand_next_move.html @@ -173,7 +173,7 @@ References moItR


    The documentation for this class was generated from the following file:
    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_l_s_check_point-members.html b/trunk/paradiseo-mo/doc/html/classmo_l_s_check_point-members.html index d0503e705..1cf18f5c5 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_l_s_check_point-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_l_s_check_point-members.html @@ -38,7 +38,7 @@ eoBF< const M &, const M::EOType &, void >::operator()(const M &, const M::EOType &)=0eoBF< const M &, const M::EOType &, void > [pure virtual] ~eoBF()eoBF< const M &, const M::EOType &, void > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_l_s_check_point.html b/trunk/paradiseo-mo/doc/html/classmo_l_s_check_point.html index 81bbaba42..3a06e6765 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_l_s_check_point.html +++ b/trunk/paradiseo-mo/doc/html/classmo_l_s_check_point.html @@ -148,7 +148,7 @@ References moLSChe


    The documentation for this class was generated from the following file:
    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_linear_cooling_schedule-members.html b/trunk/paradiseo-mo/doc/html/classmo_linear_cooling_schedule-members.html index 826f6c3b3..f745b3c94 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_linear_cooling_schedule-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_linear_cooling_schedule-members.html @@ -38,7 +38,7 @@ thresholdmoLinearCoolingSchedule [private] ~eoFunctorBase()eoFunctorBase [virtual] ~eoUF()eoUF< double &, bool > [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_linear_cooling_schedule.html b/trunk/paradiseo-mo/doc/html/classmo_linear_cooling_schedule.html index 11bb16691..3044ae900 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_linear_cooling_schedule.html +++ b/trunk/paradiseo-mo/doc/html/classmo_linear_cooling_schedule.html @@ -146,7 +146,7 @@ References


    The documentation for this class was generated from the following file:
    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move-members.html b/trunk/paradiseo-mo/doc/html/classmo_move-members.html index 0922e3c76..83aa77a1b 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move-members.html @@ -36,7 +36,7 @@ operator()(EOT &)=0eoUF< EOT &, void > [pure virtual] ~eoFunctorBase()eoFunctorBase [virtual] ~eoUF()eoUF< EOT &, void > [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move.html b/trunk/paradiseo-mo/doc/html/classmo_move.html index 774bacf35..1663b3bed 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move.html @@ -61,7 +61,7 @@ A move transforms a solution to another close solution. It describes how a solut

    Definition at line 23 of file moMove.h.


    The documentation for this class was generated from the following file: -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move_expl-members.html b/trunk/paradiseo-mo/doc/html/classmo_move_expl-members.html index d295a7e6b..f64ed9524 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move_expl-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move_expl-members.html @@ -35,7 +35,7 @@ operator()(const M::EOType &, M::EOType &)=0eoBF< const M::EOType &, M::EOType &, void > [pure virtual] ~eoBF()eoBF< const M::EOType &, M::EOType &, void > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move_expl.html b/trunk/paradiseo-mo/doc/html/classmo_move_expl.html index 4048a2ac2..e59c6a6b1 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move_expl.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move_expl.html @@ -59,7 +59,7 @@ Only a description...See Definition at line 21 of file moMoveExpl.h.
    The documentation for this class was generated from the following file: -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move_incr_eval-members.html b/trunk/paradiseo-mo/doc/html/classmo_move_incr_eval-members.html index 2a50d55b5..7c2beb224 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move_incr_eval-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move_incr_eval-members.html @@ -35,7 +35,7 @@ operator()(const M &, const M::EOType &)=0eoBF< const M &, const M::EOType &, M::EOType::Fitness > [pure virtual] ~eoBF()eoBF< const M &, const M::EOType &, M::EOType::Fitness > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move_incr_eval.html b/trunk/paradiseo-mo/doc/html/classmo_move_incr_eval.html index c718ea0c3..7ce49e0ba 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move_incr_eval.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move_incr_eval.html @@ -56,7 +56,7 @@ From a move and a solution, it computes a new fitness that could be associated t

    Definition at line 24 of file moMoveIncrEval.h.


    The documentation for this class was generated from the following file: -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move_init-members.html b/trunk/paradiseo-mo/doc/html/classmo_move_init-members.html index ea141dfb3..a24fa41e9 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move_init-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move_init-members.html @@ -35,7 +35,7 @@ operator()(M &, const M::EOType &)=0eoBF< M &, const M::EOType &, void > [pure virtual] ~eoBF()eoBF< M &, const M::EOType &, void > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move_init.html b/trunk/paradiseo-mo/doc/html/classmo_move_init.html index d06901e1b..27f007776 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move_init.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move_init.html @@ -56,7 +56,7 @@ Class which allows to initiase a move. Only a description... An object that heri

    Definition at line 22 of file moMoveInit.h.


    The documentation for this class was generated from the following file: -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move_loop_expl-members.html b/trunk/paradiseo-mo/doc/html/classmo_move_loop_expl-members.html index 0ff5e9398..e772f30a0 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move_loop_expl-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move_loop_expl-members.html @@ -35,7 +35,7 @@ operator()(const M::EOType &, M::EOType &)=0eoBF< const M::EOType &, M::EOType &, void > [pure virtual] ~eoBF()eoBF< const M::EOType &, M::EOType &, void > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move_loop_expl.html b/trunk/paradiseo-mo/doc/html/classmo_move_loop_expl.html index eba8839e0..e459563e4 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move_loop_expl.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move_loop_expl.html @@ -59,7 +59,7 @@ Only a description... Definition at line 21 of file moMoveLoopExpl.h.
    The documentation for this class was generated from the following file: -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move_select-members.html b/trunk/paradiseo-mo/doc/html/classmo_move_select-members.html index 90df95364..7f8d55ec5 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move_select-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move_select-members.html @@ -38,7 +38,7 @@ update(const M &__move, const Fitness &__fit)=0moMoveSelect< M > [pure virtual] ~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_move_select.html b/trunk/paradiseo-mo/doc/html/classmo_move_select.html index a3267f9d4..ae815bc81 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_move_select.html +++ b/trunk/paradiseo-mo/doc/html/classmo_move_select.html @@ -146,7 +146,7 @@ Implemented in moMoveSelect.h -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_next_move-members.html b/trunk/paradiseo-mo/doc/html/classmo_next_move-members.html index c4de9b31d..13d1c4de0 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_next_move-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_next_move-members.html @@ -35,7 +35,7 @@ operator()(M &, const M::EOType &)=0eoBF< M &, const M::EOType &, bool > [pure virtual] ~eoBF()eoBF< M &, const M::EOType &, bool > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_next_move.html b/trunk/paradiseo-mo/doc/html/classmo_next_move.html index d2491174b..aea416f9c 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_next_move.html +++ b/trunk/paradiseo-mo/doc/html/classmo_next_move.html @@ -57,7 +57,7 @@ Useful for the explorer (for 22 of file moNextMove.h.
    The documentation for this class was generated from the following file: -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_no_aspir_crit-members.html b/trunk/paradiseo-mo/doc/html/classmo_no_aspir_crit-members.html index ebd48b22a..91fc5c920 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_no_aspir_crit-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_no_aspir_crit-members.html @@ -37,7 +37,7 @@ moAspirCrit::operator()(const M &, const M::EOType::Fitness &)=0eoBF< const M &, const M::EOType::Fitness &, bool > [pure virtual] ~eoBF()eoBF< const M &, const M::EOType::Fitness &, bool > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_no_aspir_crit.html b/trunk/paradiseo-mo/doc/html/classmo_no_aspir_crit.html index 4040f2fe9..4b49e981b 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_no_aspir_crit.html +++ b/trunk/paradiseo-mo/doc/html/classmo_no_aspir_crit.html @@ -135,7 +135,7 @@ Definition at line 4


    The documentation for this class was generated from the following file:
    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue-members.html b/trunk/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue-members.html new file mode 100644 index 000000000..71faa5cbc --- /dev/null +++ b/trunk/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue-members.html @@ -0,0 +1,50 @@ + + +PARADISEO-MO: Member List + + + + +
    + +
    + +

    moNoFitImprSolContinue< EOT > Member List

    This is the complete list of members for moNoFitImprSolContinue< EOT >, including all inherited members.

    + + + + + + + + + + + + +
    countermoNoFitImprSolContinue< EOT > [private]
    firstFitnessSavedmoNoFitImprSolContinue< EOT > [private]
    fitnessmoNoFitImprSolContinue< EOT > [private]
    Fitness typedefmoNoFitImprSolContinue< EOT >
    functor_category()eoUF< const EOT &, bool > [static]
    init()moNoFitImprSolContinue< EOT > [inline, virtual]
    maximizationmoNoFitImprSolContinue< EOT > [private]
    maxNumberOfIterationsWithoutImprovmentmoNoFitImprSolContinue< EOT > [private]
    moNoFitImprSolContinue(unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization=true)moNoFitImprSolContinue< EOT > [inline]
    operator()(const EOT &__sol)moNoFitImprSolContinue< EOT > [inline, virtual]
    ~eoFunctorBase()eoFunctorBase [virtual]
    ~eoUF()eoUF< const EOT &, bool > [virtual]


    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  + +doxygen 1.5.2
    + + diff --git a/trunk/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.html b/trunk/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.html new file mode 100644 index 000000000..163013b77 --- /dev/null +++ b/trunk/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.html @@ -0,0 +1,203 @@ + + +PARADISEO-MO: moNoFitImprSolContinue< EOT > Class Template Reference + + + + +
    + +
    + +

    moNoFitImprSolContinue< EOT > Class Template Reference

    One possible stop criterion for a solution-based heuristic. +More... +

    +#include <moNoFitImprSolContinue.h> +

    +

    Inheritance diagram for moNoFitImprSolContinue< EOT >: +

    + +moSolContinue< EOT > +eoUF< const EOT &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Types

    +typedef EOT::Fitness Fitness
     Alias for the fitness.

    Public Member Functions

     moNoFitImprSolContinue (unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization=true)
     Basic constructor.
    bool operator() (const EOT &__sol)
     Function that activates the stopping criterion.
    +void init ()
     Procedure which allows to initialise all the stuff needed.

    Private Attributes

    +unsigned int maxNumberOfIterationsWithoutImprovment
     Maximum number of iterations without improvment allowed.
    +bool firstFitnessSaved
     Flag that this is the first time that the fitness is used.
    +Fitness fitness
     Current Fitness.
    bool maximization
     Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value.
    +unsigned int counter
     The iteration couter.
    +

    Detailed Description

    +

    template<class EOT>
    + class moNoFitImprSolContinue< EOT >

    + +One possible stop criterion for a solution-based heuristic. +

    +The stop criterion corresponds to a maximum number of iterations without improvement. +

    + +

    +Definition at line 21 of file moNoFitImprSolContinue.h.


    Constructor & Destructor Documentation

    + +
    +
    +
    +template<class EOT>
    + + + + + + + + + + + + + + + + + + +
    moNoFitImprSolContinue< EOT >::moNoFitImprSolContinue (unsigned int  __maxNumberOfIterationWithoutImprovment,
    bool  __maximization = true 
    ) [inline]
    +
    +
    + +

    +Basic constructor. +

    +

    Parameters:
    + + + +
    __maxNumberOfIterationWithoutImprovment The number of iterations without fitness improvment to reach for stop.
    __maximization Indicate if the the aim is to maximize or minimize the fitness.
    +
    + +

    +Definition at line 34 of file moNoFitImprSolContinue.h. +

    +

    +


    Member Function Documentation

    + +
    +
    +
    +template<class EOT>
    + + + + + + + + + +
    bool moNoFitImprSolContinue< EOT >::operator() (const EOT &  __sol  )  [inline, virtual]
    +
    +
    + +

    +Function that activates the stopping criterion. +

    +Indicates if the fitness has not been improved since a given number of iterations (after a minimum of iterations).

    Parameters:
    + + +
    __sol the current solution.
    +
    +
    Returns:
    true or false.
    + +

    +Implements eoUF< const EOT &, bool >. +

    +Definition at line 45 of file moNoFitImprSolContinue.h. +

    +References moNoFitImprSolContinue< EOT >::counter, moNoFitImprSolContinue< EOT >::firstFitnessSaved, moNoFitImprSolContinue< EOT >::fitness, moNoFitImprSolContinue< EOT >::maximization, and moNoFitImprSolContinue< EOT >::maxNumberOfIterationsWithoutImprovment. +

    +

    +


    Member Data Documentation

    + +
    +
    +
    +template<class EOT>
    + + + + +
    bool moNoFitImprSolContinue< EOT >::maximization [private]
    +
    +
    + +

    +Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. +

    +It can be interesting to know this information because some solution-based metaheuristics can generate solutions wiht a fitness that is worse that the best known fitness (in this case, the counter is not reinitialized). +

    +Definition at line 96 of file moNoFitImprSolContinue.h. +

    +Referenced by moNoFitImprSolContinue< EOT >::operator()(). +

    +

    +


    The documentation for this class was generated from the following file: +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  + +doxygen 1.5.2
    + + diff --git a/trunk/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.png b/trunk/paradiseo-mo/doc/html/classmo_no_fit_impr_sol_continue.png new file mode 100644 index 0000000000000000000000000000000000000000..a727d6003d5dbd84b5aa3fd7373cd4b1d99caa0e GIT binary patch literal 959 zcmV;w13>(VP)9SgeOa+P7G&IQQKF2^lzGhzmamWC;c`JBH9J_Sp~N$R0BU=%tGXN7nonmvdSN z0g${1Ni`wsi;xgUWYR%+xqz0dZH&#C_+diRdm5F;=j|?us=5 z#8qc6rvD?C}bDplrKT| z`Oc`2*C3>2!C3QUbq!bqBTbM+L01*r8etXWi4f;*9s*hON<%93z3X031bFGNLem)H3D7Hj}VB;bxgg=ow+7WCZ#3~L{cP#XO~RU z6;_A`Kgc9}=!OtMX*2P1x%y1}aJkCA1y*LVR1<7!BD%}vlvmay^@eNuqcjXJ7mE8N z)g-R*>h9V<-15iAKwi@74;l*jwUARDiB5UAyCy_+;mbj8)LjZuh(Z*i5QQj2Aqr7l zSRtPRad9uGBi*pr27(Z4$h3X*iI}_ysUl<5nnuDF`YaMYQ=~@XGpT?{f8*_(QBq`W zm^N@a%v(Dv1Q+)x4-eD%g?v2Zlt-dd9`3FQQC;|QkQ;TELKLD9g(yTJ3Q>qcc0u6%V=~j>sm_K%E)KE$ z8xEl%teLEI1W5iC%8b^-`uGTPM#U=}L?dvl(J7Um=|>pUK-o zum+GNwB;$(@F`U?vj=(eqzbW_(?TY44*|$O1>)rb8!!Y4=^KtVrAuWqdCT8VFDCAkfxCbXQ-K*j2T=3?xWwY`RbQsjiOGYCA-gNzC$sKa9P=A)^Y~4W h1BODb2sz`C=s%9;`MA`{+4BGZ002ovPDHLkV1mL~o{<0m literal 0 HcmV?d00001 diff --git a/trunk/paradiseo-mo/doc/html/classmo_rand_impr_select-members.html b/trunk/paradiseo-mo/doc/html/classmo_rand_impr_select-members.html index 29b47e0db..4db1670aa 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_rand_impr_select-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_rand_impr_select-members.html @@ -41,7 +41,7 @@ vect_better_movesmoRandImprSelect< M > [private] ~eoBF()eoBF< M &, M::EOType::Fitness &, void > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_rand_impr_select.html b/trunk/paradiseo-mo/doc/html/classmo_rand_impr_select.html index 26fe7037e..e58c078c5 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_rand_impr_select.html +++ b/trunk/paradiseo-mo/doc/html/classmo_rand_impr_select.html @@ -220,7 +220,7 @@ References moRandImprSelect.h -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_rand_move-members.html b/trunk/paradiseo-mo/doc/html/classmo_rand_move-members.html index 83b3b5110..2eee170f5 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_rand_move-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_rand_move-members.html @@ -35,7 +35,7 @@ operator()(M &)=0eoUF< M &, void > [pure virtual] ~eoFunctorBase()eoFunctorBase [virtual] ~eoUF()eoUF< M &, void > [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_rand_move.html b/trunk/paradiseo-mo/doc/html/classmo_rand_move.html index cce34df23..8fa1fbf9a 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_rand_move.html +++ b/trunk/paradiseo-mo/doc/html/classmo_rand_move.html @@ -56,7 +56,7 @@ Only a description... An object that herits from this class needs to be designed

    Definition at line 21 of file moRandMove.h.


    The documentation for this class was generated from the following file: -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_s_a-members.html b/trunk/paradiseo-mo/doc/html/classmo_s_a-members.html index ccf4cade6..2db1bb7e1 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_s_a-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_s_a-members.html @@ -51,7 +51,7 @@ ~eoFunctorBase()eoFunctorBase [virtual] ~eoOp()eoOp< EOType > [virtual] ~eoUF()eoUF< M::EOType &, bool > [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_s_a.html b/trunk/paradiseo-mo/doc/html/classmo_s_a.html index 54f948215..e546553cf 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_s_a.html +++ b/trunk/paradiseo-mo/doc/html/classmo_s_a.html @@ -209,7 +209,7 @@ References moSA< M >::co


    The documentation for this class was generated from the following file:
    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_simple_move_tabu_list-members.html b/trunk/paradiseo-mo/doc/html/classmo_simple_move_tabu_list-members.html index 14f7fa72c..2dab49153 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_simple_move_tabu_list-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_simple_move_tabu_list-members.html @@ -44,7 +44,7 @@ update()moSimpleMoveTabuList< M > [inline, virtual] ~eoBF()eoBF< const M &, const M::EOType &, bool > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_simple_move_tabu_list.html b/trunk/paradiseo-mo/doc/html/classmo_simple_move_tabu_list.html index 9d4d0a917..69da5bf49 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_simple_move_tabu_list.html +++ b/trunk/paradiseo-mo/doc/html/classmo_simple_move_tabu_list.html @@ -276,7 +276,7 @@ Referenced by moSimpleMoveTabuList.h -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list-members.html b/trunk/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list-members.html index 3cee0a6fd..4eaf4b186 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list-members.html @@ -44,7 +44,7 @@ update()moSimpleSolutionTabuList< M > [inline, virtual] ~eoBF()eoBF< const M &, const M::EOType &, bool > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list.html b/trunk/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list.html index fba8d5fd1..c05e11682 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list.html +++ b/trunk/paradiseo-mo/doc/html/classmo_simple_solution_tabu_list.html @@ -309,7 +309,7 @@ Referenced by moSimpleSolutionTabuList.h -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_sol_continue-members.html b/trunk/paradiseo-mo/doc/html/classmo_sol_continue-members.html index 3e6ee3c2e..a918f8a3f 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_sol_continue-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_sol_continue-members.html @@ -36,7 +36,7 @@ operator()(const EOT &)=0eoUF< const EOT &, bool > [pure virtual] ~eoFunctorBase()eoFunctorBase [virtual] ~eoUF()eoUF< const EOT &, bool > [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_sol_continue.html b/trunk/paradiseo-mo/doc/html/classmo_sol_continue.html index 8381967c5..1067fc725 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_sol_continue.html +++ b/trunk/paradiseo-mo/doc/html/classmo_sol_continue.html @@ -30,7 +30,7 @@
  • Class Members
  • -

    moSolContinue< EOT > Class Template Reference

    Class that describes a stop criterion for a solution-based heuristic. +

    moSolContinue< EOT > Class Template Reference

    Class that describes a stopping criterion for a solution-based heuristic. More...

    #include <moSolContinue.h> @@ -38,22 +38,25 @@

    Inheritance diagram for moSolContinue< EOT >:

    -eoUF< const EOT &, bool > -eoFunctorBase -moGenSolContinue< EOT > +eoUF< const EOT &, bool > +eoFunctorBase +moFitSolContinue< EOT > +moGenSolContinue< EOT > +moNoFitImprSolContinue< EOT > +moSteadyFitSolContinue< EOT > List of all members. - +

    Public Member Functions

    virtual void init ()=0
     Procedure which initialises all that the stop criterion needs.
     Procedure which initialises all that the stopping criterion needs.

    Detailed Description

    template<class EOT>
    class moSolContinue< EOT >

    -Class that describes a stop criterion for a solution-based heuristic. +Class that describes a stopping criterion for a solution-based heuristic.

    It allows to add an initialisation procedure to an object that is a unary function (eoUF).

    @@ -78,16 +81,16 @@ template<class EOT>

    -Procedure which initialises all that the stop criterion needs. +Procedure which initialises all that the stopping criterion needs.

    Generally, it allocates some data structures or initialises some counters.

    -Implemented in moGenSolContinue< EOT >. +Implemented in moFitSolContinue< EOT >, moGenSolContinue< EOT >, moNoFitImprSolContinue< EOT >, and moSteadyFitSolContinue< EOT >.


    The documentation for this class was generated from the following file: -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_sol_continue.png b/trunk/paradiseo-mo/doc/html/classmo_sol_continue.png index 345d1b66d6bf7bd456e48737ef14bf095b031c61..71ed9397db73dede548c264e7c7df0751dd998e3 100644 GIT binary patch literal 2035 zcmcgteNdA}9)3v#C8DHwxr!KSuYL?4Mbngsyh23;q{R@0QWX?1CNYwN6@4)VLeK)W zd}%>I$xFs55~+Ly32`Wx1TY{Fl1MZ_0_7t@6q5!BRv2k>@#d~~ow>hmIydwDcAwpO zcIWroXLt4ri5Rv9wE+bHz?$&=`wjsB(%;6VE0DG}kiD8>>(-MZqC>1!tBqQ%QXVhi zs*U|4q*5uX!}`oNv^#f*7zON^9-;!k$}8dff}$^QO>k1O&L160{>$@}VsKMyR$lCQ zJ&l7Hwz|~kY(Lo0c;GYF(j{WWlj;`}PDLJ%Lw`t5KPN958~py5eyqE1SOEGZCt1elGfrueOeYG#X4(%3q*x-GCeP6%k9;|wQAq)0G zn*`tW1c}JU7>V&)YvBunJ$F|@H*NbkzTB4gEyVCQN7T7P^?QYQ$2)_H0pjj^bDn4O zjvc5^c%`OslW7G9pl<^TmzHW^J3j~L;?Xj3o~U!T9)AUtZcwGd});L=^Qh3#NL4iP}Cbj!o$ve$b5f z)dqmq-G}Ja$3ga2Cu1A164psC$z4Q}0a3ZzyeMPxwN1n6lkH3cg1{2Z9;c3$7c#n( z=CpZc_u{#Sot36^;!^FN-+aRbYPl;k%R<*9culXIj0=AN`^0JQe;zQ0d`6~!d%xN- zMJxyC$DIG86K^e-?wq97hqZP|%5>=9eAIs=DxZ6D`++7ys~JtzW#}@r3o@TB`LC55 z5xd9F%p`kHUzUs-h@d(%&vai;vXx7nNxmZ&G9LQ{V?K_?$w~HW zK6k=L2L)p~ojzBQWIO)nX?1FlBz{U##+!34vgoJyzcQCx^_YbQ3HPx4m3|oo<#?XD zb0WcTK7s$v5Zw;iu;>GEaT?~!0>?DdlLQM{jbx1mze}EG<8x)v2i5%^&<6a-umgU1 zc410BlHx<9bZ1L$b3-Q0B_fY+KzWOXEcR7ggIykWsWfFAP;DMq{3#`O)Qh@yDrP5~ zW?98*XE5%wm<&_NoffYD)Gq@B`(c?E-Iw~t&kI!8_uR@&-Fog>S;$4-h%ZZH>m1e3 zBQV+}8Dp?EuO=+~puV;uZgUa6+Dr&MnZXPgUYyzoQaB|P4;pHHXzI^(1D^(MRCb@& z`;E=+E_Bh0LEDQLq56wm;`<3Vntj|iIc2WK2BaOyh3;O_4b_D99E1yYswel8AKK|p z;f%eC$>#)J53(P99?zy9#k?49)R!jlMV3%{EI84V*z_F|#%15bZp#%h z&uVV*j)S=U`CGIeL4%NcEgTG{To*NxQ>)q(G>SRjQUx>Tr`@ScRV`tovl8?OJ^WPk z!}bT$#@<4&u%iA-(|8-cEKvj*JBXjr!=PSuno*eFMBA2fwwji`^WFCa;jP|fqRq?7 zwuwg-uiCtMg3d^&Yw8Y#!;FX}wmhx;P%?JyH6zva{H`A22u%{D?I={HL{Ao=w|tnD z#-DX##|YjaE*5m#o7%po1JKb6hgFW`9RhVn=Ox7v|FOpk$8r3OLjvD^h`s_k%7Gmm tgqHcpxi+HSdHn;Tz+$gYKN4g`O51}U_P#i?*7idK;UUC*^?MU8{T*$V%+3G+ delta 877 zcmV-z1Cspn50M8UiBL{Q4GJ0x0000DNk~Le000230002M1Oos70EFxQ^pPPme*-5; zL_t(|ob8)kZsR}*fITn!Y`6h)g4Omykt*f>N7w=8-(x3kI*BYn)z)E{&jh17#jt!$ zk-y77KSPZBQ7!;fuPAHrMQ*#FvX-`{&v7aE8N5QFAQ7?#kkyFH6$7z3#bsF7ow!J< z;WL5wt1oHK^9NiIpVKLni!r`If9p?k!`9m0maB1K&#AetPx44!ysA7>8W_-1qk=zP^cXl@FK#yc^$mH6=GU`JizC zU-CD_7krG*UOv1adj;kff4QgYldp<#ugaZupP%))vx!{)$6U9llGj`@9N8^uvOQ9D=0}aM;sK6txJLd8R7;zu@o4K;1<3bzXDj$yH%U7H8SN$OEFMy9*-_n~f3F6*uCyVyn#_!cRQk8ZZ8cpNQo|*7B=rl$rZbF(YR}cQxEHsaV>_{H7}{f_tvc zg6fzf9dQ9Db)R){fE{ig-8|&_)DbrB&TF||r(dz*YFk>vL!~ahRX%Lv%N=Mum6@8( za!VPcSx!u&oLJ=pv|VXUKK#BI*SPQDo^CCB?mqt?C$f!r7&{c500000NkvXXu0mjf DBwDtp diff --git a/trunk/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue-members.html b/trunk/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue-members.html new file mode 100644 index 000000000..01f95edce --- /dev/null +++ b/trunk/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue-members.html @@ -0,0 +1,52 @@ + + +PARADISEO-MO: Member List + + + + +
    + +
    + +

    moSteadyFitSolContinue< EOT > Member List

    This is the complete list of members for moSteadyFitSolContinue< EOT >, including all inherited members.

    + + + + + + + + + + + + + + +
    countermoSteadyFitSolContinue< EOT > [private]
    firstFitnessSavedmoSteadyFitSolContinue< EOT > [private]
    Fitness typedefmoSteadyFitSolContinue< EOT >
    fitnessmoSteadyFitSolContinue< EOT > [private]
    functor_category()eoUF< const EOT &, bool > [static]
    init()moSteadyFitSolContinue< EOT > [inline, virtual]
    maximizationmoSteadyFitSolContinue< EOT > [private]
    maxNumberOfIterationsmoSteadyFitSolContinue< EOT > [private]
    maxNumberOfIterationsReachedmoSteadyFitSolContinue< EOT > [private]
    maxNumberOfIterationsWithoutImprovmentmoSteadyFitSolContinue< EOT > [private]
    moSteadyFitSolContinue(unsigned int __maxNumberOfIterations, unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization=true)moSteadyFitSolContinue< EOT > [inline]
    operator()(const EOT &__sol)moSteadyFitSolContinue< EOT > [inline, virtual]
    ~eoFunctorBase()eoFunctorBase [virtual]
    ~eoUF()eoUF< const EOT &, bool > [virtual]


    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  + +doxygen 1.5.2
    + + diff --git a/trunk/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.html b/trunk/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.html new file mode 100644 index 000000000..707be4486 --- /dev/null +++ b/trunk/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.html @@ -0,0 +1,219 @@ + + +PARADISEO-MO: moSteadyFitSolContinue< EOT > Class Template Reference + + + + +
    + +
    + +

    moSteadyFitSolContinue< EOT > Class Template Reference

    One possible stopping criterion for a solution-based heuristic. +More... +

    +#include <moSteadyFitSolContinue.h> +

    +

    Inheritance diagram for moSteadyFitSolContinue< EOT >: +

    + +moSolContinue< EOT > +eoUF< const EOT &, bool > +eoFunctorBase + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Types

    +typedef EOT::Fitness Fitness
     Alias for the fitness.

    Public Member Functions

     moSteadyFitSolContinue (unsigned int __maxNumberOfIterations, unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization=true)
     Basic constructor.
    bool operator() (const EOT &__sol)
     Function that activates the stopping criterion.
    +void init ()
     Procedure which allows to initialise the stuff needed.

    Private Attributes

    +unsigned int maxNumberOfIterations
     Maximum number of iterations before considering the fitness.
    +unsigned int maxNumberOfIterationsWithoutImprovment
     Maximum number of iterations without improvment allowed.
    +bool maxNumberOfIterationsReached
     Flag that indicates that the maxNumberIteration have been reached.
    +bool firstFitnessSaved
     Flag that this is the first time that the fitness is used.
    +Fitness fitness
     Current Fitness.
    bool maximization
     Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value.
    +unsigned int counter
     The iteration couter.
    +

    Detailed Description

    +

    template<class EOT>
    + class moSteadyFitSolContinue< EOT >

    + +One possible stopping criterion for a solution-based heuristic. +

    +The stop criterion corresponds to a maximum number of iterations without improvement (after a minimum number of iterations). +

    + +

    +Definition at line 21 of file moSteadyFitSolContinue.h.


    Constructor & Destructor Documentation

    + +
    +
    +
    +template<class EOT>
    + + + + + + + + + + + + + + + + + + + + + + + + +
    moSteadyFitSolContinue< EOT >::moSteadyFitSolContinue (unsigned int  __maxNumberOfIterations,
    unsigned int  __maxNumberOfIterationWithoutImprovment,
    bool  __maximization = true 
    ) [inline]
    +
    +
    + +

    +Basic constructor. +

    +

    Parameters:
    + + + + +
    __maxNumberOfIterations The number of iterations to reach before looking for the fitness.
    __maxNumberOfIterationWithoutImprovment The number of iterations without fitness improvment to reach for stop.
    __maximization Indicate if the the aim is to maximize or minimize the fitness.
    +
    + +

    +Definition at line 35 of file moSteadyFitSolContinue.h. +

    +

    +


    Member Function Documentation

    + +
    +
    +
    +template<class EOT>
    + + + + + + + + + +
    bool moSteadyFitSolContinue< EOT >::operator() (const EOT &  __sol  )  [inline, virtual]
    +
    +
    + +

    +Function that activates the stopping criterion. +

    +Indicates if the fitness has not been improved since a number of iterations (after a minimum of iterations).

    +

    Parameters:
    + + +
    __sol the current solution.
    +
    +
    Returns:
    true or false.
    + +

    +Implements eoUF< const EOT &, bool >. +

    +Definition at line 47 of file moSteadyFitSolContinue.h. +

    +References moSteadyFitSolContinue< EOT >::counter, moSteadyFitSolContinue< EOT >::firstFitnessSaved, moSteadyFitSolContinue< EOT >::fitness, moSteadyFitSolContinue< EOT >::maximization, moSteadyFitSolContinue< EOT >::maxNumberOfIterations, moSteadyFitSolContinue< EOT >::maxNumberOfIterationsReached, and moSteadyFitSolContinue< EOT >::maxNumberOfIterationsWithoutImprovment. +

    +

    +


    Member Data Documentation

    + +
    +
    +
    +template<class EOT>
    + + + + +
    bool moSteadyFitSolContinue< EOT >::maximization [private]
    +
    +
    + +

    +Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. +

    +It can be interesting to know this information because some solution-based metaheuristics can generate solution with a fitness that is worse that the best known fitness (in this case, the counter is not reinitialized). +

    +Definition at line 114 of file moSteadyFitSolContinue.h. +

    +Referenced by moSteadyFitSolContinue< EOT >::operator()(). +

    +

    +


    The documentation for this class was generated from the following file: +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  + +doxygen 1.5.2
    + + diff --git a/trunk/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.png b/trunk/paradiseo-mo/doc/html/classmo_steady_fit_sol_continue.png new file mode 100644 index 0000000000000000000000000000000000000000..702e690a244f9d9eaebebcd697821d21c1abe375 GIT binary patch literal 967 zcmV;&133JNP)Xk5G^V2#krnaXg7Db~b|*Ssy}j#{S34pVyD&cX;*qrHs#G zcmO93U9q0YXb)Yny0!0dMqIxKWcc{!AX%aznLRSn41Ipgz`(&}2BfK{51*|0&`mSi z#{iHxVsJf@^*KfiBl74NxL1(&s_luRd4xFwKmCK+AE*bXj(fI>wJ^%d0v zoO`mb&Kb&3#^*Awxc50czK);rmW=Pew_tpIf8T;}o4!(pGL)eVWhg@#%2391T=9%^ zm*+uc{G5T(*M@kPjDWHgB>4(eD-hq62zwYCD{}l#(yk+ScZ5+yH_2dQ65AZgZOrj2 z1~jtWm{G+;W`Hm{)(uyTvR7IBW%ml>Vt9A`TLL{Szx#$I`@?}yIFdj+9hAGsdD3i7VL zdSX1Ih3_0&m+YC02SXYEBjbvDpDXU+-jbpE?prZ#(^tw+hBB0)3}q-o8OoTBE1q%g z@;s=F6Bzt@Zjz*mb~I3BQ43Bku=PggHbV%8RXiF5@w||2iD{rA`ygJfEb<^~ydLl+ zUV7_QFnkDdC65^{zqQF~A}=&+yj3^Mietm@>r_WtxGND_M)@i;NI8vVka?^jGe!wJ zV#LT*0dDqc1=(i!IRho@5#vZ6g@I>x3~1{i`f7hYSm(vQ!scg8iwiWA^NJThvCNNzKUnsyqpvTa_0fHU1C@+gy^e$eXROwbBwNl<73V^ p=XYkxI46yp{_ZMc&bZ*-=O5f~eoFunctorBase()eoFunctorBase [virtual] ~eoOp()eoOp< EOType > [virtual] ~eoUF()eoUF< M::EOType &, bool > [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_t_s.html b/trunk/paradiseo-mo/doc/html/classmo_t_s.html index 805893b65..85b5fbc89 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_t_s.html +++ b/trunk/paradiseo-mo/doc/html/classmo_t_s.html @@ -256,7 +256,7 @@ References moTS< M >::co


    The documentation for this class was generated from the following file:
    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl-members.html b/trunk/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl-members.html index f2ed58970..7f02a6f01 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl-members.html @@ -44,7 +44,7 @@ tabu_listmoTSMoveLoopExpl< M > [private] ~eoBF()eoBF< const M::EOType &, M::EOType &, void > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl.html b/trunk/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl.html index aba10a4f5..29f89c6ad 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl.html +++ b/trunk/paradiseo-mo/doc/html/classmo_t_s_move_loop_expl.html @@ -211,7 +211,7 @@ References moTS


    The documentation for this class was generated from the following file:
    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_tabu_list-members.html b/trunk/paradiseo-mo/doc/html/classmo_tabu_list-members.html index b954223fd..afc66426a 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_tabu_list-members.html +++ b/trunk/paradiseo-mo/doc/html/classmo_tabu_list-members.html @@ -39,7 +39,7 @@ update()=0moTabuList< M > [pure virtual] ~eoBF()eoBF< const M &, const M::EOType &, bool > [virtual] ~eoFunctorBase()eoFunctorBase [virtual] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/classmo_tabu_list.html b/trunk/paradiseo-mo/doc/html/classmo_tabu_list.html index 5be13c44d..53bec1f90 100644 --- a/trunk/paradiseo-mo/doc/html/classmo_tabu_list.html +++ b/trunk/paradiseo-mo/doc/html/classmo_tabu_list.html @@ -166,7 +166,7 @@ Implemented in moTabuList.h -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/files.html b/trunk/paradiseo-mo/doc/html/files.html index 980c498ef..08e577aa3 100644 --- a/trunk/paradiseo-mo/doc/html/files.html +++ b/trunk/paradiseo-mo/doc/html/files.html @@ -31,6 +31,7 @@ moCoolingSchedule.h [code] moExponentialCoolingSchedule.h [code] moFirstImprSelect.h [code] + moFitSolContinue.h [code] moGenSolContinue.h [code] moHC.h [code] moHCMoveLoopExpl.h [code] @@ -46,17 +47,19 @@ moMoveSelect.h [code] moNextMove.h [code] moNoAspirCrit.h [code] + moNoFitImprSolContinue.h [code] moRandImprSelect.h [code] moRandMove.h [code] moSA.h [code] moSimpleMoveTabuList.h [code] moSimpleSolutionTabuList.h [code] moSolContinue.h [code] + moSteadyFitSolContinue.h [code] moTabuList.h [code] moTS.h [code] moTSMoveLoopExpl.h [code] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/functions.html b/trunk/paradiseo-mo/doc/html/functions.html index 73c5af995..16b2e9831 100644 --- a/trunk/paradiseo-mo/doc/html/functions.html +++ b/trunk/paradiseo-mo/doc/html/functions.html @@ -88,6 +88,9 @@ Here is a list of all documented class members with links to the class documenta , moTS< M >
  • cool_sched : moSA< M > +
  • counter +: moNoFitImprSolContinue< EOT > +, moSteadyFitSolContinue< EOT >
  • currentSize : moSimpleMoveTabuList< M > , moSimpleSolutionTabuList< M > @@ -112,23 +115,40 @@ Here is a list of all documented class members with links to the class documenta
  • first_time : moBestImprSelect< M > , moImprBestFitAspirCrit< M > +
  • firstFitnessSaved +: moSteadyFitSolContinue< EOT > +, moNoFitImprSolContinue< EOT >
  • Fitness : moTSMoveLoopExpl< M > -, moTS< M > -, moBestImprSelect< M > -, moSA< M > +
  • fitness +: moSteadyFitSolContinue< EOT > +
  • Fitness +: moFitSolContinue< EOT > +, moSteadyFitSolContinue< EOT > +, moHCMoveLoopExpl< M > , moRandImprSelect< M > +, moSA< M > +
  • fitness +: moNoFitImprSolContinue< EOT > +
  • Fitness +: moImprBestFitAspirCrit< M > +, moNoFitImprSolContinue< EOT > +, moBestImprSelect< M > +
  • fitness +: moFitSolContinue< EOT > +
  • Fitness +: moTS< M > , moHC< M > , moMoveSelect< M > , moFirstImprSelect< M > -, moImprBestFitAspirCrit< M > -, moHCMoveLoopExpl< M >
  • full_eval : moHC< M > , moTS< M > , moSA< M >
  • func : moLSCheckPoint< M > +
  • moFitSolContinue() +: moFitSolContinue< EOT >

    - g -

    - t -

    • moTS() @@ -275,7 +316,7 @@ Here is a list of all documented class members with links to the class documenta
    • vect_better_moves : moRandImprSelect< M >
    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/functions_func.html b/trunk/paradiseo-mo/doc/html/functions_func.html index 68da73fdb..253a7d06b 100644 --- a/trunk/paradiseo-mo/doc/html/functions_func.html +++ b/trunk/paradiseo-mo/doc/html/functions_func.html @@ -42,10 +42,12 @@ +

    - f -

    - g -

    - t -

    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/functions_type.html b/trunk/paradiseo-mo/doc/html/functions_type.html index e849e52f9..c1bb9fb02 100644 --- a/trunk/paradiseo-mo/doc/html/functions_type.html +++ b/trunk/paradiseo-mo/doc/html/functions_type.html @@ -57,15 +57,18 @@ : moBestImprSelect< M > , moTSMoveLoopExpl< M > , moTS< M > +, moSteadyFitSolContinue< EOT > , moSA< M > , moRandImprSelect< M > +, moNoFitImprSolContinue< EOT > , moMoveSelect< M > , moImprBestFitAspirCrit< M > , moHCMoveLoopExpl< M > , moHC< M > +, moFitSolContinue< EOT > , moFirstImprSelect< M > -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/functions_vars.html b/trunk/paradiseo-mo/doc/html/functions_vars.html index d026828c5..e55b17673 100644 --- a/trunk/paradiseo-mo/doc/html/functions_vars.html +++ b/trunk/paradiseo-mo/doc/html/functions_vars.html @@ -76,6 +76,9 @@ , moTS< M >
  • cool_sched : moSA< M > +
  • counter +: moNoFitImprSolContinue< EOT > +, moSteadyFitSolContinue< EOT >
  • currentSize : moSimpleMoveTabuList< M > , moSimpleSolutionTabuList< M > @@ -84,10 +87,17 @@
  • first_time : moBestImprSelect< M > , moImprBestFitAspirCrit< M > +
  • firstFitnessSaved +: moSteadyFitSolContinue< EOT > +, moNoFitImprSolContinue< EOT > +
  • fitness +: moFitSolContinue< EOT > +, moSteadyFitSolContinue< EOT > +, moNoFitImprSolContinue< EOT >
  • full_eval -: moSA< M > +: moTS< M > +, moSA< M > , moHC< M > -, moTS< M >
  • func : moLSCheckPoint< M > @@ -105,6 +115,17 @@

    - m -

    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/hierarchy.html b/trunk/paradiseo-mo/doc/html/hierarchy.html index 5f0e69005..7f3147364 100644 --- a/trunk/paradiseo-mo/doc/html/hierarchy.html +++ b/trunk/paradiseo-mo/doc/html/hierarchy.html @@ -93,7 +93,10 @@ [external]
  • eoUF< double &, bool > @@ -139,7 +142,7 @@ [external]
  • eoMonOp< M::EOType > [external] -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/index_8h-source.html b/trunk/paradiseo-mo/doc/html/index_8h-source.html index 94c4646f2..2e3b51eae 100644 --- a/trunk/paradiseo-mo/doc/html/index_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/index_8h-source.html @@ -28,7 +28,7 @@ 00024 // c-file-style: "Stroustrup" 00025 // fill-column: 80 00026 // End: -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/main.html b/trunk/paradiseo-mo/doc/html/main.html index 2feabe590..992ab8b21 100644 --- a/trunk/paradiseo-mo/doc/html/main.html +++ b/trunk/paradiseo-mo/doc/html/main.html @@ -33,7 +33,7 @@ tutorial install The installation procedure of the package is detailed in the README file in the top-directory of the source-tree.

    design

    -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_8h-source.html index 425a4b266..7e4255550 100644 --- a/trunk/paradiseo-mo/doc/html/mo_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_8h-source.html @@ -42,33 +42,36 @@ 00018 #include "moCoolingSchedule.h" 00019 #include "moExponentialCoolingSchedule.h" 00020 #include "moFirstImprSelect.h" -00021 #include "moGenSolContinue.h" -00022 #include "moHC.h" -00023 #include "moHCMoveLoopExpl.h" -00024 #include "moImprBestFitAspirCrit.h" -00025 #include "moItRandNextMove.h" -00026 #include "moLinearCoolingSchedule.h" -00027 #include "moLSCheckPoint.h" -00028 #include "moMoveExpl.h" -00029 #include "moMove.h" -00030 #include "moMoveIncrEval.h" -00031 #include "moMoveInit.h" -00032 #include "moMoveLoopExpl.h" -00033 #include "moMoveSelect.h" -00034 #include "moNextMove.h" -00035 #include "moNoAspirCrit.h" -00036 #include "moRandImprSelect.h" -00037 #include "moRandMove.h" -00038 #include "moSA.h" -00039 #include "moSimpleMoveTabuList.h" -00040 #include "moSimpleSolutionTabuList.h" -00041 #include "moSolContinue.h" -00042 #include "moTabuList.h" -00043 #include "moTS.h" -00044 #include "moTSMoveLoopExpl.h" -00045 -00046 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +00021 #include "moFitSolContinue.h" +00022 #include "moGenSolContinue.h" +00023 #include "moHC.h" +00024 #include "moHCMoveLoopExpl.h" +00025 #include "moImprBestFitAspirCrit.h" +00026 #include "moItRandNextMove.h" +00027 #include "moLinearCoolingSchedule.h" +00028 #include "moLSCheckPoint.h" +00029 #include "moMoveExpl.h" +00030 #include "moMove.h" +00031 #include "moMoveIncrEval.h" +00032 #include "moMoveInit.h" +00033 #include "moMoveLoopExpl.h" +00034 #include "moMoveSelect.h" +00035 #include "moNextMove.h" +00036 #include "moNoAspirCrit.h" +00037 #include "moNoFitImprSolContinue.h" +00038 #include "moRandImprSelect.h" +00039 #include "moRandMove.h" +00040 #include "moSA.h" +00041 #include "moSimpleMoveTabuList.h" +00042 #include "moSimpleSolutionTabuList.h" +00043 #include "moSolContinue.h" +00044 #include "moSteadyFitSolContinue.h" +00045 #include "moTabuList.h" +00046 #include "moTS.h" +00047 #include "moTSMoveLoopExpl.h" +00048 +00049 #endif +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_algo_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_algo_8h-source.html index 427264468..dfc6d66a4 100644 --- a/trunk/paradiseo-mo/doc/html/mo_algo_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_algo_8h-source.html @@ -45,7 +45,7 @@ 00024 }; 00025 00026 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_aspir_crit_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_aspir_crit_8h-source.html index b64b658bf..b124eecc9 100644 --- a/trunk/paradiseo-mo/doc/html/mo_aspir_crit_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_aspir_crit_8h-source.html @@ -52,7 +52,7 @@ 00035 }; 00036 00037 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_best_impr_select_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_best_impr_select_8h-source.html index 708582241..03083b08d 100644 --- a/trunk/paradiseo-mo/doc/html/mo_best_impr_select_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_best_impr_select_8h-source.html @@ -93,7 +93,7 @@ 00091 }; 00092 00093 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_cooling_schedule_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_cooling_schedule_8h-source.html index 9840b9fdb..b3e9d2a26 100644 --- a/trunk/paradiseo-mo/doc/html/mo_cooling_schedule_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_cooling_schedule_8h-source.html @@ -45,7 +45,7 @@ 00025 }; 00026 00027 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_exponential_cooling_schedule_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_exponential_cooling_schedule_8h-source.html index e37f3b8e7..51e6aef53 100644 --- a/trunk/paradiseo-mo/doc/html/mo_exponential_cooling_schedule_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_exponential_cooling_schedule_8h-source.html @@ -61,7 +61,7 @@ 00053 }; 00054 00055 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_first_impr_select_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_first_impr_select_8h-source.html index a64e0c516..cc0e9773e 100644 --- a/trunk/paradiseo-mo/doc/html/mo_first_impr_select_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_first_impr_select_8h-source.html @@ -100,7 +100,7 @@ 00102 }; 00103 00104 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_fit_sol_continue_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_fit_sol_continue_8h-source.html new file mode 100644 index 000000000..2da46c9fc --- /dev/null +++ b/trunk/paradiseo-mo/doc/html/mo_fit_sol_continue_8h-source.html @@ -0,0 +1,84 @@ + + +PARADISEO-MO: moFitSolContinue.h Source File + + + + +
    + +
    +

    moFitSolContinue.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "moFitSolContinue.h"
    +00004 
    +00005 // (c) OPAC Team (LIFL), Dolphin project (INRIA), 2003-2007
    +00006 
    +00007 /* LICENCE TEXT
    +00008    
    +00009    Contact: paradiseo-help@lists.gforge.inria.fr
    +00010 */
    +00011 
    +00012 #ifndef __moFitSolContinue_h
    +00013 #define __moFitSolContinue_h
    +00014 
    +00015 #include "moSolContinue.h"
    +00016 
    +00018 
    +00021 template < class EOT > class moFitSolContinue:public moSolContinue < EOT >
    +00022 {
    +00023 
    +00024 public:
    +00025 
    +00027   typedef typename EOT::Fitness Fitness;
    +00028 
    +00030 
    +00034   moFitSolContinue (Fitness __fitness, bool __maximization=true): fitness (__fitness), maximization(__maximization)
    +00035   {}
    +00036 
    +00038 
    +00044   bool operator   () (const EOT & __sol)
    +00045   {
    +00046     if(__sol.invalid())
    +00047       {
    +00048         return true;
    +00049       }
    +00050 
    +00051     if(maximization)
    +00052       {
    +00053         return __sol.fitness()<fitness;
    +00054       }
    +00055     return __sol.fitness()>fitness;
    +00056   }
    +00057 
    +00059   void init ()
    +00060   {}
    +00061 
    +00062 private:
    +00063 
    +00065   Fitness fitness;
    +00066 
    +00068 
    +00072   bool maximization;
    +00073 };
    +00074 
    +00075 #endif
    +

    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  + +doxygen 1.5.2
    + + diff --git a/trunk/paradiseo-mo/doc/html/mo_gen_sol_continue_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_gen_sol_continue_8h-source.html index fa7c02efa..60baaa8d0 100644 --- a/trunk/paradiseo-mo/doc/html/mo_gen_sol_continue_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_gen_sol_continue_8h-source.html @@ -24,7 +24,7 @@

    moGenSolContinue.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
     00002 
    -00003 // "eoGenSolContinue.h"
    +00003 // "moGenSolContinue.h"
     00004 
     00005 // (c) OPAC Team, LIFL, 2003-2006
     00006 
    @@ -39,40 +39,33 @@
     00015 #include "moSolContinue.h"
     00016 
     00018 
    -00021 template < class EOT > class moGenSolContinue:public moSolContinue < EOT >
    +00021 template < class EOT > class moGenSolContinue:public moSolContinue < EOT >
     00022 {
     00023 
     00024 public:
     00025 
     00027 
    -00030   moGenSolContinue (unsigned int __maxNumGen):maxNumGen (__maxNumGen), numGen (0)
    -00031   {
    +00030   moGenSolContinue (unsigned int __maxNumGen):maxNumGen (__maxNumGen), numGen (0)
    +00031   {}
     00032 
    -00033   }
     00034 
    -00036 
    -00044   bool operator   () (const EOT & __sol)
    -00045   {
    +00042   bool operator () (const EOT & __sol)
    +00043   {
    +00044     return (++numGen < maxNumGen);
    +00045   }
     00046 
    -00047     return (++numGen < maxNumGen);
    -00048   }
    -00049 
    -00051 
    -00054   void init ()
    -00055   {
    -00056 
    -00057     numGen = 0;
    -00058   }
    +00048   void init ()
    +00049   {}
    +00050 
    +00051 private:
    +00052 
    +00054   unsigned int maxNumGen;
    +00055 
    +00057   unsigned int numGen;
    +00058 };
     00059 
    -00060 private:
    -00061 
    -00063   unsigned int maxNumGen;
    -00064 
    -00066   unsigned int numGen;
    -00067 };
    -00068 
    -00069 #endif
    -

    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +00060 #endif +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_h_c_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_h_c_8h-source.html index e27490ad1..09aabbfa3 100644 --- a/trunk/paradiseo-mo/doc/html/mo_h_c_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_h_c_8h-source.html @@ -126,7 +126,7 @@ 00131 }; 00132 00133 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_h_c_move_loop_expl_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_h_c_move_loop_expl_8h-source.html index 2bb7dea2c..1979eeda8 100644 --- a/trunk/paradiseo-mo/doc/html/mo_h_c_move_loop_expl_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_h_c_move_loop_expl_8h-source.html @@ -109,7 +109,7 @@ 00106 }; 00107 00108 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_impr_best_fit_aspir_crit_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_impr_best_fit_aspir_crit_8h-source.html index 7c45e8c0d..55778f2b7 100644 --- a/trunk/paradiseo-mo/doc/html/mo_impr_best_fit_aspir_crit_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_impr_best_fit_aspir_crit_8h-source.html @@ -90,7 +90,7 @@ 00082 }; 00083 00084 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_it_rand_next_move_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_it_rand_next_move_8h-source.html index e9dcdd82a..4039c86a5 100644 --- a/trunk/paradiseo-mo/doc/html/mo_it_rand_next_move_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_it_rand_next_move_8h-source.html @@ -86,7 +86,7 @@ 00082 }; 00083 00084 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_l_s_check_point_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_l_s_check_point_8h-source.html index 87fe11bc9..be03ad852 100644 --- a/trunk/paradiseo-mo/doc/html/mo_l_s_check_point_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_l_s_check_point_8h-source.html @@ -74,7 +74,7 @@ 00064 }; 00065 00066 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_linear_cooling_schedule_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_linear_cooling_schedule_8h-source.html index b4350f947..b1d9fb522 100644 --- a/trunk/paradiseo-mo/doc/html/mo_linear_cooling_schedule_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_linear_cooling_schedule_8h-source.html @@ -61,7 +61,7 @@ 00053 }; 00054 00055 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_move_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_move_8h-source.html index d7cf4fe67..e880ab671 100644 --- a/trunk/paradiseo-mo/doc/html/mo_move_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_move_8h-source.html @@ -48,7 +48,7 @@ 00030 }; 00031 00032 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_move_expl_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_move_expl_8h-source.html index 220136ef2..8d90c5fa2 100644 --- a/trunk/paradiseo-mo/doc/html/mo_move_expl_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_move_expl_8h-source.html @@ -48,7 +48,7 @@ 00027 }; 00028 00029 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_move_incr_eval_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_move_incr_eval_8h-source.html index ca863d2b6..c9ab999b0 100644 --- a/trunk/paradiseo-mo/doc/html/mo_move_incr_eval_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_move_incr_eval_8h-source.html @@ -48,7 +48,7 @@ 00030 }; 00031 00032 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_move_init_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_move_init_8h-source.html index f136fa12b..91ffe683d 100644 --- a/trunk/paradiseo-mo/doc/html/mo_move_init_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_move_init_8h-source.html @@ -46,7 +46,7 @@ 00026 }; 00027 00028 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_move_loop_expl_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_move_loop_expl_8h-source.html index 0bb9f770a..91601d83a 100644 --- a/trunk/paradiseo-mo/doc/html/mo_move_loop_expl_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_move_loop_expl_8h-source.html @@ -45,7 +45,7 @@ 00024 }; 00025 00026 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_move_select_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_move_select_8h-source.html index 3f066af39..90ac35e52 100644 --- a/trunk/paradiseo-mo/doc/html/mo_move_select_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_move_select_8h-source.html @@ -66,7 +66,7 @@ 00063 }; 00064 00065 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_next_move_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_next_move_8h-source.html index 7020d03de..35f248f97 100644 --- a/trunk/paradiseo-mo/doc/html/mo_next_move_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_next_move_8h-source.html @@ -47,7 +47,7 @@ 00027 }; 00028 00029 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_no_aspir_crit_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_no_aspir_crit_8h-source.html index dd38ac219..3ef95ebc4 100644 --- a/trunk/paradiseo-mo/doc/html/mo_no_aspir_crit_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_no_aspir_crit_8h-source.html @@ -57,7 +57,7 @@ 00046 }; 00047 00048 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_no_fit_impr_sol_continue_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_no_fit_impr_sol_continue_8h-source.html new file mode 100644 index 000000000..7c83d2d88 --- /dev/null +++ b/trunk/paradiseo-mo/doc/html/mo_no_fit_impr_sol_continue_8h-source.html @@ -0,0 +1,109 @@ + + +PARADISEO-MO: moNoFitImprSolContinue.h Source File + + + + +
    + +
    +

    moNoFitImprSolContinue.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "moNoFitImprSolContinue.h"
    +00004 
    +00005 // (c) OPAC Team (LIFL), Dolphin project (INRIA), 2003-2007
    +00006 
    +00007 /* LICENCE TEXT
    +00008    
    +00009    Contact: paradiseo-help@lists.gforge.inria.fr
    +00010 */
    +00011 
    +00012 #ifndef __moNoFitImprSolContinue_h
    +00013 #define __moNoFitImprSolContinue_h
    +00014 
    +00015 #include "moSolContinue.h"
    +00016 
    +00018 
    +00021 template < class EOT > class moNoFitImprSolContinue:public moSolContinue < EOT >
    +00022 {
    +00023 
    +00024 public:
    +00025 
    +00027   typedef typename EOT::Fitness Fitness;
    +00028 
    +00030 
    +00034   moNoFitImprSolContinue (unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization=true)
    +00035     : maxNumberOfIterationsWithoutImprovment(__maxNumberOfIterationWithoutImprovment),maximization(__maximization), 
    +00036       firstFitnessSaved(true), counter(0) 
    +00037   {}
    +00038 
    +00040 
    +00045   bool operator   () (const EOT & __sol)
    +00046   {
    +00047     if(__sol.invalid())
    +00048       {
    +00049         return true;
    +00050       }
    +00051 
    +00052     if(firstFitnessSaved)
    +00053       {
    +00054         fitness=__sol.fitness();
    +00055         counter=0;
    +00056         FirstFitnessSaved=false;
    +00057         return true;
    +00058       }
    +00059     
    +00060     counter++;
    +00061 
    +00062     if( ((maximization) && (__sol.fitness() > fitness)) || 
    +00063         ((!maximization) && (__sol.fitness() < fitness)) )
    +00064       {
    +00065         fitness=__sol.fitness();
    +00066         counter=0;
    +00067       }
    +00068   
    +00069     if(counter==maxNumberOfIterationsWithoutImprovment)
    +00070       {
    +00071         std::cout << "moNoFitImrpSolContinue: Done [" << counter  << "] iterations without improvement." << std::endl;
    +00072       }
    +00073     return counter!=maxNumberOfIterationsWithoutImprovment;
    +00074   }
    +00075 
    +00077   void init ()
    +00078   {}
    +00079 
    +00080 private:
    +00081 
    +00083   unsigned int maxNumberOfIterationsWithoutImprovment;
    +00084 
    +00086   bool firstFitnessSaved;
    +00087 
    +00089   Fitness fitness;
    +00090 
    +00092 
    +00096   bool maximization;
    +00097 
    +00099   unsigned int counter;
    +00100 };
    +00101 
    +00102 #endif
    +

    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  + +doxygen 1.5.2
    + + diff --git a/trunk/paradiseo-mo/doc/html/mo_rand_impr_select_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_rand_impr_select_8h-source.html index cbaa03028..1ef3e33b2 100644 --- a/trunk/paradiseo-mo/doc/html/mo_rand_impr_select_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_rand_impr_select_8h-source.html @@ -97,7 +97,7 @@ 00102 }; 00103 00104 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_rand_move_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_rand_move_8h-source.html index 208a467ad..1b271486c 100644 --- a/trunk/paradiseo-mo/doc/html/mo_rand_move_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_rand_move_8h-source.html @@ -45,7 +45,7 @@ 00024 }; 00025 00026 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_s_a_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_s_a_8h-source.html index 73280805a..a25f3acee 100644 --- a/trunk/paradiseo-mo/doc/html/mo_s_a_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_s_a_8h-source.html @@ -144,7 +144,7 @@ 00147 }; 00148 00149 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_simple_move_tabu_list_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_simple_move_tabu_list_8h-source.html index 920e30ae3..d2eac2d09 100644 --- a/trunk/paradiseo-mo/doc/html/mo_simple_move_tabu_list_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_simple_move_tabu_list_8h-source.html @@ -134,7 +134,7 @@ 00124 }; 00125 00126 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_simple_solution_tabu_list_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_simple_solution_tabu_list_8h-source.html index 82d9c6b5e..ebb9e665d 100644 --- a/trunk/paradiseo-mo/doc/html/mo_simple_solution_tabu_list_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_simple_solution_tabu_list_8h-source.html @@ -141,7 +141,7 @@ 00133 }; 00134 00135 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_sol_continue_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_sol_continue_8h-source.html index 708556b1c..c92e42245 100644 --- a/trunk/paradiseo-mo/doc/html/mo_sol_continue_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_sol_continue_8h-source.html @@ -39,16 +39,16 @@ 00015 #include <eoFunctor.h> 00016 00018 -00022 template < class EOT > class moSolContinue:public eoUF < const EOT &, bool > +00022 template < class EOT > class moSolContinue:public eoUF < const EOT &, bool > 00023 { 00024 00025 public: 00027 -00030 virtual void init () = 0; +00030 virtual void init () = 0; 00031 }; 00032 00033 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_steady_fit_sol_continue_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_steady_fit_sol_continue_8h-source.html new file mode 100644 index 000000000..34d28e2b8 --- /dev/null +++ b/trunk/paradiseo-mo/doc/html/mo_steady_fit_sol_continue_8h-source.html @@ -0,0 +1,123 @@ + + +PARADISEO-MO: moSteadyFitSolContinue.h Source File + + + + +
    + +
    +

    moSteadyFitSolContinue.h

    00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
    +00002 
    +00003 // "moSteadyFitSolContinue.h"
    +00004 
    +00005 // (c) OPAC Team (LIFL), Dolphin project (INRIA), 2003-2007
    +00006 
    +00007 /* LICENCE TEXT
    +00008    
    +00009    Contact: paradiseo-help@lists.gforge.inria.fr
    +00010 */
    +00011 
    +00012 #ifndef __moSteadyFitSolContinue_h
    +00013 #define __moSteadyFitSolContinue_h
    +00014 
    +00015 #include "moSolContinue.h"
    +00016 
    +00018 
    +00021 template < class EOT > class moSteadyFitSolContinue:public moSolContinue < EOT >
    +00022 {
    +00023 
    +00024 public:
    +00025 
    +00027   typedef typename EOT::Fitness Fitness;
    +00028 
    +00030 
    +00035   moSteadyFitSolContinue (unsigned int __maxNumberOfIterations, unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization=true)
    +00036     : maxNumberOfIterations (__maxNumberOfIterations), maxNumberOfIterationsWithoutImprovment(__maxNumberOfIterationWithoutImprovment),
    +00037       maximization(__maximization), maxNumberOfIterationsReached(false), firstFitnessSaved(true), counter(0) 
    +00038   {}
    +00039 
    +00041 
    +00047   bool operator   () (const EOT & __sol)
    +00048   {
    +00049     if(!maxNumberOfIterationsReached)
    +00050       {
    +00051         maxNumberOfIterationsReached=((++counter)==maxNumberOfIterations);
    +00052         if(maxNumberOfIterationsReached)
    +00053           {
    +00054             std::cout << "moSteadyFitSolContinue: Done the minimum number of iterations [" << counter << "]." << std::endl;
    +00055           }
    +00056         return true;
    +00057       }
    +00058 
    +00059     if(__sol.invalid())
    +00060       {
    +00061         return true;
    +00062       }
    +00063 
    +00064     if(firstFitnessSaved)
    +00065       {
    +00066         fitness=__sol.fitness();
    +00067         counter=0;
    +00068         FirstFitnessSaved=false;
    +00069         return true;
    +00070       }
    +00071     
    +00072     counter++;
    +00073 
    +00074     if( ((maximization) && (__sol.fitness() > fitness)) || 
    +00075         ((!maximization) && (__sol.fitness() < fitness)) )
    +00076       {
    +00077         fitness=__sol.fitness();
    +00078         counter=0;
    +00079       }
    +00080   
    +00081     if(counter==maxNumberOfIterationsWithoutImprovment)
    +00082       {
    +00083         std::cout << "moSteadyFitSolContinue: Done [" << counter  << "] iterations without improvement." << std::endl;
    +00084       }
    +00085     return counter!=maxNumberOfIterationsWithoutImprovment;
    +00086   }
    +00087 
    +00089   void init ()
    +00090   {}
    +00091 
    +00092 private:
    +00093 
    +00095   unsigned int maxNumberOfIterations;
    +00096 
    +00098   unsigned int maxNumberOfIterationsWithoutImprovment;
    +00099 
    +00101   bool maxNumberOfIterationsReached;
    +00102 
    +00104   bool firstFitnessSaved;
    +00105 
    +00107   Fitness fitness;
    +00108 
    +00110 
    +00114   bool maximization;
    +00115 
    +00117   unsigned int counter;
    +00118 };
    +00119 
    +00120 #endif
    +

    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  + +doxygen 1.5.2
    + + diff --git a/trunk/paradiseo-mo/doc/html/mo_t_s_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_t_s_8h-source.html index f32f7b68f..c7fc7764b 100644 --- a/trunk/paradiseo-mo/doc/html/mo_t_s_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_t_s_8h-source.html @@ -132,7 +132,7 @@ 00142 }; 00143 00144 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_t_s_move_loop_expl_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_t_s_move_loop_expl_8h-source.html index 1edcee1e1..314ad48c5 100644 --- a/trunk/paradiseo-mo/doc/html/mo_t_s_move_loop_expl_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_t_s_move_loop_expl_8h-source.html @@ -128,7 +128,7 @@ 00130 }; 00131 00132 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/mo_tabu_list_8h-source.html b/trunk/paradiseo-mo/doc/html/mo_tabu_list_8h-source.html index a7843d915..3b0cb0c6b 100644 --- a/trunk/paradiseo-mo/doc/html/mo_tabu_list_8h-source.html +++ b/trunk/paradiseo-mo/doc/html/mo_tabu_list_8h-source.html @@ -61,7 +61,7 @@ 00054 }; 00055 00056 #endif -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/search.idx b/trunk/paradiseo-mo/doc/html/search.idx index f5121b3f3b1701988b89ea6e662035e062d5ca22..989cbbcaa427d1de85cdcde24635ce0d32c95114 100644 GIT binary patch literal 357915 zcmeFa4V)!Kc`w{bA3+2KMI{E~=mMfFdcHqa(S_w>kww5oK}Bc#obIzTFf(VFIkW7p zm|!kZiYOs)$?7|C!KlT)`eihv@Z2q*%IfFhs>C<2Or zBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs> zC<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%I zfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`e zihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhl zpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2PWV@Dti z!pHuyzNrW(0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%I zfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`e zihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhl zpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H; z0*Zhlpa>`eihv@Z2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>C<2Or zBA^H;0*Zhlpa>`eihv@Z2q*#*2!z4G6KQKn2%q%b!ffG_epr~UiHd+Cpa>`eihv^U z#6=){^8P{ijTy!t~CPz0X%2!#7x zlWSzS-$!!yWjA4Xa@nI?dKeCK_j;oUC<0F$1j2Bkv@v1$-rTb=yv5yzl}h^iDaU7i zZ*jl%ha#W|Jh2f7pE8?kVEB}!{Qdqf&E3mQxPMQ6=C0xXugTr(jUu23JaG{S_kY7g z-$yYcr+_`A{N2@g2M{pNfJoXz*)0q@DB>y09y2t2V62%mb$iVX^% zT653Cr+zT=`=goPpU?dMviq$+6ahuxiH$&b;QqM=h6g^&yU*(bxrg>9Jn+94C2N`@ zpa?v{5eN@_AGa_(@FsgrZG4mv9{6=m_x}qI{I;J|cpo14P+__zDguhY6BB{(X{l}B zZ(;bfgM;vCTm9r9Jm?1e85%P2P!kjZML-cy1QY>9;KvGq@SyKav^P9RWBn&U(F8@{ z#}I+=;6rn*4iD~l_mloX$`Br`zP%h!dZP%GAP^qBwwT(I*Y|01c<>i;<%duI74QBJ zbN6x+KK%jtsaHin5%~WJ0^w1`aeaRG!lQoGPvZOVs6Q!8*F;4?5qM%E5FVBH<%LHV z+yBF(59SVpM?c42Uv95IXRm2|5GUw=ihv^Ughn7d`eTo&ec{nxb?=2o{{#OHU;L~f zeDN_ZU4JM7ioky@1i}~R?T7!hdau1z1b(~_2w!}1uEF7pcjoSkZo*@ZEK1fiML-ew zF+(6c<~VL~c#QG$g~!CM2jMXv3BqH3&)sK#gvWd@2w!q~HVOCUe4uP%_|jj>-s*2f zKoNKXArQVaZ^sW`n)(C7m;PfA9=llB+VI#*TzYuy`;hMw?w)>x$NmA|hsWNLOV=Ak zKoR)yMj$-)FS!HZv1x2zxc<36-ks9cD+2!o5eV0(XLnKe!}YKGFNlJ6SrJeKd<4Sv zzYKctNk5tI!}Z@NOxHw3KoL*`6ahs*5%}>#AYA{QAHPOxixmMyKoL*`6ahs*5l{pa z0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs* z5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*` z6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9 zKoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy z1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eK zML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL& zPy`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa z0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs* z5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*` z6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9 zKoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy z1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eK zML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL& zPy`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa z0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs* z5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*` z6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9 zKoL*`6ahs*5l{pa0YyL&Py`eKML-cy1QY>9KoL*`o=6B(Usel(aQ(x<^z?9cjGxDa z)6?^#oeBNCX?l7*vzRQ+jOJq8zwGwu>BVR~JEGtB<5@DlgML23?=B=uOSpUa6yA?^ z&Cbv6p{xs()SRAP8qLwK8Gg91Jik4mC)GJq+4SrJS6;nzdU_$*HI^1sQRD2wU~xLx z8PWT-18n}KWG)#{b8F|L^5wZXmjfkG^QV(tJNS*er}2|AK0G~*ZrFy@52K1Mmb)%> zY$29v>nId`n4TRci+HuZV|x0ck49^FTMoE;0Cjl=2DXl{CGFq2T;#(KavyN5=k zv9Y*H0=|JpkE8zb^xW(cRoOtRqop0Qi_?Qe2Dfo_ARTPn64L9%0Ps(KJN zqs4f3VLO%ZNHiGF?u^C>mEWAAj7v+Lv3XJu#niawS-8&9KriqJHE+bd$#P2&4Gn~~Fvua@+r~ZUUB;=h z40<<3OG~4{tZi5CfgqxB+R%;06D1h8y_C zuF_W=G61X zY)0+)OZtiF_3>BrlbLAe>}Z*m!|^xwli`Rve*A4gf3%CI$MFyKN6U=fs}ApD`X&tX ztBwr%gzT%T!2rFYU*my!at*HWYz#Dz`s#xM%=W>BJ4UluW(@VKrv@{l(Gs`t)lK}i zKQ{)0IRMF(zWSU2DxyZcdK;(Guerh8?0nx8vT*{++ZfXtjb;~U=4{+CKnD#p8!xeocjLpkrFz0iTwF4qqfVbNgIs2D zPyr{5Q2-Ot6E4StrP(-HJuB0S3+GTfN#WFmX|EdjWG zf;GVc!|At!ds6{-CA)|>+0?HlyCN)BhUE17?G0snh?xDza9`YSIl$cW=xsU4-q32= za$d3vNSh+I+>Iw#T85Ntxi=U_W`wppFqBDp#CxGT@U4Bm6z$|ToE;;9p5DMu>DR3$3;n#u=H`B#eV^RXqX&cGTtuw+>_-BS zT>N-lb!f@#)+>>+eFS1nL~ZN!!EkXzoOJ7rK~^9-2X_m^L(Un~4~ykF*H9j$zW(lD zI|v*%^9@r0#4?g%%?m%rFlUZ<~~UBCpIm!?kNL@h|D%T&(vooOXB@22l@_wJ2{T#_kr+ms~i z;Z?nDy}4)du&s;o=ayre^(4t^M4fGCp>;&!ww=!qE;uo1+m2wC8no?_fY(qT7b|EZ zwSTv}qfCRUz2zx0xYFJ6G#y+YTnI!c-;KeA3p^zTx6lt7q`?EhT!a-e!#KtVm>ViJ zUXS0B-VGo|u>2ICG?y%F9}}^U&jU%}tZ^_m+g~*FFNR>Ta3N2r_{zE2?K4CJ;+w2| z9^VQv1r4P3B$o#ebs4ney1CH^&7@VI+yF85Li%xY;7D@alm!%@*W&3($wVZwXj>6Ya`}Ug)pI}K_J!bno$Uu4_E$8iz@Xaz& zteL~zn{G5I`MO{p;(}Y#gzwA^^U3^(xy#J$!8|5WM$eqN%O+3-GY{|$S1@}(Fi(?f z_Q?4WDIN5)i=U(&S>O~kLYHV&sT!bp62UPx*m+r@w4z&EhNPN7-An-2J(-EKw98*@Y5rR?rEJ(>=giU_7Td*HyI_~@_KV08#-)2FpGr}H zEWgq>Y*^l5_0T0udjBD&J4B+<;xR8l&&T0phMWXAK4dZjl_;i{F=mNh13w4aRQ@pp zl@&b3&6Nnth7Bt{rLs1!lwre$e8-RmA zPyG}^4-?fdB;Q9&RzHKCB?q=%s$ksCEjh`*w9?Tm*gKZmTjQ=FlPRtkoDb+1@@ny^y|9RF< zzI@;0^Q=O#{NUtsF5fZXch4>qGUOM?0 z%fdarvP7hzZj{M7JFh8u=6C9YrTMZPVCPMx*)pDzowp)aM!@pxy2F2LdZT3yr)v|wqnUI*QU9$JjLnM7|e_!fzodkW=L^1X&z=naR#S}5&N)ucA-*uF(yiJ z5xm$eZ4(RF#h5R}xjn9QF{Vs$#?<O!6P*Xwb!& zU48~C*vbUE!pX-w;iQ~44i(9D$jZ57+U+_5Qg}ownl*r3$C%q(gLXAdq9HoFHk!MX ztL)lhQkc?H%Q1s?ooCXr++kO2(nt-ZEITAi>Xh7diDbz*CU;$K60_#UT~{M*LIn{H zz3ckor$wpMk{gR2c$0nCEybA(E!lN@@l!YKyY4E^V5iKkuNFUsrHtfs{82maFV2Ly zZOtaT9xBd}cbn`EigRVOv)u_GpW%eY{+%x$+tLW^xZ}NGTmF;%i=52=sh#bO-c-vGOLG-p8v#osF9Scdq?)pm(qF-#|zhq`1fe)ZRS|qXZ zlI!FSK@P;2FS&_w;>X*=1?v@k`{BU?*{a`uBt@ebm%!UM<2R*UX8adFeN5mq=AUk6 zw1l5N4>vIGBkxaN5{&v6n0Tq5Io$j-KDVDaCm50c>u0tFCdBIFM_8&f+^WKJSbvNDGk|G$!xd73?4-CxW7eV2NGR1oS&m z@$%BlbRV_T?NvcW!FlJ+f!Mm<`7lXXqT#)(Nq6jzeb;&BC!_hUaX{s>ulQZpz3!J8SnZklSBITa7q|2KWvdL|KtqZ!?Wk|>S8ipUgU_C%eSD!9di-7 zj`uF#wwP>Ro{JW_A(ta^YH69$|TucRb|pzF{fhVjePy+{P;oSt3h4 zxzw&WVkrSfHX(OcYz`2FXo6?1I47_|)fL-}q)EB2v-WJl>WbSCC&Hb%;!Y%^&&JDk z#l1mBV7TI;CB!oglHk5X!{a0X>&kWv+@rqf4qby z^C-P%2Yym~#(OTKA8>Ayv+_OnE{&ImL`~k?gcE#`dE0x>!%vRzdN1CmNF}of-@D7* z5u)$CnhN4y*9S|xAvlp=@Vz$%8AePleMxpiF-04=KKx`W76wM4FZs_MF%0tWWFTZ8e%ob#@L0(9un1HtmbEM>&a zFK>uSsN3&<&@F}QL-UiKUtbL_o|$Dj zaQ#X6#dQ1w+b*7Av+)Nm2}ry|z7Je}u?g|`z^zu`q{KTeo@H122ObG72Dc?_e&v8* zH_wq@Ig+EVpA>{2{X_hEGX9<&grE9%{vH0=?dE#V)6Ml?pKGrFb``D%1eN`Id|x^A zf8rVjm81XO+&3^2QC6jcNMlOxeA3*Xc$T@}^m$yL5>!q)%v@jld~-eXdR&qJ%x{_N zo9-~z=;v@ndHp{(_Y0@l?%zZ;2xNo>}-{`u{LMZit~iu`hm%F z*Un8nFJ=1NnFOd+^TE`(B>P zF~4TsnLp3IGZlotPGb-JKSpy2*IRy;^Mt>DfVt;!MfzuGtPcu89#`Cd@pa^xi-X>aucs_VF-|w9=4lHj+_-CfR)!MTa9Ff}R+Lh@`Y1=dP-tkd>U-}>3 z+c)+4^-Ec;Df9f*Pv`e4wtmJ?%91j?yg{%Z<_XOgw3o*n*E65P_x%3f(0ag}=saTb z@UsJh%IFWgJeX&>JfLwd56V38+sKcxdi_K8z2Y=kzm@EI{pPQmx}X0|E`!_Ut-Hx} zhVlh3hX>ZH%rT3L%Ohhd__%k9$|*_%j<$o9pXv0j~5XbVAz6eUP@;`R>p2 zHRt)~pW-?k{dDw^=!&V|Jj0mqGoo4Gd!M+?KF9q0s^JZl!--y@e@EwO1GnXO?&N3T zAAHbU|EOZ}USQs#GApk?n$v>dX+ikGH{v&N`3=*K@TPmrdpxIri5=JQ2j4OI9=XLl z{~__-{esE?`}2L}skUtkf63|G_RnqMXZ+ii!*zMIwQ_->8T`!78KK`5N0WiYCl9sd zVI6+V&}u_(F=xK>o2DH{{m@)bJ>On;nXAx8p?gEimlnUk&zTng7EK29`3}>U@bhPw z`@d+K>pis2@cgSp({TL+>}JsN*Xe&GqkXo%jEux&No5%=Mvl_Ie**D~C;)>*03X54Sk{pzOFR*CsduZnZn)Z9&#Id1HrN5^d1Pd(N_;8b^O$~^=7e24zx)62?~0{wLGaWd zya`Fvhu@CP^|s^9RdDt3v~#O+(0e#v<+RiJ%Jb|eHrce_Hdo8HxctBS5T}LTmHCGG zeA5Lc?T2qQ`7d}DUwQr?@EQC2uppE%w{t7J&CH8X+A93~%eD`84TgVnJ(uC+Gj2Q9 z=zo}em1jJapQmf}@6G*-Z!lMxk6S)x?)`b`=yG=6154Y^bPX5C!*<<;B71yund@-# z)yhrM_R4b)F>MffV&$odw9(RwO7vxuPhcaz^T=?g|S5S~)G=$A~oTVvoYLc5Nv z;~DOSA7;k0@*Kl|Ds~O?m{~cNX_kzc$j%}&b3ZW#vM#Oc>|_z)eIgTyY?^7GlWQ#f ztL#tn8+7g%Lj!`K;$*za^By++6P&!U41)brUM4i;%PoE<{I13FS#L3Ah}>k`$m{1< zzh&}@o+JHy@ORBS(hnJ*w~S4?^vjM1x7n`M(5}-^=7{iZ#}kM@82ou{$$Yb8&phVW zf6lb)L%(P0JNq(o-Ek*hSswnVS+C(;e~mP($A8&quB^X+$5n3Typ^M{p_TAuy##bd z^pZ2LH_utuLORbiT$jJZ=|KP<@QH-q4gYAyTzSkOr=d>PlW?_ibrAfNrAe5dzx6IIS9p7P z>x;~Nj`kp*jFHeFp6^H(+9UJfAAaAw&$JHDg$D5&LmNZ~6x#D@%a=|fy$fs5pT9D% zgkQ=05*j7?u9clDOj}XT#Jqb(+E?kL=NLYsc%I7G*!D`j+(x?&E0!1WS`a=X zV^_d$WUX_XL?)K^{&c75|36=0t`qNLJgq$9=$MR)(_OG;PkTGR&$QC%+R)d8hRECz z+VO&u4F*z{&<>&PgAd#CP=5&~l@pG(d7#Hie>gARVf=6{o5Q&|i#aNDmB+bYPRiVK zd>nJ;*GwBL+vaRLP>z)uD*Xd(8u+K>7d(cRXNVrea*UHJfupqn1;KMr{!v^;D!*i9 zgKXcdPW+|Un*1Uw$T}7NYu9D?pSImUY5C?0-_7q;M0S;RYVob`Iz`_^rj z!S)ukm2DY^KnAe%Xfw&O;00%su7s-6Q@jJ_ZKp_Q{mkNK-J zP5!@ozA1bEZRYy&&|F0Z6F&YrqYGBfeS>*^o}HgNE;sj%&ja75k4)P0{>WUn-EFQ; zrvtuEdWT7Kx&hYY|M?WBG1d+{l0Af`;JtIsHt)UVGd3@<{jAZ0DpM~s&tCZX^qJ*{ z&gSK8St!@Z{HWW~T&~;6Th9wZ(Vbc6$NKhk=+N3DLXqX%dbcv2=z&7ZMaC11MAj3m zrmPI;$$pj1SD3z?{zh|^xgfmmTx(l)7UE^ z=N$5B5tFvij~m|M?C>Iov%Ue`SiivBc+zK0*=(!Ez34vo)3 z$FcOq>7gaOq#|@fc*gOD7doDC8qri5Ps6*oA9tDd@w^b5lIYx4KVx25WS5_?xdWH~ z{1Vr}<%t|5`m^PE{7m@i7p2}V)uEK<@d6VMUQs! z8|I(1)Apqza+sZ~JSSwGSzB=UZ!a`PUn&-ek zd>!Ju5*r}vHhACqfH<$m>zqwN*1FT%^Xn)4j%hpd_Kz4FRrs0fxj*68jIE|pF}PML zmvDOJDSv6MY-7fpe#y<|e*3+A<@WsVFY@p3GltiN4;vZ~if!q{&)B@s;XZPp$@{-| znd{vLo9hGn@wIZuo6PkH;~!*y-i=Ep&&Nr2BRSw7%)RJ?Qr4#_AD)YT$bKTw-#;f^ z1L>kKvc8G&|GUVf|DPFiW&a=2ZCi}}ANTApLf`lQGtTGQDDu!t4VIN-NpHd&IPQn$ z%CZ*TYkv^;xQcvqg2hz)NUybPll_3m$9gcvd@Es%@_6h)Lmhtrk6|AW`o{hXyd(0} zQ}#D?`7+v@{+CG~Hu=i)&yFd#?I5!Ip)T7N*0Tg(!A+jf7& z*c8p01&*?2g{RBfecqv_ZMij!{=Z_oNtd-OG83<9JfB$8pj%e2=KeVuFux8AA2IwT zl{xXQvq=G0OZzL9#*-ZBWU3d~wb8UP8p|_i&&C&-_F7#~Y;ugRtWC=og8;JqM<3$+ zj;0A6{q)mKI^zV~M7MGF_G?W&IlM3jgbxW$C((LAy4VbyehECRe#AIA-4!~e=>2?k~n*I}}Y|$%3P7r(FE6*^`Pqw`9t=F0R2^tIBoi2rTIX;;kvx}^s2=qg2 z_tMVaBx43J61pNbFloQ98?!Eka{ll)@E+#x?O*418U5*yApDcv=3ZP~UeM{FXFCg6U{*l_8w3i0KRZDe`uFsp*&4>b6t+Q12Yc`zVKfeaJ5~%j$*BkFfmnCV$oj zeD9MuE&NB4#W7cT&Y_HFTACo(y=o(#qYh_Z{ubx2oPVXcE?&&fIX*$`8qBjX?;m(6 z=L!FV-a#1$kY0?d&>J2<)VXBxaXWaeVXm;PkmOV3mw7JpmvNzIpgT^^!*8bpIUXo~n9nTO&%(P_T25$#NQQA#_0 z(WF~`5I$PJr09aOHbo~E9ZA-j=r^*)%KVn1JBw{hY}=ws%UrfTj*95gVqf(AouWI& zmvTQ-e>AWVTcTapW*jfze5@A=4;5WVbT}*PJ3GDfP3(N41IYY$dMbFLCu_O55MSnc z`f+Fn<{Z;btTBV-^7r3y8A0%3gzQ=Q zisJ|{Z$vNnouB1AdD{xG6WhvdiFt106r7Dk^e-!y8LUyR=wo6>W8DPlHon5?+&?ff zf|L7&SBM{33IHG-bcT~4}Zsw4~@sW49?<Qy(|wcyeQcgg(l=79X~q z*Q`^EpHcXa_yCr}RkL5`f;T1yjg~nT& zPWVpxLy#tRI5$@?_eEzEJe=;h&hk*uERpkl%*A#nzIE}}i@iqXlpRlFBLP;z2gK$m zVx_3KmTEKl~~@t{C(VGo_~qv z8S=3Vi~Dc1%)P{#`R?bb8Y;!x%&E$*f&qO49`)H=s&E-;Qq{Mlm6ys@ReozuNn+Y z>_76n;(MlSc~@dbL?;p*#p)hRv&5Dsc382=Nx#I_X4}W{FrPe$>k0pi_&=~^%z>@N zxUwI~TWF8SaaOt0nLN2NkoQDm_u&4E@9G-{ zGl^Xk|JX$AV$bMTl~kfjd!^ZhYgf?>@i54D;cK9?A_d*k8T!c0Xe-xQsXP( zYep~<*-7}7V3XrhSg*pTM8@Dgqp$2gfGyAJw(QpuUGM(CF>65l#^N_WlI%<UW0;do(0;e>L947SyppkHXKgn! zHq0|bW|Z+0S<#~z!q1sUNM0`wud&~;dbPFBS42n9F{SN;1}O}fx2Uxs@2JIp+Bu_5m^_clhv(MyRd5c==&xXLL9n)hCZ3(Y&3!xxgA z^JM;$*sw|lH<>$3H!UCG-5^N_%IUdylX3-2RG{19{&W$`s$^`38H+Q#t&8^FHrcLLTu~ z&ODv#Ewtl)k$5cl_1{)FPx$xOnlhw~(zZ8#AuU7VX8zdNfy8fH34faNRGxZ-DMR9B zrr&PvonI2`~W&Z7ro;$YmS3KJeZ}MlWQ{B+sAzGe48Ki^?IkJuf9+B;Fm*@|D-Hq{%uzov=f>@lWxU z`L~Rl*wV%REi$CU9Mmn%cnx8RGQ^&5d2?kzV~KR$w!` z0ep8H$yc5?(jKW_>UH&C41V)}aJk{<_T%@$zom7A_2k!knpsQSHo;Tu6Ebd3GIa|! zPDi%mS2^FzThJ@+8A=U>g{d$cp)A~k(U=!%@w@e!)p3TOgi@n|Lp%h!Y z)x+H0n@`+k-WR#&Qy(|?qECx0RQ5=SJj60RFk`(5SBbZ@c6(z>fRE_w6hj0I*=`H| zldCbOalRF7bQjOabs#U#=3nyXdH*PqB>xvb^|K#9uBt0?UQiHzRuL%Qtho zoIjlB66zB_xae0BJ0kN^c#`P+JQk>z?a+8%t^3!`YE*k`F3qeId5L#cbMZiGE zw?}aMy|_0rU}$3oE3YR(g=h!n`){1cza@^4$KlRfInCL%9M8sBS=qMo%G*qy`7fHQ z<53vLKOox?uClk+@n+N~F^2d38|Pv9Uigy88Dj61u{!X2Q^$*lFJcbJIEcRN_){h2 z?LOU>Jr0>Y4dHJQ-9mX%kJuvZ++bWqmi@D5nY?pkAH_RMU&fVi1tx!LWEB^K*|IWA zCQs$r-!<>avr{fH_f`hxxhZ`A*+-dYBKw~F3w&>4^1j5s!%xy20mj1PW#7UVW0Nj= zptWH*nN4gGK0acP5gEW?iaIRss2pKwk$sozmuGgbr^o@!bA(R`%@&)M@S?91ZAJOA z*XIWt`93WJy0GOftP`>=o-l_zZ2LvOD;)D=(v3ab{@!S4H|KfdbMT%`=eQMH&LM>AN{fWZDOcw{>ERY>8HOp{T<)yeup1^ zQTm(rXPS3Iw!hoo|FY5MLEAXy3^a&iiflbBU)sFC`|`9r_FLFItbf|yEH~QxA9_og zpZy;;opnq5`}>!>`YS9qqJEYWrHtog$`G20@#45TDT8Dz^Si<^7xp*HK{n6t5RJ9J zIsVuFzW)_2y~47KefKABPSe@$Z_`;8vF~!sp#9A}#{Pcj()8VfjsJtkoA=q;a$dF3 z^v8f11v5$TokFVrleln_kOc!hA-`A^v86fAc@n-~ai2_q+1?|CRpcGb3z% zjy196a~v@Jh7KcpdqlPnAGGj%=Yz%?;y6NE2K$!m@8h4J)|rX13cvXRmu`Gjlpk|} z;|g)*xHnq{^9b`h{H=da-(#PeO=r7;{mn6B_FcAt*x#E)p2d8+hxoqD&%QL9=fJyN zdgVo*N`JG@%I4YnV46Oc!I$}q&GU+z(mWi;ZPPjK&ipp~!~SL;mHo~8?(A>&FPYzF z&z$|uF-0~H$Hm*<%xCQH`-~5U=3>ZahuC+Yb5`0m_V?NJQ~otgXPb&Ghxaqt-@k9< zaGu}CiSB~&XMSYMnLfmoW6nB}cP~xT+23i?A3WKm8{3X8hxbR>-y2@y@)+MJrDL9O z{3x!+y~sVUFu$|!y|v-ejgQu(8~c#`%{D6gn{7h&U5+`lzu9(Xf1hpSL&lZ&5ZHHr z@EuoI<*-5en|-U42Q-)YF0RaH?R($(yEHHFF)-;SM%Mmjz0v;W{gw7N$BdcZA@e_* z{;W@@WgeU1V;rAq^RRAa-~E-U%OA4e)TXnpW`BR@wJwi2qk+;9=fm-5=#$8;qBDs; zE4q@zv`G9I`$I5xB1?$hQEbE_QwZI$^kzaAaIt!j1=v3fJ%#lcoX_N*!6v|cOyv>r z1BYTyU>*S3O!QFk_d2@*?7tFsB65@HjpE~#{fIWcMB)vdEbE_B947ubfx>flkhVj_K_yaQhZShdk<9uE*(!VqcK`0utZg{Gk{lq4`-q!*fZNq&WZ? z*7_CQ8F>=>WcS;#{x6t`KTLcIqQh37YuY8_ZgosLbIrFsI-i`xfQUa!=9u`nZA_W- zmxxbW^j@*4h%e3eb<5lnJ(l%W;30F-#ejeYx|mep!Ez4flGxeAo{mrU31$`M<;WvC zB-_)W3y<%!d7fqM&nVBcy{>9|_WgNMZXZ=xIOd8*>Gg9^?p6P4~)d-EWT8+x6AtT{Q@S-!XH|cUlkK03v`OIf^;>u@r5?uzbvwI<(KhK_#!_RCim5Wz*u~VS8 zAELE^_gSaImE~?+S+ByCbwgY~M|uZcNsqymWlmgKzQ>hi8_+n`i*RMR1Xq@=ab-Cf zSJq8%Wjz~LmfLV;SrS*)b8%(8c|X*JGq|j8Zh|%nU6S=Jb~DQpT-=qcONnt1AD_@G zS$`sr$oi9YCcHx8jm7ri#gZ_8l=F{s6ZutF) zGxZ=xh@Hg76o^gQ*=~i#bNRHM5!>vqU0JKLHsuU0+5cU(7FSt=yq{O(MUi(THbLlt z?0=Nl1d)eC#`4dwlUN0jD?|npK4j$#Cxb~Wm(Xk9_AWA-?DKT74K^l5V%dZ)OU#`g z(;)jn#a1r1ZA&|4j}`MGySF0UqmZSs(BJG_=DB3|3rl#+*HYx%`w}{G53p+b>X0 zPPRcFXD3Iwvd2K?qoZZu?VtL%sY~Qa@rPJBG`|i|mcK`tby=blcqaRpS_~&$m#>K zSCMQ;?p#4R_eNr-M4xc+;IKE@dFEmTMK1Er=i$1MvLAhdwZnc z!fVA(D*BkrS&@O|{4JKMin8>*7!vXD+u@v4ZnEAX}WZ#@0 z5}1oV$1)+xV><8@)Ct<__$}zFx3*=kW<_LC(IZP_P`0ajWf*w`b;`Sr24K8wUfB!B zWA4idHox?N$K1&km}_p0;J2IO=$F-xIDh6W2(uR+nAq4Xra4xAP18`;IJNDDH{QzQ z!+GWW4UTgqUV^;OKPY`}>9L&G$QXa^g!K7c_(`&n-NT;7lmd_3c~Q8xvQ9u>} zXpq>NWUrF56#>u8*;=xXlFPK`)Nzao7 zZ=5)H1pQ*)8?H8XBV?N(@><_s5FF`Z%_eB0$a$j2JH6fb^yQqfG#1tB=i-YLIZtSc z&{(ncNUW;chx$!3k9_$~=&O_K-fi+d)|geF=7_u}G)44*Y~0@W@8vpq%$Ro*t$`f= zyEf)bY!pn_fw#z9a?aWJtUSjyRE(YMx5&wLpegpecq7*#AJ18mBW|$r4devbr_Q_q zb%}iL>jV9d;;WXD0fn8)CK**7m|cgT7b zJx|Ww6TLy!vBdH)jUc_~yNtQBor!+&*$LfGzv_TT@D=6#+ExMw*8`DFjUqgTd1;r3?Hf^#rDgx6#CCGUnp13 zZD9I_dzPti75c`s1o_>bkfTjIS)W6??8j!?Io^BAXUuc4lgPOb&Ms-~|17%zC%3Qv z0=x&jSP#LKWf(kF;($Z;%_G0ib8D-U^Bco|-)j2Aa~v{|%;_8* zN1LsD90aXY2N64~&|RUkLPveNDK<}`mtr>(x+wM*;lCmmSzT0gBo}|<+h2q)v#ty} zHDQm54K_B;%f+z?{SZ5h@HDa4$(}Ny6G8_ZKeu)ovEzyU=dT-CC*p4syWXjm&d7QZ zeOO{4Mc0sZAig0t&wkd7q4kx?dP9TQE0{LkZ#dIUQee~~#vzjiXl_sx4bSpwyV--720 z)|~jPgx=(AKC&ip&H1Z=lh4!L8XR%GZY&*rsv{lm37wKLX5NW(=AF38d=y)Z==r(% z3A)Gg6Zu8I7ak-!m)NEpFEMdDVow)8jOe>^rmXB)adE{=`%%wCeDNdPPo58UObY$b zvR6ySO~y&=AYxmS`OUZp9_XjUXbKKu@9@@v+uP~eGsK5yZFIawtUrwBm9+_ z#Jv34FY!2pat?y%;vA<1x^d|Ld2KOA>gsa&2IQ|Ux9LtHT?CF#9+BlXH>2mgf z_}P|zj?3jX3yp9z5OzPyBb}`3^ByZ(v7bt4Lm7>iIb;2WZVk(t75UqzT@s5cYfjdd z&~}M$7TPXrN7jt&({XkM;O_gW?7C#Tliv?%mwO*$X=Merb8$Q>jfL?GIPArTdH!aL zG3cJ9hmH@(9%xw?-g;o$vYa0wW5;oMsE_TWkmH5G+5f?!>$Q;Y5_u~MQFi|#A@Uvyca|00Wt4d3wr zD?^EnDf~cmNo%W?Gbfx*D7v1+*o&+sI+Ex>B0Gt$Qs(1wy2R;>VM>P&H1{H-d$KgI zbq{Y@yG%Q*9Kv#i?EMiQYW`hl`64eZkoVNyac| zcyT+0r`!6aKCZ{i)A`XkThG83T(^uyJ5JuUV{XHS^rPp4xoBx=el$IvUgB?HPt(`r zrxWCQ+01x;Ze5fl!(ki$;(B{HYz^9-Xb|@XwN@i)MM<+4oRQGi%BQFfeCOVMvOZI; zDQMVlcak`cl2%;p4+l{*iM!oeuh(kT8}&vl38;iuPMtCJs;N!Xrm1uI8`$Gy>UD{H z<=QVat$gbkU+3O^%ItXSXl~O8U(j7xPBv_q9~GqsQVc#o8VY}Iio7LW6Sc``JPOVoR)Ou)dQQ`P_^TOY&<-G`S= zmwL5+w_mNr{irh>CQ-NFZgkqMxCiuG?P04;T`H*vO-%c=axKHS-ETy-PPh@agTFcc!Q!?!ez8SulER46}d+2^m^z~uCFT>if*Qz&@c0F!(hmCf( z8%3>d)ULK#gTWx_n=+=PN7=g8P<&=$ov>j8rqx2Sw3NO#9a%s-m=Vot+=}|GsM>D~ zyPa-aZ8SUmMzdRO_S0fs7cIo6&F@&;n#|$T(dI+q)BR+O4}J5pOADuu&QAm3#cA_> zbyHJ48YH!PKgPVMHJihzQ;RWo>dkhqS+CZHt+b}sj?i4LD!UR!{88=E;xR9Ay;vCW z%r{j{O#iqaW9ql-jR96{I~jD^Nz$q|lR>`@LVyoVyLDe&;rys5eT|j(I=w-!R~z(E zcO$6{;}#}RyV-4Y2Hm((k1>T_o9r6XpstZ(ID*G;;(dDeG_2G$zRy#TRDcW z!K~dfyO2bSn?|EKe58FV%88ff(shAEJO#nx$J0ypxoH~{0~B%Em?oXzpEk)95!l&A2`6bh?eW+l;IAK|N{L z(lrB&b5+dKqRpf@B!-2&sTB?Dy(CT=onABQL>*KzZ1<~iFX@B$b*U4l%q}h&G9VNu znww2&_>dk?l9{O28&q4}c0a0in$2Dvq^#N+)H+eU)s0)-0SblyF$+~-Y}7l0YQNuTfVb9bQKMe3cX~+@^*Y0DGX;$%ClfZ? zBh!cR?0mW~cn%th#+l5RH(K?6tr^#=z^K!yC;i^AiP7(O`bob!tToW9M?2&FIqr*C zD6&ALn(odVw=`N_93-Y;bJc3KL8DbHNnr4q@1U#_QKg{3TD3z30)!%gfrS$)kDnJv z3I!!rdufTZfK#4*@|ovQM{QwDBb~@mR8YN(?5ndv6zOxpg3@Z$8cHkTGAYMKNo8!V zpu}pOI!awUZDFu@^3G_EddJgsp=woX&E`$=Lcx@)lcYC6AcTI?ixcFbup*kd9t|)Z_8F7+c5qg-J()T; znH!Aeld17&>Z}u9cfv`hZ9VzS;{ZMw-qe}>3m_&f1@qDDg2zPmp(-Ps^PH`Y{z5Y_ z^{@2INdv{pxPX6@EN4R%Aksl5NCs8V#C8oNBI-6k)FDwPHHZz3lp+?__oGxm@^zIF z71J+Btj*S-(HnwS*P?cB5afI{sh>RssGjegYb*OFcW1+JGghjA1q^(5{yafX({uM*u% z%M?AOQyVmUy+#WPUsSKwV{mimORZtI4StK^FmFuxwAmHpQ)6ydI$Xsxcs|-SJ3qT8 zB8}CRR7Q=E^$40dw6AV2B5gA6MG!CtEl5ah z*iQgPAKZeHx^D;p$qG-?=wxe1b`q?n)b|E&lL9o)P|G3o+M~3#D*5NA`g$h!!qA`qm z!)jD(4WSqGdfi&B1#>{J-vlMEf|PVpAST2K$Vz)b-*E8!$kmSdk*{y?T%%>}rXZ() zedKL5{TSpLdQ+_j6IF9ig|V#~cO$Iks0&+aI=!9J;R>9b#lE;>Mea#+ttVrVCTn zXKL&CWVNtUI{!8>U9)UL`+TXJcA1;saF)rAaZACAkoe|Y-Y-lHk~(Sm`Z#Cg_>F z70D+;HD!ymY_^}&8^b0{*qufrN!mlmJK%^gZ^3Y0?HG5+V}99@%{453CxNcy4H*nt zO^BNVv=iLBRZUt^CrKLZWH_k7oj`+LTGeZp$wPGJ@H7~^SsF}@-6d4VK-6gWn~gyo zwx@cx+lgRB>wpnQ1GtNN4RGTW<~0%{*Hfl11;!6kZ>QVrMC4Rxz|EC3YV{s|C!Jag z_F8a0w%2e8Lgj=W?K6K25sS1EB6H;aag(ah{$lzP!{;;THo6TsUNF^Q0;>U4_}-#k zzdmS0K8E?4_LhQ@PRGZor?`TMkP|@@e+tn~hex5hvM#FiI(5i$Epp_+Qv(l84XDJ> zi5h))!7zpMrLNI6P*_`vYcVG&5Jt;bh#kn){4t`4>@9`GLA}@YmbBy|C&#{4UtH~Z zon;?rF~ux5HBJgSDr3K9;H&*XE$R+>5oGXAx0bZw_UKdx)n*5N)j^b@g8Ne8Nm;+N z+IdvsdaYOQwc(DaHV_^FKV7>&Na`Ta!(p!tWogo*l3T6Cz7)7+pcK}+^;)ab>cTe; zrqh86T7}OX7L1HrATMm}P35M{NJ`S0BQ_JJQoCN^BW>2;(yMmi=NmL@L+AlfZCHbA zW6)pKlfsPB)v>x41z?l+xmoKBY6Ezo8gOs)8r`VVtah7i93Aea{XWxbGENjP2*T59 z)?qp)-DV5+zZOh^G^XHC@PjrXU&OU0F<4*i!61t(WKt?Ck_sDa7AuSj8H|<}Ac~-t zN2T?oPLN5y4{eGA7pTZG;i90GHMYbX=_Sv3GyEYfljdC-2T@R7wMmwJ;$l=9b zzgHlu*UKF!`TEOPQ(+Ux3rp3Lc0*0z+6#0W5#CEwoN_*ZG9QKR)1Xe0s6Z1R(^vSPbnLw_o4f~BM6v1i|w-I}SCAt-w%;X|j5|2xB(C8sD1#CSx12wuLf345D@V$q;gMwLL(XV-gMHMiSNQ&@a%tBoiPjhDmAe z+O-o$qkIQUZq`3WCB>HlJi*u(2+X`_cdBq9^jdwGX@-Ni5heXTf=uh=8|@4`8QL-7 zbYUYdO>;MeAFF!eU@4bHHf-4IT1tu21vt45aTi%`%f`pXgJ{r2Okka&sH?4E4N7Pq zZpD7H-Wy`7q|@CIA8#x?3iDW$6klz@0$yVf7~<&hvK3E^jOSRAFS7|#o8;cvs0CDQ z863m_FB;q{kpyw@Hnd=pTbh{Gw6Hw4EGVdI?4u``PJkbJc~Hv=Oa>K|@fWWg)*d<% zuO*DY)S9RB-iv6!>hv4!C?VZmY21uvnTnB;Q55*7bPWoWBbrA4<0prH6=-m+NpDN8 zPM^ROwVs3C%2zqn{wVZ~RI4*%k#95#^EC|~EF0q{)O%9JHuG1JqE0 zzsPs9s=C7cm`Yc)BVKM%b1P8EqtGSJogL4NmN^1;v~wO2xUSR{y(ka_z%vp0gJ5%5 zgb>)#g8^~a9kd6qBqCN=8Vh4_7s~zXS_m?NU;(EWOv=@$H^5F0Y|$DFu`>xWDH(KpE#(w%OH6UWjXr{yh6q=~ zRuwSkMzsZpUbj9R!kpWQS{X@Z1)d;8p^Pz@8MUh7A=CV|X{@&!#{vaIveUQ=cX9cd zW_gN)8_%pJQ8-tNw2F20A)>45E%-Ql3H-u67)Co$yFEbsCnOkbk4wuh_L>xob_okJ zfUT;1xC-~75>jlLBf49pl{oy%SgGk5xv6_Jy)b_}*w>MO>h-Y&ppDH^Q3K{>*E8Q^ zvR8Bx!?^tg;uI2uPIY1P#;%RQuu2v$Y}n}Z;u;tbmLD@?UlW0K89sERIsl5*kw&%O z1CdLry=tq|?Z?BY-XJ$;yIrmJ;6YD2j@D(!y(bC#LW4ndRjs7JTf$af6zAGqqKym? zaEQG)Np}E)OAjW5VH4hfcC*ug0fl^AvKm(qQ-n;cB&%>wQWOeZA=&0WMqNW%>r@Tb ze^1F^DI-f^a`Xa%*Q6j+B*C?_+5^g5*+;;3Y{Tj%nK*GVjx9hbr98Z#4YdY^7!@&4 zYf? zzPzb#g`~8dFt>eV^pps{ylg3<*rz&+uM(}%m^n!rJnHs1^p{j~G2wnf zTivP^MvIUdgai*7h#7BTvphoAVCbz5l6IrjiH9kGPXILs)G1YPJdU^It2yhc?PiQ! z>+Psss}7qGSbMEn3l{w$VjQC8AQSjpMoE8k>QKS1m^_U&qXp3$`>G>Imfa4bE0R_p zCiy<;L5QboB||KSBKln*S6aqURLQE!7Ak?~gpOKpOwl<_VEyhk2iTZWYj)f1Bx*u- zt71DUHqT-YA~p!6zU?(G5>`v7o!;8mN9s(OZEKA@NtRg|V>08|!`>A{ctrI$>UX-G zVQ)ygHG2I{3%i249P*vfadHwxrUFkAS%*-OS{FObV%St#eLAe8-oZf~Eu7C$!zS5O z1Uut#Dn!}YTBr%Fx<|g$fR}Pq>1YXCwd4!d0PIGC$c#w91pROH>VqcqUF?1a95mg0 z)hDYUlsH}x%S-ZhXNWCVut}jji1~39J4m4O)&?1(_^5ce^r(!H+b*r9`jB#x9l_LE zC>50XVup3-Ewy^R*{HQ+_#SaSNwo&|Xk70^eRw!iVxNtX$dqbYxT^Z&l(T)N1^FTh zj;-;m8NR?`n%<=afh`>MA?$|j8vG578iJr>3^2@z!;Cd!!Y{Me6d{LBxiGYfs3aq@ zlDuU4i=$$C4IFiYoh$?N5Nae$h7F<)FqM)In~R$AeKwA+7iv%GG;!LI$Bcc-^cbSW zm@_d0hF~};D0y-oX%uEt%Q;s2ahn{Rz*F!F>@vhMQ=!7TJTkI`_ZDTx`khN?1*UaL zLkroeR|IQ6UGfeP8zpjt9+oLdB%c>6NvwxMbf=iQt#=YnF&*iK;+h&oa?OaOMq z?_x~(-aE)#q6J;F9N{d9@os8B3AOghVhCDgJ6h~yLTP1`vZ%O*_**j44vHXJn0H_p z{Hb!Fml^vUo5h7~wvd=;yeixxj_2acnZ=|anLZ`ViDkpw}^E2=VB zaD~C7g`(Z-l8BDvaot?eLDRuGXoD&aC8_o65%y!(5j9hT9W3cVAi>6$lw#)QTVB7& z5FI-*t0^!-i%_U{sF=5fPZ)+JPfHW-WK-d)yJp;g6w$!qz%!=f-bf*&e2A@AwHhLb z5p>>Z*Kw!|PILi;RYad>%LeoS zoXbKMVP8jCSc{tm-HUsjMjQLV>jNBO*lI#S9N?@(n9tym&*>3)83R&9?jS;6$}rfj zs;7|f;++o0vO0=$D3o|=k{V9Gqyr9d7!5XqVpk+0^sphb)$BJT7?;vO)v*yKR#8%;UuVy381d0289gn#b>Lu&qS~Y24A8t2-6Ry+2 z$s1%8YatSyY=Lc(kn`oPk%ko3#sUtJ5^*hOk7R|oHYslvNO+hqT#gaG>6N^!iia7A z0e870>%7cH8Z2|-7?FS)%*C)0L{Q!x*cS&x^? z_)9_M)ow31d49)ux6x4O5E>M~%e_!VNyXu;1K(il*{QtRQ0{33`%8S4po}1TrExo0 zy)iBrZ24jGgvJ-EBM4SU3xIHDuv0Av;H^6BEmCAxTCXX0LMv8UsYQKZf0bkB2GEpw zdvB!lBd;;wY(ePe&=51*o+lTHB^0YECBDanEGGHt92qRDquFSHGC)R;huBaIvnkG@ zti}nB$ieYN*vyvgM{XjBq=bS^Yu6Hq=FAdV^wRo{|%}3k^1AG@#94azLd7cdQ}^r2~H$ z#sdasip7ZOAk8B6Bs;zO9w$&hp~XNTBs z+d-5}2azb|jj7b(;)?LJ5+|pT`a)#TkXug}e2mITIY)r_VtI-&U&*p6V-RLk22le( zuLQ?CU>h-f8<6O5m@!UxXuzdcV;5M?b&?zH0-XZ^MszgWpgE|=z%p*oZZ+Cy(P>hc zYR92SoYMf~aLjNbZd@*JE|+<{x&=)zC^4fM2yo&7re6awelgDD?&Ay+938o;;vO?u8$$k@Tw;8EyDSWGsY3RmQ->EX5 zQY?TzKY1vhFC!R;<8~KEBGUbfMh74(HiJH;9`tq%M32p@Z}KadHn_u&pjmEsoQ(z4A4&*!%UMbvS z)?Y|HASHp?U7{Pb$U0xF8|3CQN+_fM1=Ux3c^?KfAVZXk-ryj&ta?E2tgIXu;LA6N z@Pxnuq>{==UQtsz;;~3Sxq%W&Gz1Qp1Ha4&Ua8X)ulWR^s6u#nS5^|tW-yfYXcYuj zcASDhK$NNn22IjZ{RNZ0;?~;avau`>2XzgGIBlYi&nXQ0*hfMp0xVrbw1+Ik<+NWBPR0M1m)uT@)?7PS6`ki zn!2#7DWZ>iKp=&kvDJhe-bD)hY3&YUE^eQ;HsoLXmZ1q-HglVj1>jnu$#w zh^dEb3gB-pNpNxO@U#Bkg8S_9%CXFxS!3bcDi>UyGrObH!W=JBm3I42{VPS|T< z4-Y;)fndl+7klRVnLPz1o(<>VmqtE5^~B-2@3fRPnDeABWgOdJ2hTwpoABWb#~}>> zu7=~7Z~_#FVZU0>eICena_~UrNa17FRg9Y>l@g@sPD#Om0|@#XfJhJU9g)Vc)x+V3 zeUPIhYPaB~FidXBcXl}5SGX4?rS87ik(1b@F}?s|@LN>_;n&eJPXTdFD^UX;<7*Qq zl-duKO@5!u|Na4Y2Wu^_6ilw)LhWE3ViJ=YcF(oyIIJCqqJu3!^{97S;G}~gAFwtl zsN_BzF)0ZZNO-VobJ ze98%awCY7MjaqZ)#!9+Prb}2$MW0#P+qy=XRxo~5%prGq7&h!_Xa z4iQ!aOMZ-F4Y0?f9+Q6q-_OD3jz-4#aN25~dsown2Vku#>ib+Y8}K1jO!8DSXgI9` z8@6!zd4e!e9216fPhg6VDG8s)LF9xRH1bD09#P*FPrTUL)uMG-uLwC3Bkai*c`NAI|Fy3@A}dS?{I>( z@!dpxqXXY?{M?z1{6L7u^b;U!cGb7lj&l))1kjOVnh~$|A_+` z`C^5^jYeLM*@t?AWf^UQ}pg%)DH}c|AGJSb{0?rHFS? zKfG=1dB#;xn$drZI|AAh*_#N3V)X&G5IoHD8zW!(b}FwXy!Bf9=~|P20e8mlkVgy| z^9li(`OuyYP|- z-dkyv`K3Yct|H)@SL<#`=EZzRfl7q$lm_MB+q(jMenAP5K$8q5i=ryN%8v8xIyLND zs^frBoD7J=WAH&Ya$ILb?!6|&W0@7MTM+6Tfh<|Pw%z!Ad_93~(Cas_gAT!?35@En zMdA}@*kNYPk5k2Uxsh3^3XH!Y2b1RitW`k}wK8p)3jm=pXk{0&13s$RYheLW#1|w| z{ya#3=;lyyooS0#7QY>tFQR07Q3_A%dA!0nP(~5-f7(ZhEW+2w@c}=CN;K#jF%ga+ zP4IymM5R^xIN}r^wfD(p;nMM`sF^^k9#rMJSZvtwXY1pX*fX_dZ2TGPlgzV8@qP9E z)_GG>&K5i&)gwfsIlvc*@I}2k;#hzFkBRI^-;e>QiaJNi}Nv>+9_^Pr#7XTWGb0ITjdE@Ad?*((x=gX%0C(b9# z-K_A$gNYNeCu9ZF6Pzej1?leKWb7!32Xs~>&XZ{3OXK)@3Xa}NC;dbPB8&>YB{l3L zsoytSdfJUI-k9EE8-COu_M)iPL0=Ko0ILby$oRwtzH$!!3aaZ1EE#(yq^3!Er$FQ~ zr^J%5PsO3kG9Lj)>=a83CEOill`!^#b|8QNl^1heBXyQ?cCR!l2COU>ZdE4n({|mw z#7_wLoXV@fh?~@05&P+-GNE6DQ(yMyuf^iMH3?vtvdFn&8`^2X3Rnn+R*CGm;ScZkAkbsd_3UaEczkCYI$b3}EUp4+ZazuD?0a=Q= z+D-w##EEbqqaEgtn_SoI3?cc0@!%8Ch-AY#fAqDaKE9cR?$Bi=#5|L8vGh;4r^Tdy2_|FPfDQ15+8!c3fGJ zC?+!LL=YTStOdI!@Wr?qMA&{b#F41b1seS>{P=N77Dm0vu$J8qpt_TmN-^oL z>(f3O94i1n5`wQ_F>ltOQw*vIM!})@^-Ku%@r2ds87P^BojML9DEftom_u z*PV<9!4n<|6p>Z;Ft}n#q!rh8ZYJ;)FwSi=y;jvnjBsW%WTH`%+qck{>p2TH~xhJH7b;(H&%1&M_~X2;eli9g(JM zkK;?{17C8<_pe9WVXjWP{<9*EA}CMj`30Lrbjl5*GJ+Q3>H zE#T1j*$C*2uo$*)r6Wp~=aSMWrj_EjJ=lGLE7xdW0xg>g(Z z{?MV%z(j+^YirR@*qM>x8rCzhLLfdGMC`z1Wa2#Gy~yhzPLEidB0>tQuZUziHA$d~ zhJ&{~L!uHStFI*}p!CxhX1!RN%x6%NlCZ^1! z6*69?l02FKqI@N}6O=F`dE_6hW+KZ|cD84lYe)k=sE!X{;rvwugy0C!UJZw0bYsxY zZau=@jZEnMUeZm<2tlEgRzeR<(^vgYy5o?=q(|nsV6t*$t0^eux&jI8Mc)uFbA@!E z8_?eNE}~GoaifF1Gu3)O8oEnQjF0XeDb$5VC%pxcGI341W~Gtdp6#1o692uf#w@Cm({kTD|l z2RP6qsv=MiA_j)6+eF|nf{yTkv1;bK62&f)!X@xH6_sM8Xw9K{E7lIAXgY|V;Y4M5 z^x~$S&p`K@#!==DF-(lZgoXaB>=3EPh)HiFaxcb);64mpa7W|g+%T9V*cqE8)IKl& z(drz{7IvcH^M}~QoZw^PQ5{h^*p$)7KEOeYT@G%P3lx@ArvYuw=@x}c11qvXyI6H6 zgC8ut=EYE0U$)If0*j39gw$ea#;WRsEQ)fa!Yz~4m551^$Xm3&WF&-bmGhcRBlB8> zY1T?wLxxI2C?g3fFW9o3yh{YRn1QqAgEvbUcVTI~ExW{oC`Y{VB~@ zoq`o5pAPw229>rp<$@2a%BvDN9*=_7qE>KB+$sKXY<2~pjEN;$geLEx_7#h?41WO? z6~U^j@9Y4@%SHE;DHIWQ2R888;Ra5k$F@Rzo0U$x!HE%Z6m<~coYEtsm_K&OUnq}= zdydYKK+DHNc}%o;l@^ljk|k@%&8mWZ89^vcckN!WQtZJ)tSX{O8;DbFwqoqB7|_W* z5V@fn)iUh8cvr_$FaOF|$3K35icK;yg$k%ag#_k~AQi zF-_wVh-}FC;~TUIkq;&%!q!$0`d8g)EfcIDv?-m%k6WB~GF}nk-5XMUv4~B3FqRjx z@$)On((B-S!43s-xQlcLH|{Iek%CG?_#+qFWw^7U zwyxoY;<>z$=S%LL30CCMqtgoa8|;0_+h=TK_)7PL%1W7Jb!IIhxM>h$PgfoLfP0-G z#Cv@FrVhIij`ya|il?JShW?DqlquMhl*G*hvNygmQ%xXrW7`Y91m9`lP&yngRISmO zHIK_zkmtZ_7Mp$6Y(`1OHZSSBu`QOh3vBkD06W3M4K%ApD6M?n%1TdNlUEhL*RA@M z2S=+)1PmE+U&=6@T=iI0gZZNs(|IzJ_Dup?v6NmjK|+OL%i#a`qN4YaI4Y`y9T!PV z?5=s#%#i9R#KpZreZ{f0Y1!0b920 z)v+jAG>4w@1ePrW1$t_NJb!;P6e)5zwCr7PPC>lTkfJyr|M~P5)LgO5oG;j$l~+xB zZIUFyTz!7hRf4DVdwC|lsP$5m+660#>h4;yo~&`7$tAW>%Q}~kfU#1jEM9&qH9P_b zd85jpFSk+&1dosoAhJAH(y=V(kvSIDw|ti+X7DomKDhLYsa`N;kN|Wo+B5j*+I8FR zMuPGn$%(XG?D4jpu6wsyA#Z6@TK1dOKBvCHU7J1)Ru7x*4n5(Afo?yzxS8!kKgYvJ zuSCWSqZcok+w_|+U|jb=63chj{85zn2~W$vs4bd8Fr5D?7%)4Kd;MvcU|9<} z%-O!L>Oq8f9zRRYe@zBCGX$8%tCFca?&;0SaH%u@+m2Vy`Tuje{2*fZ15^G1w6K-7 zjl>dq=^WDa%y43c72SVmb|!;}v%GcBj;}fAu0g*J8d})IN~8PB91j;pfLxijHjZ@U zCqPA;qBGrf&zFJz^!vbTU-EE3Vn5YJSr`C`Ef?r3O&9<8d44JFbRoV(&ghlKtql6R-53%b3^G4Pun@mj zD3POsQsHC=pGehuIc#(lgII8}G+(u~uC8HH@Wbd*rftPPUcXA%yJFRhN# zXNM+KpTR0LMHKCrC-w@722_z09}88=#UFtyCrP;~;7W|ZtO6DF;ER0Xev(%Tod8p~ zi~pKq<8M~(>gGhA$#a#gHP36*=p+Rs7Ne*{j9acnlSfB^XDMOeGQBALD%-Jg#-q~9 zZYsfm_WMW6%pZa%gG6yGLc2oysf;2#$)m+7HqN{Oyu2G^x-I7%m-?_=s1CM z>O@5Zk$mPJFk@&Ug?y3hi5D}HK?1x7q!=M;aLPyfB3VyugTKS}SK&$v6lDw-&*bhx zR67zupYRHg*byX3oZsm9w54cZ+A;e(GbLNdz+15;WWvkQhLyRw7X^UkpL?;J*0KAXy1_5y5h9K8krUyhsNl7a_(iRFKCz zpdUX&85FfVQKlWiNP2lCXW&NK#IHsj4i{HCaF(nc;b6J|Z25OfE7?)zV^I0P^yoJx zcx7V*zPh0iZ>4+SW3$?dDIHp^i_2fq(bsx8yc_9GWYVE{WZEf_+J4VKAgME^6Isn=s@<3Nm$bgM6T(}qHg8G?_({0Mu}hp=P+2Hp_Yc%qwDE|m zG1jrk`$y9`?`18f`Kql!lqf)d1AC+oY=Ov9afg-IKqH5CVT2ntiNkK8*f1R&n{T(( zRa8sX7-VjB)Kt|DL7Gp(Ho@o+UW=-^C|%7 zLXbQ!{a=wISZ_q$Ku`&LYGRU5u`S1Fp$VTUl&0}?C6&!$0hxrVt6WCq{plc6OF)l~ z0!xcb=9!ofvEs%fL8Y+6{>l^b_2fV*#`ow9avdx*Dacqp^Qh!w(`<5-UZz6fzZ;;0 z@X5lQ(Sm?r;C?2Mp2&nb(`t1)(&6baF*JHN(8rzTBaEtCY@c}VP2p#{^nu=LwRV&y z-yE+*k}eH)*Cm!6c_dspdym}a@2DK#a_eB4(CqR~p@cwkxuBY%!Pj&jNzM@DA# zOwh_+t|7r3xxTXID#}S(w-#~=|6hhbJTdy9Z*_i0WsUO6!Hoh!tP!4qAY_^BXv27= zu(UsK3AHf-V8d7fIdaj%Ee>j`~%S zQ+BuPt9l|_9GTwlY0iO|RY4YON&YPJAZwH&H*2`T@|9#Yk1MLt2_IGprUm6KYRTu&2~hQ~-@~ru ikur}BLKVa3z_H?V^SthL5ZL3wmHCTVzVe7L@%(=QM9r-L literal 341761 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 SMbg?BG$54XvP`G!K&e)#- diff --git a/trunk/paradiseo-mo/doc/html/search.php b/trunk/paradiseo-mo/doc/html/search.php index 20bf8b6aa..ea14d1caf 100644 --- a/trunk/paradiseo-mo/doc/html/search.php +++ b/trunk/paradiseo-mo/doc/html/search.php @@ -374,7 +374,7 @@ main(); ?> -
    Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by  +
    Generated on Tue Jul 31 13:43:23 2007 for PARADISEO-MO by  doxygen 1.5.2
    diff --git a/trunk/paradiseo-mo/doc/html/tree.html b/trunk/paradiseo-mo/doc/html/tree.html index 14d9c2e8e..b8960b17b 100644 --- a/trunk/paradiseo-mo/doc/html/tree.html +++ b/trunk/paradiseo-mo/doc/html/tree.html @@ -73,6 +73,7 @@

    |o*moCoolingSchedule

    |o*moExponentialCoolingSchedule

    |o*moFirstImprSelect< M >

    +

    |o*moFitSolContinue< EOT >

    |o*moGenSolContinue< EOT >

    |o*moHC< M >

    |o*moHCMoveLoopExpl< M >

    @@ -88,12 +89,14 @@

    |o*moMoveSelect< M >

    |o*moNextMove< M >

    |o*moNoAspirCrit< M >

    +

    |o*moNoFitImprSolContinue< EOT >

    |o*moRandImprSelect< M >

    |o*moRandMove< M >

    |o*moSA< M >

    |o*moSimpleMoveTabuList< M >

    |o*moSimpleSolutionTabuList< M >

    |o*moSolContinue< EOT >

    +

    |o*moSteadyFitSolContinue< EOT >

    |o*moTabuList< M >

    |o*moTS< M >

    |\*moTSMoveLoopExpl< M >

    @@ -162,7 +165,10 @@

    ||o+eoUF< double &, bool > [external]

    @@ -219,6 +225,7 @@

     o*moCoolingSchedule.h

     o*moExponentialCoolingSchedule.h

     o*moFirstImprSelect.h

    +

     o*moFitSolContinue.h

     o*moGenSolContinue.h

     o*moHC.h

     o*moHCMoveLoopExpl.h

    @@ -234,12 +241,14 @@

     o*moMoveSelect.h

     o*moNextMove.h

     o*moNoAspirCrit.h

    +

     o*moNoFitImprSolContinue.h

     o*moRandImprSelect.h

     o*moRandMove.h

     o*moSA.h

     o*moSimpleMoveTabuList.h

     o*moSimpleSolutionTabuList.h

     o*moSolContinue.h

    +

     o*moSteadyFitSolContinue.h

     o*moTabuList.h

     o*moTS.h

     \*moTSMoveLoopExpl.h

    diff --git a/trunk/paradiseo-mo/doc/latex/annotated.tex b/trunk/paradiseo-mo/doc/latex/annotated.tex index d9ae06077..32bd0f949 100644 --- a/trunk/paradiseo-mo/doc/latex/annotated.tex +++ b/trunk/paradiseo-mo/doc/latex/annotated.tex @@ -7,7 +7,8 @@ Here are the classes, structs, unions and interfaces with brief descriptions:\be \item\contentsline{section}{{\bf moCoolingSchedule} (This class gives the description of a cooling schedule )}{\pageref{classmo_cooling_schedule}}{} \item\contentsline{section}{{\bf moExponentialCoolingSchedule} (One of the possible \doxyref{moCoolingSchedule}{p.}{classmo_cooling_schedule} )}{\pageref{classmo_exponential_cooling_schedule}}{} \item\contentsline{section}{{\bf moFirstImprSelect$<$ M $>$} (One possible \doxyref{moMoveSelect}{p.}{classmo_move_select} )}{\pageref{classmo_first_impr_select}}{} -\item\contentsline{section}{{\bf moGenSolContinue$<$ EOT $>$} (One possible stop criterion for a solution-based heuristic )}{\pageref{classmo_gen_sol_continue}}{} +\item\contentsline{section}{{\bf moFitSolContinue$<$ EOT $>$} (One possible stop criterion for a solution-based heuristic )}{\pageref{classmo_fit_sol_continue}}{} +\item\contentsline{section}{{\bf moGenSolContinue$<$ EOT $>$} (One possible stopping criterion for a solution-based heuristic )}{\pageref{classmo_gen_sol_continue}}{} \item\contentsline{section}{{\bf moHC$<$ M $>$} (Hill Climbing (HC) )}{\pageref{classmo_h_c}}{} \item\contentsline{section}{{\bf moHCMoveLoopExpl$<$ M $>$} (Iterative explorer used by a \doxyref{moHC}{p.}{classmo_h_c} )}{\pageref{classmo_h_c_move_loop_expl}}{} \item\contentsline{section}{{\bf moImprBestFitAspirCrit$<$ M $>$} (One of the possible \doxyref{moAspirCrit}{p.}{classmo_aspir_crit} )}{\pageref{classmo_impr_best_fit_aspir_crit}}{} @@ -22,12 +23,14 @@ Here are the classes, structs, unions and interfaces with brief descriptions:\be \item\contentsline{section}{{\bf moMoveSelect$<$ M $>$} (Class that describes a move selector (\doxyref{moMove}{p.}{classmo_move}) )}{\pageref{classmo_move_select}}{} \item\contentsline{section}{{\bf moNextMove$<$ M $>$} (Class which allows to generate a new move (\doxyref{moMove}{p.}{classmo_move}) )}{\pageref{classmo_next_move}}{} \item\contentsline{section}{{\bf moNoAspirCrit$<$ M $>$} (One of the possible aspiration criterion (\doxyref{moAspirCrit}{p.}{classmo_aspir_crit}) )}{\pageref{classmo_no_aspir_crit}}{} +\item\contentsline{section}{{\bf moNoFitImprSolContinue$<$ EOT $>$} (One possible stop criterion for a solution-based heuristic )}{\pageref{classmo_no_fit_impr_sol_continue}}{} \item\contentsline{section}{{\bf moRandImprSelect$<$ M $>$} (One of the possible \doxyref{moMove}{p.}{classmo_move} selector (\doxyref{moMoveSelect}{p.}{classmo_move_select}) )}{\pageref{classmo_rand_impr_select}}{} \item\contentsline{section}{{\bf moRandMove$<$ M $>$} (Random move generator )}{\pageref{classmo_rand_move}}{} \item\contentsline{section}{{\bf moSA$<$ M $>$} (Simulated Annealing (SA) )}{\pageref{classmo_s_a}}{} \item\contentsline{section}{{\bf moSimpleMoveTabuList$<$ M $>$} (Class describing a move tabu list with a limited memory )}{\pageref{classmo_simple_move_tabu_list}}{} \item\contentsline{section}{{\bf moSimpleSolutionTabuList$<$ M $>$} (Class describing a solution tabu list with limited length )}{\pageref{classmo_simple_solution_tabu_list}}{} -\item\contentsline{section}{{\bf moSolContinue$<$ EOT $>$} (Class that describes a stop criterion for a solution-based heuristic )}{\pageref{classmo_sol_continue}}{} +\item\contentsline{section}{{\bf moSolContinue$<$ EOT $>$} (Class that describes a stopping criterion for a solution-based heuristic )}{\pageref{classmo_sol_continue}}{} +\item\contentsline{section}{{\bf moSteadyFitSolContinue$<$ EOT $>$} (One possible stopping criterion for a solution-based heuristic )}{\pageref{classmo_steady_fit_sol_continue}}{} \item\contentsline{section}{{\bf moTabuList$<$ M $>$} (Class describing a tabu list that a \doxyref{moTS}{p.}{classmo_t_s} uses )}{\pageref{classmo_tabu_list}}{} \item\contentsline{section}{{\bf moTS$<$ M $>$} (Tabu Search (TS) )}{\pageref{classmo_t_s}}{} \item\contentsline{section}{{\bf moTSMoveLoopExpl$<$ M $>$} (Explorer for a Tabu Search algorithm )}{\pageref{classmo_t_s_move_loop_expl}}{} diff --git a/trunk/paradiseo-mo/doc/latex/classmo_fit_sol_continue.eps b/trunk/paradiseo-mo/doc/latex/classmo_fit_sol_continue.eps new file mode 100644 index 000000000..020df214d --- /dev/null +++ b/trunk/paradiseo-mo/doc/latex/classmo_fit_sol_continue.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 441.989 +%%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.13125 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 +(moFitSolContinue< EOT >) cw +(moSolContinue< EOT >) cw +(eoUF< const EOT &, 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 ----- + + (moFitSolContinue< EOT >) 0 0 box + (moSolContinue< EOT >) 0 1 box + (eoUF< const EOT &, bool >) 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/trunk/paradiseo-mo/doc/latex/classmo_fit_sol_continue.tex b/trunk/paradiseo-mo/doc/latex/classmo_fit_sol_continue.tex new file mode 100644 index 000000000..a62b6440c --- /dev/null +++ b/trunk/paradiseo-mo/doc/latex/classmo_fit_sol_continue.tex @@ -0,0 +1,109 @@ +\section{moFitSolContinue$<$ EOT $>$ Class Template Reference} +\label{classmo_fit_sol_continue}\index{moFitSolContinue@{moFitSolContinue}} +One possible stop criterion for a solution-based heuristic. + + +{\tt \#include $<$moFitSolContinue.h$>$} + +Inheritance diagram for moFitSolContinue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_fit_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_fit_sol_continue_369ed94a788d8bdc08d5554f7669376f} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moFitSolContinue} ({\bf Fitness} \_\-\_\-fitness, bool \_\-\_\-maximization=true) +\begin{CompactList}\small\item\em Basic constructor. \item\end{CompactList}\item +bool {\bf operator()} (const EOT \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function that activates the stopping criterion. \item\end{CompactList}\item +void {\bf init} ()\label{classmo_fit_sol_continue_670bd895b4edfcd3aebb40d2295d7f7c} + +\begin{CompactList}\small\item\em Procedure which allows to initialise all the stuff needed. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf Fitness} {\bf fitness}\label{classmo_fit_sol_continue_87d0ba8f2f76f61c89317eed5f094dfc} + +\begin{CompactList}\small\item\em Fitness target. \item\end{CompactList}\item +bool {\bf maximization} +\begin{CompactList}\small\item\em Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moFitSolContinue$<$ EOT $>$} + +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a fitness threshold gained. + + + +Definition at line 21 of file moFitSolContinue.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moFitSolContinue@{moFitSolContinue}!moFitSolContinue@{moFitSolContinue}} +\index{moFitSolContinue@{moFitSolContinue}!moFitSolContinue@{moFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moFitSolContinue}$<$ EOT $>$::{\bf moFitSolContinue} ({\bf Fitness} {\em \_\-\_\-fitness}, bool {\em \_\-\_\-maximization} = {\tt true})\hspace{0.3cm}{\tt [inline]}}\label{classmo_fit_sol_continue_5af29ede3794a7a73d8f6b0d9ebccc80} + + +Basic constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-fitness}]The fitness to reach. \item[{\em \_\-\_\-maximization}]Indicate if the the aim is to maximize or minimize the fitness. \end{description} +\end{Desc} + + +Definition at line 34 of file moFitSolContinue.h. + +\subsection{Member Function Documentation} +\index{moFitSolContinue@{moFitSolContinue}!operator()@{operator()}} +\index{operator()@{operator()}!moFitSolContinue@{moFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moFitSolContinue}$<$ EOT $>$::operator() (const EOT \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_fit_sol_continue_fa9f0a15f99c998115cae9b456403a27} + + +Function that activates the stopping criterion. + +Indicates if the fitness threshold has not been yet reached. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-sol}]the current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true or false according to the value of the fitness. \end{Desc} + + +Implements {\bf eoUF$<$ const EOT \&, bool $>$}. + +Definition at line 44 of file moFitSolContinue.h. + +References moFitSolContinue$<$ EOT $>$::fitness, and moFitSolContinue$<$ EOT $>$::maximization. + +\subsection{Member Data Documentation} +\index{moFitSolContinue@{moFitSolContinue}!maximization@{maximization}} +\index{maximization@{maximization}!moFitSolContinue@{moFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moFitSolContinue}$<$ EOT $>$::{\bf maximization}\hspace{0.3cm}{\tt [private]}}\label{classmo_fit_sol_continue_d686a52cbcaa57924a585c7c90456612} + + +Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. + +It can be interesting to know this information because some solution-based metaheuristics can generate solution with a fitness that is worse that the best known fitness (in this case, the counter is not reinitialized). + +Definition at line 72 of file moFitSolContinue.h. + +Referenced by moFitSolContinue$<$ EOT $>$::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moFitSolContinue.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/doc/latex/classmo_gen_sol_continue.tex b/trunk/paradiseo-mo/doc/latex/classmo_gen_sol_continue.tex index 19c044b84..97c2f7744 100644 --- a/trunk/paradiseo-mo/doc/latex/classmo_gen_sol_continue.tex +++ b/trunk/paradiseo-mo/doc/latex/classmo_gen_sol_continue.tex @@ -1,6 +1,6 @@ \section{moGenSolContinue$<$ EOT $>$ Class Template Reference} \label{classmo_gen_sol_continue}\index{moGenSolContinue@{moGenSolContinue}} -One possible stop criterion for a solution-based heuristic. +One possible stopping criterion for a solution-based heuristic. {\tt \#include $<$moGenSolContinue.h$>$} @@ -15,11 +15,12 @@ Inheritance diagram for moGenSolContinue$<$ EOT $>$::\begin{figure}[H] \begin{CompactItemize} \item {\bf moGenSolContinue} (unsigned int \_\-\_\-maxNumGen) -\begin{CompactList}\small\item\em Simple constructor. \item\end{CompactList}\item +\begin{CompactList}\small\item\em Basic constructor. \item\end{CompactList}\item bool {\bf operator()} (const EOT \&\_\-\_\-sol) \begin{CompactList}\small\item\em Function that activates the stop criterion. \item\end{CompactList}\item -void {\bf init} () -\begin{CompactList}\small\item\em Procedure which allows to initialise the generation counter. \item\end{CompactList}\end{CompactItemize} +void {\bf init} ()\label{classmo_gen_sol_continue_6c5db8182157584b56507cc9075602d4} + +\begin{CompactList}\small\item\em Procedure which allows to initialise all the stuff needed. \item\end{CompactList}\end{CompactItemize} \subsection*{Private Attributes} \begin{CompactItemize} \item @@ -34,9 +35,9 @@ unsigned int {\bf numGen}\label{classmo_gen_sol_continue_630d9736a3a2c952540cdc2 \subsection{Detailed Description} \subsubsection*{template$<$class EOT$>$ class moGenSolContinue$<$ EOT $>$} -One possible stop criterion for a solution-based heuristic. +One possible stopping criterion for a solution-based heuristic. -The stop criterion corresponds to a maximum number of iteration. +The stopping criterion corresponds to a maximum number of iteration. @@ -48,7 +49,7 @@ Definition at line 21 of file moGenSolContinue.h. \subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moGenSolContinue}$<$ EOT $>$::{\bf moGenSolContinue} (unsigned int {\em \_\-\_\-maxNumGen})\hspace{0.3cm}{\tt [inline]}}\label{classmo_gen_sol_continue_b56e890f1caa3f98e161c6512b59c95b} -Simple constructor. +Basic constructor. \begin{Desc} \item[Parameters:] @@ -67,7 +68,7 @@ Definition at line 30 of file moGenSolContinue.h. Function that activates the stop criterion. -Increments the counter and returns TRUE if the current number of iteration is lower than the given maximum number of iterations. +Increments the counter and returns true if the current number of iteration is lower than the given maximum number of iterations. \begin{Desc} \item[Parameters:] @@ -75,27 +76,14 @@ Increments the counter and returns TRUE if the current number of iteration is lo \item[{\em \_\-\_\-sol}]the current solution. \end{description} \end{Desc} \begin{Desc} -\item[Returns:]TRUE or FALSE according to the current generation number. \end{Desc} +\item[Returns:]true or false according to the current generation number. \end{Desc} Implements {\bf eoUF$<$ const EOT \&, bool $>$}. -Definition at line 44 of file moGenSolContinue.h. +Definition at line 42 of file moGenSolContinue.h. -References moGenSolContinue$<$ EOT $>$::maxNumGen, and moGenSolContinue$<$ EOT $>$::numGen.\index{moGenSolContinue@{moGenSolContinue}!init@{init}} -\index{init@{init}!moGenSolContinue@{moGenSolContinue}} -\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf moGenSolContinue}$<$ EOT $>$::init ()\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_gen_sol_continue_6c5db8182157584b56507cc9075602d4} - - -Procedure which allows to initialise the generation counter. - -It can also be used to reset the iteration counter. - -Implements {\bf moSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_sol_continue_064dc966a210f4ffb9515be3f03ca4c7}. - -Definition at line 54 of file moGenSolContinue.h. - -References moGenSolContinue$<$ EOT $>$::numGen. +References moGenSolContinue$<$ EOT $>$::maxNumGen, and moGenSolContinue$<$ EOT $>$::numGen. The documentation for this class was generated from the following file:\begin{CompactItemize} \item diff --git a/trunk/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.eps b/trunk/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.eps new file mode 100644 index 000000000..67d7d5048 --- /dev/null +++ b/trunk/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.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 386.473 +%%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.29375 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 +(moNoFitImprSolContinue< EOT >) cw +(moSolContinue< EOT >) cw +(eoUF< const EOT &, 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 ----- + + (moNoFitImprSolContinue< EOT >) 0 0 box + (moSolContinue< EOT >) 0 1 box + (eoUF< const EOT &, bool >) 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/trunk/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.tex b/trunk/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.tex new file mode 100644 index 000000000..e5ad48091 --- /dev/null +++ b/trunk/paradiseo-mo/doc/latex/classmo_no_fit_impr_sol_continue.tex @@ -0,0 +1,116 @@ +\section{moNoFitImprSolContinue$<$ EOT $>$ Class Template Reference} +\label{classmo_no_fit_impr_sol_continue}\index{moNoFitImprSolContinue@{moNoFitImprSolContinue}} +One possible stop criterion for a solution-based heuristic. + + +{\tt \#include $<$moNoFitImprSolContinue.h$>$} + +Inheritance diagram for moNoFitImprSolContinue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_no_fit_impr_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_no_fit_impr_sol_continue_64c184de66bb37d75d53aa600ac947b3} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moNoFitImprSolContinue} (unsigned int \_\-\_\-maxNumberOfIterationWithoutImprovment, bool \_\-\_\-maximization=true) +\begin{CompactList}\small\item\em Basic constructor. \item\end{CompactList}\item +bool {\bf operator()} (const EOT \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function that activates the stopping criterion. \item\end{CompactList}\item +void {\bf init} ()\label{classmo_no_fit_impr_sol_continue_21641c0a38a4501baae6133cbc591de4} + +\begin{CompactList}\small\item\em Procedure which allows to initialise all the stuff needed. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int {\bf maxNumberOfIterationsWithoutImprovment}\label{classmo_no_fit_impr_sol_continue_9dbd725a2dab787f9f7b159b759e4834} + +\begin{CompactList}\small\item\em Maximum number of iterations without improvment allowed. \item\end{CompactList}\item +bool {\bf firstFitnessSaved}\label{classmo_no_fit_impr_sol_continue_ca3591e47a075b59e0826f31234c71ef} + +\begin{CompactList}\small\item\em Flag that this is the first time that the fitness is used. \item\end{CompactList}\item +{\bf Fitness} {\bf fitness}\label{classmo_no_fit_impr_sol_continue_3d3d2b43a4dd73e38689cc0018d44ee7} + +\begin{CompactList}\small\item\em Current Fitness. \item\end{CompactList}\item +bool {\bf maximization} +\begin{CompactList}\small\item\em Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. \item\end{CompactList}\item +unsigned int {\bf counter}\label{classmo_no_fit_impr_sol_continue_46fc008a8f7cd06dcaaeb4016b433adb} + +\begin{CompactList}\small\item\em The iteration couter. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moNoFitImprSolContinue$<$ EOT $>$} + +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iterations without improvement. + + + +Definition at line 21 of file moNoFitImprSolContinue.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moNoFitImprSolContinue@{moNoFitImprSolContinue}!moNoFitImprSolContinue@{moNoFitImprSolContinue}} +\index{moNoFitImprSolContinue@{moNoFitImprSolContinue}!moNoFitImprSolContinue@{moNoFitImprSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moNoFitImprSolContinue}$<$ EOT $>$::{\bf moNoFitImprSolContinue} (unsigned int {\em \_\-\_\-maxNumberOfIterationWithoutImprovment}, bool {\em \_\-\_\-maximization} = {\tt true})\hspace{0.3cm}{\tt [inline]}}\label{classmo_no_fit_impr_sol_continue_979c991cbae53e1fd596964837c8d32d} + + +Basic constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-maxNumberOfIterationWithoutImprovment}]The number of iterations without fitness improvment to reach for stop. \item[{\em \_\-\_\-maximization}]Indicate if the the aim is to maximize or minimize the fitness. \end{description} +\end{Desc} + + +Definition at line 34 of file moNoFitImprSolContinue.h. + +\subsection{Member Function Documentation} +\index{moNoFitImprSolContinue@{moNoFitImprSolContinue}!operator()@{operator()}} +\index{operator()@{operator()}!moNoFitImprSolContinue@{moNoFitImprSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moNoFitImprSolContinue}$<$ EOT $>$::operator() (const EOT \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_no_fit_impr_sol_continue_dbd663623cae56ec76ee504ecb226fed} + + +Function that activates the stopping criterion. + +Indicates if the fitness has not been improved since a given number of iterations (after a minimum of iterations). \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-sol}]the current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true or false. \end{Desc} + + +Implements {\bf eoUF$<$ const EOT \&, bool $>$}. + +Definition at line 45 of file moNoFitImprSolContinue.h. + +References moNoFitImprSolContinue$<$ EOT $>$::counter, moNoFitImprSolContinue$<$ EOT $>$::firstFitnessSaved, moNoFitImprSolContinue$<$ EOT $>$::fitness, moNoFitImprSolContinue$<$ EOT $>$::maximization, and moNoFitImprSolContinue$<$ EOT $>$::maxNumberOfIterationsWithoutImprovment. + +\subsection{Member Data Documentation} +\index{moNoFitImprSolContinue@{moNoFitImprSolContinue}!maximization@{maximization}} +\index{maximization@{maximization}!moNoFitImprSolContinue@{moNoFitImprSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moNoFitImprSolContinue}$<$ EOT $>$::{\bf maximization}\hspace{0.3cm}{\tt [private]}}\label{classmo_no_fit_impr_sol_continue_73295d6a4ad437b0ab06848ac24698c4} + + +Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. + +It can be interesting to know this information because some solution-based metaheuristics can generate solutions wiht a fitness that is worse that the best known fitness (in this case, the counter is not reinitialized). + +Definition at line 96 of file moNoFitImprSolContinue.h. + +Referenced by moNoFitImprSolContinue$<$ EOT $>$::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moNoFitImprSolContinue.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/doc/latex/classmo_sol_continue.eps b/trunk/paradiseo-mo/doc/latex/classmo_sol_continue.eps index c2a7fb9ca..3914bf1d9 100644 --- a/trunk/paradiseo-mo/doc/latex/classmo_sol_continue.eps +++ b/trunk/paradiseo-mo/doc/latex/classmo_sol_continue.eps @@ -5,7 +5,7 @@ %%For: %Magnification: 1.00 %%Orientation: Portrait -%%BoundingBox: 0 0 500 441.989 +%%BoundingBox: 0 0 500 96.6184 %%Pages: 0 %%BeginSetup %%EndSetup @@ -19,13 +19,13 @@ /marginwidth 10 def /distx 20 def /disty 40 def -/boundaspect 1.13125 def % aspect ratio of the BoundingBox (width/height) +/boundaspect 5.175 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 +/cols 4 def /scalefactor 0 def /boxfont /Times-Roman findfont fontheight scalefont def @@ -176,7 +176,10 @@ boxfont setfont (moSolContinue< EOT >) cw (eoUF< const EOT &, bool >) cw (eoFunctorBase) cw +(moFitSolContinue< EOT >) cw (moGenSolContinue< EOT >) cw +(moNoFitImprSolContinue< EOT >) cw +(moSteadyFitSolContinue< EOT >) cw /boxwidth boxwidth marginwidth 2 mul add def /xspacing boxwidth distx add def /yspacing boxheight disty add def @@ -188,22 +191,33 @@ boundx scalefactor div boundy scalefactor div scale % ----- classes ----- - (moSolContinue< EOT >) 0 1 box - (eoUF< const EOT &, bool >) 0 2 box - (eoFunctorBase) 0 3 box - (moGenSolContinue< EOT >) 0 0 box + (moSolContinue< EOT >) 1.5 1 box + (eoUF< const EOT &, bool >) 1.5 2 box + (eoFunctorBase) 1.5 3 box + (moFitSolContinue< EOT >) 0 0 box + (moGenSolContinue< EOT >) 1 0 box + (moNoFitImprSolContinue< EOT >) 2 0 box + (moSteadyFitSolContinue< EOT >) 3 0 box % ----- relations ----- solid -0 0 1 out +0 1.5 1 out solid -1 0 2 in +1 1.5 2 in solid -0 0 2 out +0 1.5 2 out solid -1 0 3 in +1 1.5 3 in solid -1 0 0.25 out +1 1.5 0.25 out +solid +0 3 1 conn solid 0 0 0.75 in +solid +0 1 0.75 in +solid +0 2 0.75 in +solid +0 3 0.75 in diff --git a/trunk/paradiseo-mo/doc/latex/classmo_sol_continue.tex b/trunk/paradiseo-mo/doc/latex/classmo_sol_continue.tex index bc98d68d9..262dbc62e 100644 --- a/trunk/paradiseo-mo/doc/latex/classmo_sol_continue.tex +++ b/trunk/paradiseo-mo/doc/latex/classmo_sol_continue.tex @@ -1,6 +1,6 @@ \section{moSolContinue$<$ EOT $>$ Class Template Reference} \label{classmo_sol_continue}\index{moSolContinue@{moSolContinue}} -Class that describes a stop criterion for a solution-based heuristic. +Class that describes a stopping criterion for a solution-based heuristic. {\tt \#include $<$moSolContinue.h$>$} @@ -8,20 +8,20 @@ Class that describes a stop criterion for a solution-based heuristic. Inheritance diagram for moSolContinue$<$ EOT $>$::\begin{figure}[H] \begin{center} \leavevmode -\includegraphics[height=4cm]{classmo_sol_continue} +\includegraphics[height=2.70531cm]{classmo_sol_continue} \end{center} \end{figure} \subsection*{Public Member Functions} \begin{CompactItemize} \item virtual void {\bf init} ()=0 -\begin{CompactList}\small\item\em Procedure which initialises all that the stop criterion needs. \item\end{CompactList}\end{CompactItemize} +\begin{CompactList}\small\item\em Procedure which initialises all that the stopping criterion needs. \item\end{CompactList}\end{CompactItemize} \subsection{Detailed Description} \subsubsection*{template$<$class EOT$>$ class moSolContinue$<$ EOT $>$} -Class that describes a stop criterion for a solution-based heuristic. +Class that describes a stopping criterion for a solution-based heuristic. It allows to add an initialisation procedure to an object that is a unary function ({\bf eoUF}). @@ -35,11 +35,11 @@ Definition at line 22 of file moSolContinue.h. \subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ virtual void {\bf moSolContinue}$<$ EOT $>$::init ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_sol_continue_064dc966a210f4ffb9515be3f03ca4c7} -Procedure which initialises all that the stop criterion needs. +Procedure which initialises all that the stopping criterion needs. Generally, it allocates some data structures or initialises some counters. -Implemented in {\bf moGenSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_gen_sol_continue_6c5db8182157584b56507cc9075602d4}. +Implemented in {\bf moFitSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_fit_sol_continue_670bd895b4edfcd3aebb40d2295d7f7c}, {\bf moGenSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_gen_sol_continue_6c5db8182157584b56507cc9075602d4}, {\bf moNoFitImprSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_no_fit_impr_sol_continue_21641c0a38a4501baae6133cbc591de4}, and {\bf moSteadyFitSolContinue$<$ EOT $>$} \doxyref{}{p.}{classmo_steady_fit_sol_continue_87563493addc8e4b58982c55a67179b9}. The documentation for this class was generated from the following file:\begin{CompactItemize} \item diff --git a/trunk/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.eps b/trunk/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.eps new file mode 100644 index 000000000..944e80b1e --- /dev/null +++ b/trunk/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.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 388.35 +%%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.2875 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 +(moSteadyFitSolContinue< EOT >) cw +(moSolContinue< EOT >) cw +(eoUF< const EOT &, 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 ----- + + (moSteadyFitSolContinue< EOT >) 0 0 box + (moSolContinue< EOT >) 0 1 box + (eoUF< const EOT &, bool >) 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/trunk/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.tex b/trunk/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.tex new file mode 100644 index 000000000..407ce21ed --- /dev/null +++ b/trunk/paradiseo-mo/doc/latex/classmo_steady_fit_sol_continue.tex @@ -0,0 +1,124 @@ +\section{moSteadyFitSolContinue$<$ EOT $>$ Class Template Reference} +\label{classmo_steady_fit_sol_continue}\index{moSteadyFitSolContinue@{moSteadyFitSolContinue}} +One possible stopping criterion for a solution-based heuristic. + + +{\tt \#include $<$moSteadyFitSolContinue.h$>$} + +Inheritance diagram for moSteadyFitSolContinue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4cm]{classmo_steady_fit_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_steady_fit_sol_continue_c289721abbbafe50f6e3b8305dd31007} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf moSteadyFitSolContinue} (unsigned int \_\-\_\-maxNumberOfIterations, unsigned int \_\-\_\-maxNumberOfIterationWithoutImprovment, bool \_\-\_\-maximization=true) +\begin{CompactList}\small\item\em Basic constructor. \item\end{CompactList}\item +bool {\bf operator()} (const EOT \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function that activates the stopping criterion. \item\end{CompactList}\item +void {\bf init} ()\label{classmo_steady_fit_sol_continue_87563493addc8e4b58982c55a67179b9} + +\begin{CompactList}\small\item\em Procedure which allows to initialise the stuff needed. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned int {\bf maxNumberOfIterations}\label{classmo_steady_fit_sol_continue_36b43c2a252887ad027165ac32393fe8} + +\begin{CompactList}\small\item\em Maximum number of iterations before considering the fitness. \item\end{CompactList}\item +unsigned int {\bf maxNumberOfIterationsWithoutImprovment}\label{classmo_steady_fit_sol_continue_92a3ea5b6752938b159257f8c6c62580} + +\begin{CompactList}\small\item\em Maximum number of iterations without improvment allowed. \item\end{CompactList}\item +bool {\bf maxNumberOfIterationsReached}\label{classmo_steady_fit_sol_continue_7d88c0eb91b2a12121ba1c3ae9139887} + +\begin{CompactList}\small\item\em Flag that indicates that the maxNumberIteration have been reached. \item\end{CompactList}\item +bool {\bf firstFitnessSaved}\label{classmo_steady_fit_sol_continue_025bf2789e470fdde989eee9121035c3} + +\begin{CompactList}\small\item\em Flag that this is the first time that the fitness is used. \item\end{CompactList}\item +{\bf Fitness} {\bf fitness}\label{classmo_steady_fit_sol_continue_a5c62e7049b36f6e71e92b559568c09e} + +\begin{CompactList}\small\item\em Current Fitness. \item\end{CompactList}\item +bool {\bf maximization} +\begin{CompactList}\small\item\em Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. \item\end{CompactList}\item +unsigned int {\bf counter}\label{classmo_steady_fit_sol_continue_245c9099a2c40dfc4f34b3ff216d13ce} + +\begin{CompactList}\small\item\em The iteration couter. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class moSteadyFitSolContinue$<$ EOT $>$} + +One possible stopping criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iterations without improvement (after a minimum number of iterations). + + + +Definition at line 21 of file moSteadyFitSolContinue.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moSteadyFitSolContinue@{moSteadyFitSolContinue}!moSteadyFitSolContinue@{moSteadyFitSolContinue}} +\index{moSteadyFitSolContinue@{moSteadyFitSolContinue}!moSteadyFitSolContinue@{moSteadyFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf moSteadyFitSolContinue}$<$ EOT $>$::{\bf moSteadyFitSolContinue} (unsigned int {\em \_\-\_\-maxNumberOfIterations}, unsigned int {\em \_\-\_\-maxNumberOfIterationWithoutImprovment}, bool {\em \_\-\_\-maximization} = {\tt true})\hspace{0.3cm}{\tt [inline]}}\label{classmo_steady_fit_sol_continue_bde46266638f645d409cf1afb7190c19} + + +Basic constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-maxNumberOfIterations}]The number of iterations to reach before looking for the fitness. \item[{\em \_\-\_\-maxNumberOfIterationWithoutImprovment}]The number of iterations without fitness improvment to reach for stop. \item[{\em \_\-\_\-maximization}]Indicate if the the aim is to maximize or minimize the fitness. \end{description} +\end{Desc} + + +Definition at line 35 of file moSteadyFitSolContinue.h. + +\subsection{Member Function Documentation} +\index{moSteadyFitSolContinue@{moSteadyFitSolContinue}!operator()@{operator()}} +\index{operator()@{operator()}!moSteadyFitSolContinue@{moSteadyFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moSteadyFitSolContinue}$<$ EOT $>$::operator() (const EOT \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_steady_fit_sol_continue_942e58ec00bb61000a83c80176e14bc3} + + +Function that activates the stopping criterion. + +Indicates if the fitness has not been improved since a number of iterations (after a minimum of iterations). + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-sol}]the current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]true or false. \end{Desc} + + +Implements {\bf eoUF$<$ const EOT \&, bool $>$}. + +Definition at line 47 of file moSteadyFitSolContinue.h. + +References moSteadyFitSolContinue$<$ EOT $>$::counter, moSteadyFitSolContinue$<$ EOT $>$::firstFitnessSaved, moSteadyFitSolContinue$<$ EOT $>$::fitness, moSteadyFitSolContinue$<$ EOT $>$::maximization, moSteadyFitSolContinue$<$ EOT $>$::maxNumberOfIterations, moSteadyFitSolContinue$<$ EOT $>$::maxNumberOfIterationsReached, and moSteadyFitSolContinue$<$ EOT $>$::maxNumberOfIterationsWithoutImprovment. + +\subsection{Member Data Documentation} +\index{moSteadyFitSolContinue@{moSteadyFitSolContinue}!maximization@{maximization}} +\index{maximization@{maximization}!moSteadyFitSolContinue@{moSteadyFitSolContinue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf moSteadyFitSolContinue}$<$ EOT $>$::{\bf maximization}\hspace{0.3cm}{\tt [private]}}\label{classmo_steady_fit_sol_continue_cc54de2c6f32b650e5a7ee36efc1ba73} + + +Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. + +It can be interesting to know this information because some solution-based metaheuristics can generate solution with a fitness that is worse that the best known fitness (in this case, the counter is not reinitialized). + +Definition at line 114 of file moSteadyFitSolContinue.h. + +Referenced by moSteadyFitSolContinue$<$ EOT $>$::operator()(). + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +moSteadyFitSolContinue.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/doc/latex/doxygen.sty b/trunk/paradiseo-mo/doc/latex/doxygen.sty index cca9cf2eb..c6036e2f2 100644 --- a/trunk/paradiseo-mo/doc/latex/doxygen.sty +++ b/trunk/paradiseo-mo/doc/latex/doxygen.sty @@ -10,8 +10,8 @@ {\fancyplain{}{\bfseries\rightmark}} \rhead[\fancyplain{}{\bfseries\leftmark}] {\fancyplain{}{\bfseries\thepage}} -\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by Doxygen }]{} -\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Fri Jul 6 17:23:18 2007 for PARADISEO-MO by Doxygen }} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Tue Jul 31 13:43:22 2007 for PARADISEO-MO by Doxygen }} \cfoot{} \newenvironment{Code} {\footnotesize} diff --git a/trunk/paradiseo-mo/doc/latex/hierarchy.tex b/trunk/paradiseo-mo/doc/latex/hierarchy.tex index 66deba8dc..cc114dc6a 100644 --- a/trunk/paradiseo-mo/doc/latex/hierarchy.tex +++ b/trunk/paradiseo-mo/doc/latex/hierarchy.tex @@ -52,7 +52,10 @@ This inheritance list is sorted roughly, but not completely, alphabetically:\beg \item eoUF$<$ const EOT \&, bool $>${\tt [external]}\begin{CompactList} \item \contentsline{section}{moSolContinue$<$ EOT $>$}{\pageref{classmo_sol_continue}}{} \begin{CompactList} +\item \contentsline{section}{moFitSolContinue$<$ EOT $>$}{\pageref{classmo_fit_sol_continue}}{} \item \contentsline{section}{moGenSolContinue$<$ EOT $>$}{\pageref{classmo_gen_sol_continue}}{} +\item \contentsline{section}{moNoFitImprSolContinue$<$ EOT $>$}{\pageref{classmo_no_fit_impr_sol_continue}}{} +\item \contentsline{section}{moSteadyFitSolContinue$<$ EOT $>$}{\pageref{classmo_steady_fit_sol_continue}}{} \end{CompactList} \end{CompactList} \item eoUF$<$ double \&, bool $>${\tt [external]}\begin{CompactList} diff --git a/trunk/paradiseo-mo/doc/latex/refman.tex b/trunk/paradiseo-mo/doc/latex/refman.tex index 8bfca074c..81998982c 100644 --- a/trunk/paradiseo-mo/doc/latex/refman.tex +++ b/trunk/paradiseo-mo/doc/latex/refman.tex @@ -20,7 +20,7 @@ \vspace*{1cm} {\large Generated by Doxygen 1.5.2}\\ \vspace*{0.5cm} -{\small Fri Jul 6 17:23:18 2007}\\ +{\small Tue Jul 31 13:43:22 2007}\\ \end{center} \end{titlepage} \clearemptydoublepage @@ -42,6 +42,7 @@ \include{classmo_cooling_schedule} \include{classmo_exponential_cooling_schedule} \include{classmo_first_impr_select} +\include{classmo_fit_sol_continue} \include{classmo_gen_sol_continue} \include{classmo_h_c} \include{classmo_h_c_move_loop_expl} @@ -57,12 +58,14 @@ \include{classmo_move_select} \include{classmo_next_move} \include{classmo_no_aspir_crit} +\include{classmo_no_fit_impr_sol_continue} \include{classmo_rand_impr_select} \include{classmo_rand_move} \include{classmo_s_a} \include{classmo_simple_move_tabu_list} \include{classmo_simple_solution_tabu_list} \include{classmo_sol_continue} +\include{classmo_steady_fit_sol_continue} \include{classmo_tabu_list} \include{classmo_t_s} \include{classmo_t_s_move_loop_expl} diff --git a/trunk/paradiseo-mo/doc/man/man3/EmptySelection.3 b/trunk/paradiseo-mo/doc/man/man3/EmptySelection.3 index 775ecd2a0..9c9947252 100644 --- a/trunk/paradiseo-mo/doc/man/man3/EmptySelection.3 +++ b/trunk/paradiseo-mo/doc/man/man3/EmptySelection.3 @@ -1,4 +1,4 @@ -.TH "EmptySelection" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "EmptySelection" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moAlgo.3 b/trunk/paradiseo-mo/doc/man/man3/moAlgo.3 index 5f53fcb2f..558786d90 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moAlgo.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moAlgo.3 @@ -1,4 +1,4 @@ -.TH "moAlgo" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moAlgo" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moAspirCrit.3 b/trunk/paradiseo-mo/doc/man/man3/moAspirCrit.3 index 2b6d6d7b9..f05886f41 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moAspirCrit.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moAspirCrit.3 @@ -1,4 +1,4 @@ -.TH "moAspirCrit" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moAspirCrit" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moBestImprSelect.3 b/trunk/paradiseo-mo/doc/man/man3/moBestImprSelect.3 index d8749d1a2..89810a924 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moBestImprSelect.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moBestImprSelect.3 @@ -1,4 +1,4 @@ -.TH "moBestImprSelect" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moBestImprSelect" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moCoolingSchedule.3 b/trunk/paradiseo-mo/doc/man/man3/moCoolingSchedule.3 index 1a4aa6538..e7d128d30 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moCoolingSchedule.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moCoolingSchedule.3 @@ -1,4 +1,4 @@ -.TH "moCoolingSchedule" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moCoolingSchedule" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moExponentialCoolingSchedule.3 b/trunk/paradiseo-mo/doc/man/man3/moExponentialCoolingSchedule.3 index 0879a5d03..1fc4f7f00 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moExponentialCoolingSchedule.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moExponentialCoolingSchedule.3 @@ -1,4 +1,4 @@ -.TH "moExponentialCoolingSchedule" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moExponentialCoolingSchedule" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moFirstImprSelect.3 b/trunk/paradiseo-mo/doc/man/man3/moFirstImprSelect.3 index 718b000a1..8124c7956 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moFirstImprSelect.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moFirstImprSelect.3 @@ -1,4 +1,4 @@ -.TH "moFirstImprSelect" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moFirstImprSelect" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moFitSolContinue.3 b/trunk/paradiseo-mo/doc/man/man3/moFitSolContinue.3 new file mode 100644 index 000000000..be6560730 --- /dev/null +++ b/trunk/paradiseo-mo/doc/man/man3/moFitSolContinue.3 @@ -0,0 +1,115 @@ +.TH "moFitSolContinue" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moFitSolContinue \- One possible stop criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoSolContinue< EOT >< EOT >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoFitSolContinue\fP (\fBFitness\fP __fitness, bool __maximization=true)" +.br +.RI "\fIBasic constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const EOT &__sol)" +.br +.RI "\fIFunction that activates the stopping criterion. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which allows to initialise all the stuff needed. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBFitness\fP \fBfitness\fP" +.br +.RI "\fIFitness target. \fP" +.ti -1c +.RI "bool \fBmaximization\fP" +.br +.RI "\fIFlag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moFitSolContinue< EOT >" +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a fitness threshold gained. +.PP +Definition at line 21 of file moFitSolContinue.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoFitSolContinue\fP< EOT >::\fBmoFitSolContinue\fP (\fBFitness\fP __fitness, bool __maximization = \fCtrue\fP)\fC [inline]\fP" +.PP +Basic constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI__fitness\fP The fitness to reach. +.br +\fI__maximization\fP Indicate if the the aim is to maximize or minimize the fitness. +.RE +.PP + +.PP +Definition at line 34 of file moFitSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoFitSolContinue\fP< EOT >::operator() (const EOT & __sol)\fC [inline, virtual]\fP" +.PP +Function that activates the stopping criterion. +.PP +Indicates if the fitness threshold has not been yet reached. +.PP +\fBParameters:\fP +.RS 4 +\fI__sol\fP the current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +true or false according to the value of the fitness. +.RE +.PP + +.PP +Implements \fBeoUF< const EOT &, bool >\fP. +.PP +Definition at line 44 of file moFitSolContinue.h. +.PP +References moFitSolContinue< EOT >::fitness, and moFitSolContinue< EOT >::maximization. +.SH "Member Data Documentation" +.PP +.SS "template bool \fBmoFitSolContinue\fP< EOT >::\fBmaximization\fP\fC [private]\fP" +.PP +Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. +.PP +It can be interesting to know this information because some solution-based metaheuristics can generate solution with a fitness that is worse that the best known fitness (in this case, the counter is not reinitialized). +.PP +Definition at line 72 of file moFitSolContinue.h. +.PP +Referenced by moFitSolContinue< EOT >::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/doc/man/man3/moGenSolContinue.3 b/trunk/paradiseo-mo/doc/man/man3/moGenSolContinue.3 index 9f61aa6ed..576685d4a 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moGenSolContinue.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moGenSolContinue.3 @@ -1,8 +1,8 @@ -.TH "moGenSolContinue" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moGenSolContinue" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME -moGenSolContinue \- One possible stop criterion for a solution-based heuristic. +moGenSolContinue \- One possible stopping criterion for a solution-based heuristic. .PP .SH SYNOPSIS @@ -18,7 +18,7 @@ Inherits \fBmoSolContinue< EOT >< EOT >\fP. .ti -1c .RI "\fBmoGenSolContinue\fP (unsigned int __maxNumGen)" .br -.RI "\fISimple constructor. \fP" +.RI "\fIBasic constructor. \fP" .ti -1c .RI "bool \fBoperator()\fP (const EOT &__sol)" .br @@ -26,7 +26,7 @@ Inherits \fBmoSolContinue< EOT >< EOT >\fP. .ti -1c .RI "void \fBinit\fP ()" .br -.RI "\fIProcedure which allows to initialise the generation counter. \fP" +.RI "\fIProcedure which allows to initialise all the stuff needed. \fP" .in -1c .SS "Private Attributes" @@ -44,16 +44,16 @@ Inherits \fBmoSolContinue< EOT >< EOT >\fP. .PP .SS "template class moGenSolContinue< EOT >" -One possible stop criterion for a solution-based heuristic. +One possible stopping criterion for a solution-based heuristic. -The stop criterion corresponds to a maximum number of iteration. +The stopping criterion corresponds to a maximum number of iteration. .PP Definition at line 21 of file moGenSolContinue.h. .SH "Constructor & Destructor Documentation" .PP .SS "template \fBmoGenSolContinue\fP< EOT >::\fBmoGenSolContinue\fP (unsigned int __maxNumGen)\fC [inline]\fP" .PP -Simple constructor. +Basic constructor. .PP \fBParameters:\fP .RS 4 @@ -69,7 +69,7 @@ Definition at line 30 of file moGenSolContinue.h. .PP Function that activates the stop criterion. .PP -Increments the counter and returns TRUE if the current number of iteration is lower than the given maximum number of iterations. +Increments the counter and returns true if the current number of iteration is lower than the given maximum number of iterations. .PP \fBParameters:\fP .RS 4 @@ -78,27 +78,16 @@ Increments the counter and returns TRUE if the current number of iteration is lo .PP \fBReturns:\fP .RS 4 -TRUE or FALSE according to the current generation number. +true or false according to the current generation number. .RE .PP .PP Implements \fBeoUF< const EOT &, bool >\fP. .PP -Definition at line 44 of file moGenSolContinue.h. +Definition at line 42 of file moGenSolContinue.h. .PP References moGenSolContinue< EOT >::maxNumGen, and moGenSolContinue< EOT >::numGen. -.SS "template void \fBmoGenSolContinue\fP< EOT >::init ()\fC [inline, virtual]\fP" -.PP -Procedure which allows to initialise the generation counter. -.PP -It can also be used to reset the iteration counter. -.PP -Implements \fBmoSolContinue< EOT >\fP. -.PP -Definition at line 54 of file moGenSolContinue.h. -.PP -References moGenSolContinue< EOT >::numGen. .SH "Author" .PP diff --git a/trunk/paradiseo-mo/doc/man/man3/moHC.3 b/trunk/paradiseo-mo/doc/man/man3/moHC.3 index 70f1222c8..b7078db1f 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moHC.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moHC.3 @@ -1,4 +1,4 @@ -.TH "moHC" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moHC" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moHCMoveLoopExpl.3 b/trunk/paradiseo-mo/doc/man/man3/moHCMoveLoopExpl.3 index fe9ac40f4..d8e8b57b9 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moHCMoveLoopExpl.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moHCMoveLoopExpl.3 @@ -1,4 +1,4 @@ -.TH "moHCMoveLoopExpl" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moHCMoveLoopExpl" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moImprBestFitAspirCrit.3 b/trunk/paradiseo-mo/doc/man/man3/moImprBestFitAspirCrit.3 index fd6fbbde8..2a47d0e43 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moImprBestFitAspirCrit.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moImprBestFitAspirCrit.3 @@ -1,4 +1,4 @@ -.TH "moImprBestFitAspirCrit" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moImprBestFitAspirCrit" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moItRandNextMove.3 b/trunk/paradiseo-mo/doc/man/man3/moItRandNextMove.3 index 056367846..299fe73b3 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moItRandNextMove.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moItRandNextMove.3 @@ -1,4 +1,4 @@ -.TH "moItRandNextMove" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moItRandNextMove" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moLSCheckPoint.3 b/trunk/paradiseo-mo/doc/man/man3/moLSCheckPoint.3 index cb9dcfc4e..6bdb92f06 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moLSCheckPoint.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moLSCheckPoint.3 @@ -1,4 +1,4 @@ -.TH "moLSCheckPoint" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moLSCheckPoint" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moLinearCoolingSchedule.3 b/trunk/paradiseo-mo/doc/man/man3/moLinearCoolingSchedule.3 index d0879534f..fbb186adc 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moLinearCoolingSchedule.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moLinearCoolingSchedule.3 @@ -1,4 +1,4 @@ -.TH "moLinearCoolingSchedule" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moLinearCoolingSchedule" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moMove.3 b/trunk/paradiseo-mo/doc/man/man3/moMove.3 index 3232ee1ce..dc24e6b20 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moMove.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moMove.3 @@ -1,4 +1,4 @@ -.TH "moMove" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moMove" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moMoveExpl.3 b/trunk/paradiseo-mo/doc/man/man3/moMoveExpl.3 index 6090b07c8..6237353ba 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moMoveExpl.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moMoveExpl.3 @@ -1,4 +1,4 @@ -.TH "moMoveExpl" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moMoveExpl" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moMoveIncrEval.3 b/trunk/paradiseo-mo/doc/man/man3/moMoveIncrEval.3 index e6263650a..e996a406f 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moMoveIncrEval.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moMoveIncrEval.3 @@ -1,4 +1,4 @@ -.TH "moMoveIncrEval" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moMoveIncrEval" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moMoveInit.3 b/trunk/paradiseo-mo/doc/man/man3/moMoveInit.3 index c96403f6b..a22ccbf61 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moMoveInit.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moMoveInit.3 @@ -1,4 +1,4 @@ -.TH "moMoveInit" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moMoveInit" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moMoveLoopExpl.3 b/trunk/paradiseo-mo/doc/man/man3/moMoveLoopExpl.3 index 3c53f0b3a..fec93623b 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moMoveLoopExpl.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moMoveLoopExpl.3 @@ -1,4 +1,4 @@ -.TH "moMoveLoopExpl" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moMoveLoopExpl" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moMoveSelect.3 b/trunk/paradiseo-mo/doc/man/man3/moMoveSelect.3 index f01d62530..1168ba46b 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moMoveSelect.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moMoveSelect.3 @@ -1,4 +1,4 @@ -.TH "moMoveSelect" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moMoveSelect" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moNextMove.3 b/trunk/paradiseo-mo/doc/man/man3/moNextMove.3 index 4b70f19a3..7ddbbf561 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moNextMove.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moNextMove.3 @@ -1,4 +1,4 @@ -.TH "moNextMove" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moNextMove" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moNoAspirCrit.3 b/trunk/paradiseo-mo/doc/man/man3/moNoAspirCrit.3 index 854cccf66..53b9aff10 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moNoAspirCrit.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moNoAspirCrit.3 @@ -1,4 +1,4 @@ -.TH "moNoAspirCrit" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moNoAspirCrit" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moNoFitImprSolContinue.3 b/trunk/paradiseo-mo/doc/man/man3/moNoFitImprSolContinue.3 new file mode 100644 index 000000000..bc9db5b8b --- /dev/null +++ b/trunk/paradiseo-mo/doc/man/man3/moNoFitImprSolContinue.3 @@ -0,0 +1,127 @@ +.TH "moNoFitImprSolContinue" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moNoFitImprSolContinue \- One possible stop criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoSolContinue< EOT >< EOT >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoNoFitImprSolContinue\fP (unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization=true)" +.br +.RI "\fIBasic constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const EOT &__sol)" +.br +.RI "\fIFunction that activates the stopping criterion. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which allows to initialise all the stuff needed. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBmaxNumberOfIterationsWithoutImprovment\fP" +.br +.RI "\fIMaximum number of iterations without improvment allowed. \fP" +.ti -1c +.RI "bool \fBfirstFitnessSaved\fP" +.br +.RI "\fIFlag that this is the first time that the fitness is used. \fP" +.ti -1c +.RI "\fBFitness\fP \fBfitness\fP" +.br +.RI "\fICurrent Fitness. \fP" +.ti -1c +.RI "bool \fBmaximization\fP" +.br +.RI "\fIFlag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. \fP" +.ti -1c +.RI "unsigned int \fBcounter\fP" +.br +.RI "\fIThe iteration couter. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moNoFitImprSolContinue< EOT >" +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iterations without improvement. +.PP +Definition at line 21 of file moNoFitImprSolContinue.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoNoFitImprSolContinue\fP< EOT >::\fBmoNoFitImprSolContinue\fP (unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization = \fCtrue\fP)\fC [inline]\fP" +.PP +Basic constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI__maxNumberOfIterationWithoutImprovment\fP The number of iterations without fitness improvment to reach for stop. +.br +\fI__maximization\fP Indicate if the the aim is to maximize or minimize the fitness. +.RE +.PP + +.PP +Definition at line 34 of file moNoFitImprSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoNoFitImprSolContinue\fP< EOT >::operator() (const EOT & __sol)\fC [inline, virtual]\fP" +.PP +Function that activates the stopping criterion. +.PP +Indicates if the fitness has not been improved since a given number of iterations (after a minimum of iterations). +.PP +\fBParameters:\fP +.RS 4 +\fI__sol\fP the current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +true or false. +.RE +.PP + +.PP +Implements \fBeoUF< const EOT &, bool >\fP. +.PP +Definition at line 45 of file moNoFitImprSolContinue.h. +.PP +References moNoFitImprSolContinue< EOT >::counter, moNoFitImprSolContinue< EOT >::firstFitnessSaved, moNoFitImprSolContinue< EOT >::fitness, moNoFitImprSolContinue< EOT >::maximization, and moNoFitImprSolContinue< EOT >::maxNumberOfIterationsWithoutImprovment. +.SH "Member Data Documentation" +.PP +.SS "template bool \fBmoNoFitImprSolContinue\fP< EOT >::\fBmaximization\fP\fC [private]\fP" +.PP +Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. +.PP +It can be interesting to know this information because some solution-based metaheuristics can generate solutions wiht a fitness that is worse that the best known fitness (in this case, the counter is not reinitialized). +.PP +Definition at line 96 of file moNoFitImprSolContinue.h. +.PP +Referenced by moNoFitImprSolContinue< EOT >::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/doc/man/man3/moRandImprSelect.3 b/trunk/paradiseo-mo/doc/man/man3/moRandImprSelect.3 index 76197a989..b72ace225 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moRandImprSelect.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moRandImprSelect.3 @@ -1,4 +1,4 @@ -.TH "moRandImprSelect" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moRandImprSelect" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moRandMove.3 b/trunk/paradiseo-mo/doc/man/man3/moRandMove.3 index 567e72041..80a16910b 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moRandMove.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moRandMove.3 @@ -1,4 +1,4 @@ -.TH "moRandMove" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moRandMove" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moSA.3 b/trunk/paradiseo-mo/doc/man/man3/moSA.3 index b21d90d0c..9ed1a765e 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moSA.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moSA.3 @@ -1,4 +1,4 @@ -.TH "moSA" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moSA" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moSimpleMoveTabuList.3 b/trunk/paradiseo-mo/doc/man/man3/moSimpleMoveTabuList.3 index 1e47ab9ae..5c346412b 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moSimpleMoveTabuList.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moSimpleMoveTabuList.3 @@ -1,4 +1,4 @@ -.TH "moSimpleMoveTabuList" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moSimpleMoveTabuList" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moSimpleSolutionTabuList.3 b/trunk/paradiseo-mo/doc/man/man3/moSimpleSolutionTabuList.3 index 560960857..c75f4ea09 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moSimpleSolutionTabuList.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moSimpleSolutionTabuList.3 @@ -1,4 +1,4 @@ -.TH "moSimpleSolutionTabuList" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moSimpleSolutionTabuList" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moSolContinue.3 b/trunk/paradiseo-mo/doc/man/man3/moSolContinue.3 index 1d8d40e8a..9c4c989ac 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moSolContinue.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moSolContinue.3 @@ -1,8 +1,8 @@ -.TH "moSolContinue" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moSolContinue" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME -moSolContinue \- Class that describes a stop criterion for a solution-based heuristic. +moSolContinue \- Class that describes a stopping criterion for a solution-based heuristic. .PP .SH SYNOPSIS @@ -12,7 +12,7 @@ moSolContinue \- Class that describes a stop criterion for a solution-based heur .PP Inherits \fBeoUF< const EOT &, bool >\fP. .PP -Inherited by \fBmoGenSolContinue< EOT >\fP. +Inherited by \fBmoFitSolContinue< EOT >\fP, \fBmoGenSolContinue< EOT >\fP, \fBmoNoFitImprSolContinue< EOT >\fP, and \fBmoSteadyFitSolContinue< EOT >\fP. .PP .SS "Public Member Functions" @@ -20,13 +20,13 @@ Inherited by \fBmoGenSolContinue< EOT >\fP. .ti -1c .RI "virtual void \fBinit\fP ()=0" .br -.RI "\fIProcedure which initialises all that the stop criterion needs. \fP" +.RI "\fIProcedure which initialises all that the stopping criterion needs. \fP" .in -1c .SH "Detailed Description" .PP .SS "template class moSolContinue< EOT >" -Class that describes a stop criterion for a solution-based heuristic. +Class that describes a stopping criterion for a solution-based heuristic. It allows to add an initialisation procedure to an object that is a unary function (\fBeoUF\fP). .PP @@ -35,11 +35,11 @@ Definition at line 22 of file moSolContinue.h. .PP .SS "template virtual void \fBmoSolContinue\fP< EOT >::init ()\fC [pure virtual]\fP" .PP -Procedure which initialises all that the stop criterion needs. +Procedure which initialises all that the stopping criterion needs. .PP Generally, it allocates some data structures or initialises some counters. .PP -Implemented in \fBmoGenSolContinue< EOT >\fP. +Implemented in \fBmoFitSolContinue< EOT >\fP, \fBmoGenSolContinue< EOT >\fP, \fBmoNoFitImprSolContinue< EOT >\fP, and \fBmoSteadyFitSolContinue< EOT >\fP. .SH "Author" .PP diff --git a/trunk/paradiseo-mo/doc/man/man3/moSteadyFitSolContinue.3 b/trunk/paradiseo-mo/doc/man/man3/moSteadyFitSolContinue.3 new file mode 100644 index 000000000..df098d996 --- /dev/null +++ b/trunk/paradiseo-mo/doc/man/man3/moSteadyFitSolContinue.3 @@ -0,0 +1,137 @@ +.TH "moSteadyFitSolContinue" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moSteadyFitSolContinue \- One possible stopping criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoSolContinue< EOT >< EOT >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoSteadyFitSolContinue\fP (unsigned int __maxNumberOfIterations, unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization=true)" +.br +.RI "\fIBasic constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const EOT &__sol)" +.br +.RI "\fIFunction that activates the stopping criterion. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which allows to initialise the stuff needed. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned int \fBmaxNumberOfIterations\fP" +.br +.RI "\fIMaximum number of iterations before considering the fitness. \fP" +.ti -1c +.RI "unsigned int \fBmaxNumberOfIterationsWithoutImprovment\fP" +.br +.RI "\fIMaximum number of iterations without improvment allowed. \fP" +.ti -1c +.RI "bool \fBmaxNumberOfIterationsReached\fP" +.br +.RI "\fIFlag that indicates that the maxNumberIteration have been reached. \fP" +.ti -1c +.RI "bool \fBfirstFitnessSaved\fP" +.br +.RI "\fIFlag that this is the first time that the fitness is used. \fP" +.ti -1c +.RI "\fBFitness\fP \fBfitness\fP" +.br +.RI "\fICurrent Fitness. \fP" +.ti -1c +.RI "bool \fBmaximization\fP" +.br +.RI "\fIFlag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. \fP" +.ti -1c +.RI "unsigned int \fBcounter\fP" +.br +.RI "\fIThe iteration couter. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moSteadyFitSolContinue< EOT >" +One possible stopping criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iterations without improvement (after a minimum number of iterations). +.PP +Definition at line 21 of file moSteadyFitSolContinue.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoSteadyFitSolContinue\fP< EOT >::\fBmoSteadyFitSolContinue\fP (unsigned int __maxNumberOfIterations, unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization = \fCtrue\fP)\fC [inline]\fP" +.PP +Basic constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI__maxNumberOfIterations\fP The number of iterations to reach before looking for the fitness. +.br +\fI__maxNumberOfIterationWithoutImprovment\fP The number of iterations without fitness improvment to reach for stop. +.br +\fI__maximization\fP Indicate if the the aim is to maximize or minimize the fitness. +.RE +.PP + +.PP +Definition at line 35 of file moSteadyFitSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoSteadyFitSolContinue\fP< EOT >::operator() (const EOT & __sol)\fC [inline, virtual]\fP" +.PP +Function that activates the stopping criterion. +.PP +Indicates if the fitness has not been improved since a number of iterations (after a minimum of iterations). +.PP +\fBParameters:\fP +.RS 4 +\fI__sol\fP the current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +true or false. +.RE +.PP + +.PP +Implements \fBeoUF< const EOT &, bool >\fP. +.PP +Definition at line 47 of file moSteadyFitSolContinue.h. +.PP +References moSteadyFitSolContinue< EOT >::counter, moSteadyFitSolContinue< EOT >::firstFitnessSaved, moSteadyFitSolContinue< EOT >::fitness, moSteadyFitSolContinue< EOT >::maximization, moSteadyFitSolContinue< EOT >::maxNumberOfIterations, moSteadyFitSolContinue< EOT >::maxNumberOfIterationsReached, and moSteadyFitSolContinue< EOT >::maxNumberOfIterationsWithoutImprovment. +.SH "Member Data Documentation" +.PP +.SS "template bool \fBmoSteadyFitSolContinue\fP< EOT >::\fBmaximization\fP\fC [private]\fP" +.PP +Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. +.PP +It can be interesting to know this information because some solution-based metaheuristics can generate solution with a fitness that is worse that the best known fitness (in this case, the counter is not reinitialized). +.PP +Definition at line 114 of file moSteadyFitSolContinue.h. +.PP +Referenced by moSteadyFitSolContinue< EOT >::operator()(). + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/doc/man/man3/moTS.3 b/trunk/paradiseo-mo/doc/man/man3/moTS.3 index aa81de64e..d79503e47 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moTS.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moTS.3 @@ -1,4 +1,4 @@ -.TH "moTS" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moTS" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moTSMoveLoopExpl.3 b/trunk/paradiseo-mo/doc/man/man3/moTSMoveLoopExpl.3 index ae467fe08..01a292042 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moTSMoveLoopExpl.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moTSMoveLoopExpl.3 @@ -1,4 +1,4 @@ -.TH "moTSMoveLoopExpl" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moTSMoveLoopExpl" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/doc/man/man3/moTabuList.3 b/trunk/paradiseo-mo/doc/man/man3/moTabuList.3 index 19fa9d5b7..29f704a0b 100644 --- a/trunk/paradiseo-mo/doc/man/man3/moTabuList.3 +++ b/trunk/paradiseo-mo/doc/man/man3/moTabuList.3 @@ -1,4 +1,4 @@ -.TH "moTabuList" 3 "6 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.TH "moTabuList" 3 "31 Jul 2007" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/trunk/paradiseo-mo/src/mo.h b/trunk/paradiseo-mo/src/mo.h index 58476ce6b..6b87e3608 100755 --- a/trunk/paradiseo-mo/src/mo.h +++ b/trunk/paradiseo-mo/src/mo.h @@ -18,6 +18,7 @@ #include "moCoolingSchedule.h" #include "moExponentialCoolingSchedule.h" #include "moFirstImprSelect.h" +#include "moFitSolContinue.h" #include "moGenSolContinue.h" #include "moHC.h" #include "moHCMoveLoopExpl.h" @@ -33,12 +34,14 @@ #include "moMoveSelect.h" #include "moNextMove.h" #include "moNoAspirCrit.h" +#include "moNoFitImprSolContinue.h" #include "moRandImprSelect.h" #include "moRandMove.h" #include "moSA.h" #include "moSimpleMoveTabuList.h" #include "moSimpleSolutionTabuList.h" #include "moSolContinue.h" +#include "moSteadyFitSolContinue.h" #include "moTabuList.h" #include "moTS.h" #include "moTSMoveLoopExpl.h" diff --git a/trunk/paradiseo-mo/src/moFitSolContinue.h b/trunk/paradiseo-mo/src/moFitSolContinue.h new file mode 100644 index 000000000..72c5bca46 --- /dev/null +++ b/trunk/paradiseo-mo/src/moFitSolContinue.h @@ -0,0 +1,75 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moFitSolContinue.h" + +// (c) OPAC Team (LIFL), Dolphin project (INRIA), 2003-2007 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moFitSolContinue_h +#define __moFitSolContinue_h + +#include "moSolContinue.h" + +//! One possible stop criterion for a solution-based heuristic. +/*! + The stop criterion corresponds to a fitness threshold gained. + */ +template < class EOT > class moFitSolContinue:public moSolContinue < EOT > +{ + +public: + + //! Alias for the fitness. + typedef typename EOT::Fitness Fitness; + + //! Basic constructor. + /*! + \param __fitness The fitness to reach. + \param __maximization Indicate if the the aim is to maximize or minimize the fitness. + */ + moFitSolContinue (Fitness __fitness, bool __maximization=true): fitness (__fitness), maximization(__maximization) + {} + + //! Function that activates the stopping criterion. + /*! + Indicates if the fitness threshold has not been yet reached. + + \param __sol the current solution. + \return true or false according to the value of the fitness. + */ + bool operator () (const EOT & __sol) + { + if(__sol.invalid()) + { + return true; + } + + if(maximization) + { + return __sol.fitness()fitness; + } + + //! Procedure which allows to initialise all the stuff needed. + void init () + {} + +private: + + //! Fitness target. + Fitness fitness; + + //! Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. + /*! + It can be interesting to know this information because some solution-based metaheuristics can generate solution with a fitness that + is worse that the best known fitness (in this case, the counter is not reinitialized). + */ + bool maximization; +}; + +#endif diff --git a/trunk/paradiseo-mo/src/moGenSolContinue.h b/trunk/paradiseo-mo/src/moGenSolContinue.h index 2bd8ba4e5..7a5bca6b1 100755 --- a/trunk/paradiseo-mo/src/moGenSolContinue.h +++ b/trunk/paradiseo-mo/src/moGenSolContinue.h @@ -1,6 +1,6 @@ // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- -// "eoGenSolContinue.h" +// "moGenSolContinue.h" // (c) OPAC Team, LIFL, 2003-2006 @@ -14,48 +14,39 @@ #include "moSolContinue.h" -//! One possible stop criterion for a solution-based heuristic. +//! One possible stopping criterion for a solution-based heuristic. /*! - The stop criterion corresponds to a maximum number of iteration. + The stopping criterion corresponds to a maximum number of iteration. */ template < class EOT > class moGenSolContinue:public moSolContinue < EOT > { public: - //! Simple constructor. + //! Basic constructor. /*! \param __maxNumGen the maximum number of generation. */ moGenSolContinue (unsigned int __maxNumGen):maxNumGen (__maxNumGen), numGen (0) - { - - } + {} //! Function that activates the stop criterion. /*! - Increments the counter and returns TRUE if the + Increments the counter and returns true if the current number of iteration is lower than the given maximum number of iterations. \param __sol the current solution. - \return TRUE or FALSE according to the current generation number. + \return true or false according to the current generation number. */ - bool operator () (const EOT & __sol) + bool operator () (const EOT & __sol) { - return (++numGen < maxNumGen); } - //! Procedure which allows to initialise the generation counter. - /*! - It can also be used to reset the iteration counter. - */ + //! Procedure which allows to initialise all the stuff needed. void init () - { - - numGen = 0; - } + {} private: diff --git a/trunk/paradiseo-mo/src/moNoFitImprSolContinue.h b/trunk/paradiseo-mo/src/moNoFitImprSolContinue.h new file mode 100644 index 000000000..5ca55b16e --- /dev/null +++ b/trunk/paradiseo-mo/src/moNoFitImprSolContinue.h @@ -0,0 +1,102 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moNoFitImprSolContinue.h" + +// (c) OPAC Team (LIFL), Dolphin project (INRIA), 2003-2007 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moNoFitImprSolContinue_h +#define __moNoFitImprSolContinue_h + +#include "moSolContinue.h" + +//! One possible stop criterion for a solution-based heuristic. +/*! + The stop criterion corresponds to a maximum number of iterations without improvement. + */ +template < class EOT > class moNoFitImprSolContinue:public moSolContinue < EOT > +{ + +public: + + //! Alias for the fitness. + typedef typename EOT::Fitness Fitness; + + //! Basic constructor. + /*! + \param __maxNumberOfIterationWithoutImprovment The number of iterations without fitness improvment to reach for stop. + \param __maximization Indicate if the the aim is to maximize or minimize the fitness. + */ + moNoFitImprSolContinue (unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization=true) + : maxNumberOfIterationsWithoutImprovment(__maxNumberOfIterationWithoutImprovment),maximization(__maximization), + firstFitnessSaved(true), counter(0) + {} + + //! Function that activates the stopping criterion. + /*! + Indicates if the fitness has not been improved since a given number of iterations (after a minimum of iterations). + \param __sol the current solution. + \return true or false. + */ + bool operator () (const EOT & __sol) + { + if(__sol.invalid()) + { + return true; + } + + if(firstFitnessSaved) + { + fitness=__sol.fitness(); + counter=0; + FirstFitnessSaved=false; + return true; + } + + counter++; + + if( ((maximization) && (__sol.fitness() > fitness)) || + ((!maximization) && (__sol.fitness() < fitness)) ) + { + fitness=__sol.fitness(); + counter=0; + } + + if(counter==maxNumberOfIterationsWithoutImprovment) + { + std::cout << "moNoFitImrpSolContinue: Done [" << counter << "] iterations without improvement." << std::endl; + } + return counter!=maxNumberOfIterationsWithoutImprovment; + } + + //! Procedure which allows to initialise all the stuff needed. + void init () + {} + +private: + + //! Maximum number of iterations without improvment allowed. + unsigned int maxNumberOfIterationsWithoutImprovment; + + //! Flag that this is the first time that the fitness is used. + bool firstFitnessSaved; + + //! Current Fitness. + Fitness fitness; + + //! Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. + /*! + It can be interesting to know this information because some solution-based metaheuristics can generate solutions wiht a fitness that + is worse that the best known fitness (in this case, the counter is not reinitialized). + */ + bool maximization; + + //! The iteration couter. + unsigned int counter; +}; + +#endif diff --git a/trunk/paradiseo-mo/src/moSolContinue.h b/trunk/paradiseo-mo/src/moSolContinue.h index 44efdd969..285f6df40 100755 --- a/trunk/paradiseo-mo/src/moSolContinue.h +++ b/trunk/paradiseo-mo/src/moSolContinue.h @@ -14,7 +14,7 @@ #include -//! Class that describes a stop criterion for a solution-based heuristic +//! Class that describes a stopping criterion for a solution-based heuristic /*! It allows to add an initialisation procedure to an object that is a unary function (eoUF). @@ -23,7 +23,7 @@ template < class EOT > class moSolContinue:public eoUF < const EOT &, bool > { public: - //! Procedure which initialises all that the stop criterion needs + //! Procedure which initialises all that the stopping criterion needs /*! Generally, it allocates some data structures or initialises some counters. */ diff --git a/trunk/paradiseo-mo/src/moSteadyFitSolContinue.h b/trunk/paradiseo-mo/src/moSteadyFitSolContinue.h new file mode 100644 index 000000000..45184995a --- /dev/null +++ b/trunk/paradiseo-mo/src/moSteadyFitSolContinue.h @@ -0,0 +1,120 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moSteadyFitSolContinue.h" + +// (c) OPAC Team (LIFL), Dolphin project (INRIA), 2003-2007 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moSteadyFitSolContinue_h +#define __moSteadyFitSolContinue_h + +#include "moSolContinue.h" + +//! One possible stopping criterion for a solution-based heuristic. +/*! + The stop criterion corresponds to a maximum number of iterations without improvement (after a minimum number of iterations). + */ +template < class EOT > class moSteadyFitSolContinue:public moSolContinue < EOT > +{ + +public: + + //! Alias for the fitness. + typedef typename EOT::Fitness Fitness; + + //! Basic constructor. + /*! + \param __maxNumberOfIterations The number of iterations to reach before looking for the fitness. + \param __maxNumberOfIterationWithoutImprovment The number of iterations without fitness improvment to reach for stop. + \param __maximization Indicate if the the aim is to maximize or minimize the fitness. + */ + moSteadyFitSolContinue (unsigned int __maxNumberOfIterations, unsigned int __maxNumberOfIterationWithoutImprovment, bool __maximization=true) + : maxNumberOfIterations (__maxNumberOfIterations), maxNumberOfIterationsWithoutImprovment(__maxNumberOfIterationWithoutImprovment), + maximization(__maximization), maxNumberOfIterationsReached(false), firstFitnessSaved(true), counter(0) + {} + + //! Function that activates the stopping criterion. + /*! + Indicates if the fitness has not been improved since a number of iterations (after a minimum of iterations). + + \param __sol the current solution. + \return true or false. + */ + bool operator () (const EOT & __sol) + { + if(!maxNumberOfIterationsReached) + { + maxNumberOfIterationsReached=((++counter)==maxNumberOfIterations); + if(maxNumberOfIterationsReached) + { + std::cout << "moSteadyFitSolContinue: Done the minimum number of iterations [" << counter << "]." << std::endl; + } + return true; + } + + if(__sol.invalid()) + { + return true; + } + + if(firstFitnessSaved) + { + fitness=__sol.fitness(); + counter=0; + FirstFitnessSaved=false; + return true; + } + + counter++; + + if( ((maximization) && (__sol.fitness() > fitness)) || + ((!maximization) && (__sol.fitness() < fitness)) ) + { + fitness=__sol.fitness(); + counter=0; + } + + if(counter==maxNumberOfIterationsWithoutImprovment) + { + std::cout << "moSteadyFitSolContinue: Done [" << counter << "] iterations without improvement." << std::endl; + } + return counter!=maxNumberOfIterationsWithoutImprovment; + } + + //! Procedure which allows to initialise the stuff needed. + void init () + {} + +private: + + //! Maximum number of iterations before considering the fitness. + unsigned int maxNumberOfIterations; + + //! Maximum number of iterations without improvment allowed. + unsigned int maxNumberOfIterationsWithoutImprovment; + + //! Flag that indicates that the maxNumberIteration have been reached. + bool maxNumberOfIterationsReached; + + //! Flag that this is the first time that the fitness is used. + bool firstFitnessSaved; + + //! Current Fitness. + Fitness fitness; + + //! Flag that indicate if there is a maximization (true) or a minimization (false) of the fitness value. + /*! + It can be interesting to know this information because some solution-based metaheuristics can generate solution with a fitness that + is worse that the best known fitness (in this case, the counter is not reinitialized). + */ + bool maximization; + + //! The iteration couter. + unsigned int counter; +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp b/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp index 13913bdb7..00604fce9 100644 --- a/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp +++ b/trunk/paradiseo-mo/tutorial/Lesson2/tabu_search.cpp @@ -59,6 +59,9 @@ main (int __argc, char * __argv []) moNoAspirCrit aspir_crit ; // Aspiration Criterion moGenSolContinue cont (10000) ; // Continuator + //moFitSolContinue cont (-700); + //moSteadyFitSolContinue cont (1000, 2000); + //moNoFitImprSolContinue cont (1000); moTS tabu_search (two_opt_init, two_opt_next, two_opt_incr_eval, tabu_list, aspir_crit, cont, full_eval) ; tabu_search (route) ;