An abstract tabu list. More...
#include <tabu-search.hh>
Public Member Functions | |
virtual bool | is_tabu (feasible_solution &sol, move &mov) const =0 |
True if the move is tabu for the given solution. | |
tabu_list_chain & | operator= (const tabu_list_chain &) |
purposely not implemented (see Effective C++) | |
virtual void | tabu (feasible_solution &sol, move &mov)=0 |
Make a move tabu when starting from a certain solution. | |
tabu_list_chain () | |
tabu_list_chain (const tabu_list_chain &) | |
purposely not implemented (see Effective C++) | |
tabu_list_chain (unsigned int tenure) | |
Create an abstract tabu list with a certain tenure. | |
tabu_list_chain (tabu_list_chain *next, unsigned int tenure) | |
Create an abstract tabu list with a certain tenure and a chained tabu list that decorates this one. | |
virtual unsigned int | tenure () const |
Tenure of this tabu list. | |
virtual void | tenure (unsigned int tenure) |
Tenure of this tabu list. | |
virtual | ~tabu_list_chain () |
Virtual destructor. | |
Protected Attributes | |
tabu_list_chain * | next_m |
unsigned int | tenure_m |
An abstract tabu list.
This is chainable so that tabu lists can be decorated with other tabu lists.
Definition at line 109 of file tabu-search.hh.
purposely not implemented (see Effective C++)
mets::tabu_list_chain::tabu_list_chain | ( | unsigned int | tenure | ) | [inline, explicit] |
Create an abstract tabu list with a certain tenure.
Definition at line 120 of file tabu-search.hh.
mets::tabu_list_chain::tabu_list_chain | ( | tabu_list_chain * | next, |
unsigned int | tenure | ||
) | [inline] |
Create an abstract tabu list with a certain tenure and a chained tabu list that decorates this one.
Definition at line 126 of file tabu-search.hh.
virtual mets::tabu_list_chain::~tabu_list_chain | ( | ) | [inline, virtual] |
Virtual destructor.
Definition at line 132 of file tabu-search.hh.
bool mets::tabu_list_chain::is_tabu | ( | feasible_solution & | sol, |
move & | mov | ||
) | const [inline, pure virtual] |
True if the move is tabu for the given solution.
Different implementation can remember "tenure" moves, "tenure" solutions or some other peculiar fact that will avoid cycling. So it's not defined at this stage if a move will be tabu or not at a certain state of the search: this depends on the implementation.
Mind you! The solution here is the solution *before* applying the move: this is for efficiency reason.
sol | The current working solution |
mov | The move to make tabu |
Implemented in mets::simple_tabu_list.
Definition at line 498 of file tabu-search.hh.
tabu_list_chain& mets::tabu_list_chain::operator= | ( | const tabu_list_chain & | ) |
purposely not implemented (see Effective C++)
void mets::tabu_list_chain::tabu | ( | feasible_solution & | sol, |
move & | mov | ||
) | [inline, pure virtual] |
Make a move tabu when starting from a certain solution.
Different implementation can remember "tenure" moves, "tenure" solutions or some other peculiar fact that will avoid cycling.
Mind you! The solution here is the solution *before* applying the move: this is for efficiency reason.
sol | The current working solution |
mov | The move to make tabu |
Implemented in mets::simple_tabu_list.
Definition at line 491 of file tabu-search.hh.
virtual unsigned int mets::tabu_list_chain::tenure | ( | ) | const [inline, virtual] |
Tenure of this tabu list.
The tenure is the length of the tabu-list (the order of the tabu memory)
Definition at line 173 of file tabu-search.hh.
virtual void mets::tabu_list_chain::tenure | ( | unsigned int | tenure | ) | [inline, virtual] |
Tenure of this tabu list.
tenure,: | the new tenure of the list. |
Definition at line 182 of file tabu-search.hh.
tabu_list_chain* mets::tabu_list_chain::next_m [protected] |
Definition at line 186 of file tabu-search.hh.
unsigned int mets::tabu_list_chain::tenure_m [protected] |
Definition at line 187 of file tabu-search.hh.