METSlib 0.6

- Main Page
- Modules
- Classes

METSlib

# Introduction

This is a library implementing some neighborhood based metaheuristics with or without memory.

The solution instance must implement mets::feasible_solution and the moves must be derived from mets::move classes.

The neighborhood can be specified implementing a mets::move_manager subclass or providing another class with the same concept (using the move_manager can ease things, but you can also provide your own custom neighorhood iterator).

All the mentioned classes must be implemented to model the problem at hand. See as an example the "tutorial" and "qap" programs.

You are also responsible of configuring and running the algorithm of choice.

Once your model is set up you are free of experimenting different metaheuristics without changing it, but simply configuring one algorithm or another.

Each algorithm can be customized implementing your own decorating classes, although a bunch of predefined and commonly used decorators are provided with the library, some problems may need customary tabu lists, termination criterias, aspiration criteria, or cooling schedules.

The framework you must implement your model into is made of:

- mets::feasible_solution
  - mets::evaluable_solution (use this if you also use mets::best_ever_solution)
  - mets::permutation_problem
- mets::move
  - mets::mana_move (use this if you also use by mets::simple_tabu_list)
  - mets::swap_elements

The toolkit of implemented algorithms is made of:

- mets::move_manager (or a class implementing the same concept)
  - mets::swap_neighborhood
- mets::local_search
- mets::simulated_annealing
  - mets::abstract_cooling_schedule
  - mets::solution_recorder
    - mets::best_ever_solution
  - mets::termination_criteria_chain
    - mets::iteration_termination_criteria
    - mets::noimprove_termination_criteria
    - mets::threshold_termination_criteria
- mets::tabu_search
  - mets::tabu_list_chain
    - mets::simple_tabu_list
  - mets::aspiration_criteria_chain
    - mets::best_ever_criteria
  - mets::solution_recorder
    - mets::best_ever_solution
  - mets::termination_criteria_chain
    - mets::iteration_termination_criteria
    - mets::noimprove_termination_criteria
    - mets::threshold_termination_criteria

To use the mets::simple_tabu_list you need to derive your moves from the mets::mana_move base class and implement the pure virtual methods.

Return to METSlib home page