METSlib  0.6
Public Member Functions | Protected Attributes | List of all members
mets::local_search< move_manager_type > Class Template Reference

Local search algorithm. More...

#include <local-search.hh>

Inheritance diagram for mets::local_search< move_manager_type >:
Inheritance graph
Collaboration diagram for mets::local_search< move_manager_type >:
Collaboration graph

Public Member Functions

 local_search (evaluable_solution &starting_point, solution_recorder &recorder, move_manager_type &moveman, gol_type epsilon=1e-7, bool short_circuit=false)
 Creates a local search instance. More...
 
 local_search (const local_search &)
 purposely not implemented (see Effective C++)
 
local_searchoperator= (const local_search &)
 
virtual void throw (no_moves_error)
 This method starts the local search process. More...
 
- Public Member Functions inherited from mets::abstract_search< move_manager_type >
 abstract_search (feasible_solution &working, solution_recorder &recorder, move_manager_type &moveman)
 Set some common values needed for neighborhood based metaheuristics. More...
 
 abstract_search (const abstract_search< move_manager_type > &)
 purposely not implemented (see Effective C++)
 
abstract_searchoperator== (const abstract_search< move_manager_type > &)
 purposely not implemented (see Effective C++)
 
virtual ~abstract_search ()
 Virtual destructor.
 
const solution_recorderrecorder () const
 The solution recorder instance.
 
const feasible_solutionworking () const
 The current working solution.
 
feasible_solutionworking ()
 
const movecurrent_move () const
 The last move made.
 
movecurrent_move ()
 The last move made.
 
const move_manager_type & move_manager () const
 The move manager used by this search.
 
move_manager_type & move_manager ()
 The move manager used by this search.
 
int step () const
 The current step of the algorithm (to be used by the observers). More...
 
- Public Member Functions inherited from mets::subject< abstract_search< move_manager_type > >
virtual void attach (observer< abstract_search< move_manager_type > > &o)
 Attach a new observer to this subject. More...
 
virtual void detach (observer< abstract_search< move_manager_type > > &o)
 Detach a new observer to this subject. More...
 
virtual void notify ()
 Notify all attached observers. More...
 

Protected Attributes

bool short_circuit_m
 
gol_type epsilon_m
 
- Protected Attributes inherited from mets::abstract_search< move_manager_type >
solution_recordersolution_recorder_m
 
feasible_solutionworking_solution_m
 
move_manager_type & moves_m
 
move_manager_type::iterator current_move_m
 
int step_m
 
- Protected Attributes inherited from mets::subject< abstract_search< move_manager_type > >
std::set< observer
< abstract_search
< move_manager_type > > * > 
observers_m
 

Additional Inherited Members

- Public Types inherited from mets::abstract_search< move_manager_type >
enum  {
  MOVE_MADE = 0, IMPROVEMENT_MADE, ITERATION_BEGIN, ITERATION_END,
  LAST
}
 

Detailed Description

template<typename move_manager_type>
class mets::local_search< move_manager_type >

Local search algorithm.

With customary phase alternation and move managers generated neighborhood this can be used to do also a Random Restart Local Search, a Greedy Search, an Iterated Local Search and a Variable Neighborhood Search.

Constructor & Destructor Documentation

template<typename move_manager_type >
mets::local_search< move_manager_type >::local_search ( evaluable_solution starting_point,
solution_recorder recorder,
move_manager_type &  moveman,
gol_type  epsilon = 1e-7,
bool  short_circuit = false 
)

Creates a local search instance.

Parameters
workingThe working solution (this will be modified during search)
best_so_farA different solution instance used to store the best solution found
movemanA problem specific implementation of the move_manager_type concept used to generate the neighborhood.
short_circuitWether the search should stop on the first improving move or not.

Member Function Documentation

template<typename move_manager_type >
virtual void mets::local_search< move_manager_type >::throw ( no_moves_error  )
virtual

This method starts the local search process.

To have a real local search you should provide an move_manager_type than enumerates all feasible moves.

Implements mets::abstract_search< move_manager_type >.


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

Return to METSlib home page