METSlib 0.5
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.
 local_search (const local_search &)
 purposely not implemented (see Effective C++)
local_searchoperator= (const local_search &)
virtual void search () throw (no_moves_error)
 This method starts the local search process.
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.
 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).
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.
virtual void detach (observer< abstract_search< move_manager_type > > &o)
 Detach a new observer to this subject.
virtual void notify ()
 Notify all attached observers.

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

◆ local_search()

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

◆ search()

template<typename move_manager_t>
void mets::local_search< move_manager_t >::search ( )
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