METSlib  0.6
Public Member Functions | Protected Attributes | List of all members
mets::tabu_list_chain Class Referenceabstract

An abstract tabu list. More...

#include <tabu-search.hh>

Inheritance diagram for mets::tabu_list_chain:
Inheritance graph
Collaboration diagram for mets::tabu_list_chain:
Collaboration graph

Public Member Functions

 tabu_list_chain (const tabu_list_chain &)
 purposely not implemented (see Effective C++)
 
tabu_list_chainoperator= (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 ~tabu_list_chain ()
 Virtual destructor.
 
virtual void tabu (const feasible_solution &sol, const move &mov)=0
 Make a move tabu when starting from a certain solution. More...
 
virtual bool is_tabu (const feasible_solution &sol, const move &mov) const =0
 True if the move is tabu for the given solution. More...
 
virtual unsigned int tenure () const
 Tenure of this tabu list. More...
 
virtual void tenure (unsigned int tenure)
 Tenure of this tabu list. More...
 

Protected Attributes

tabu_list_chainnext_m
 
unsigned int tenure_m
 

Detailed Description

An abstract tabu list.

This is chainable so that tabu lists can be decorated with other tabu lists.

Member Function Documentation

bool mets::tabu_list_chain::is_tabu ( const feasible_solution sol,
const move mov 
) const
inlinepure 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.

Parameters
solThe current working solution
movThe move to make tabu

Implemented in mets::simple_tabu_list.

void mets::tabu_list_chain::tabu ( const feasible_solution sol,
const move mov 
)
inlinepure 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.

Parameters
solThe current working solution
movThe move to make tabu

Implemented in mets::simple_tabu_list.

virtual unsigned int mets::tabu_list_chain::tenure ( ) const
inlinevirtual

Tenure of this tabu list.

The tenure is the length of the tabu-list (the order of the tabu memory)

virtual void mets::tabu_list_chain::tenure ( unsigned int  tenure)
inlinevirtual

Tenure of this tabu list.

Parameters
tenure,:the new tenure of the list.

The documentation for this class was generated from the following file:

Return to METSlib home page