Move to be operated on a feasible solution. More...
#include <model.hh>
Public Member Functions | |
virtual void | apply (feasible_solution &sol) const =0 |
Operates this move on sol. | |
virtual gol_type | evaluate (const feasible_solution &sol) const =0 |
Evaluate the cost after the move. | |
virtual | ~move () |
Move to be operated on a feasible solution.
You must implement this (one or more types are allowed) for your problem.
You must provide an apply as well as an evaluate method.
NOTE: this interface changed from 0.4.x to 0.5.x. The change was needed to provide a more general interface.
virtual mets::move::~move | ( | ) | [inline, virtual] |
virtual void mets::move::apply | ( | feasible_solution & | sol | ) | const [pure virtual] |
Operates this move on sol.
This should actually change the solution.
Implemented in mets::invert_subsequence, mets::swap_elements, and pcl::GlobalHypothesesVerification< ModelT, SceneT >::move.
virtual gol_type mets::move::evaluate | ( | const feasible_solution & | sol | ) | const [pure virtual] |
Evaluate the cost after the move.
What if we make this move? Local searches can be speed up by a substantial amount if we are able to efficiently evaluate the cost of the neighboring solutions without actually changing the solution.
Implemented in mets::invert_subsequence, mets::swap_elements, and pcl::GlobalHypothesesVerification< ModelT, SceneT >::move.