FRAMES NO FRAMES

Class IloTabuSearch

Definition file: ilsolver/iimmeta.h
Include file: <ilsolver/iimls.h>

This class implements a simple tabu search mechanism. The form of tabu search implemented is one where neighboring moves are forbidden depending on the states of two tabu lists that are maintained internally. These tabu lists maintain assignments to IloNumVar and IloAnyVar objects that have recently been removed from the solution (“out” assignments) and have recently been added to the solution (“in” assignments).

The tabu search mechanism uses the following rules:

These two rules are overridden if the current solution is of a lower cost than the best cost solution used to start the metaheuristic.

When a move is accepted and the IloMetaHeuristic::notify method is called for the tabu search metaheuristic, added new assignments and removed old assignments are recorded in the tabu lists so that they can be tested in the future.

A call to IloMetaHeuristic::complete “ages” the tabu lists by one iteration, so that from the point of view of the tabu restriction rules above, it appears that a move has been made. It returns IloTrue if the tabu list was empty before aging, and IloFalse otherwise.

See Also:

Constructor Summary
public IloTabuSearch(IloEnv env, IloInt forbid, IloInt keep=0, IloNum step=1e-4)
Method Summary
public IloNumgetAspirationStep() const
public IloIntgetForbidTenure() const
public IloIntgetKeepTenure() const
public voidsetAspirationStep(IloNum step)
public voidsetForbidTenure(IloInt t) const
public voidsetKeepTenure(IloInt t) const
Inherited Methods from IloMetaHeuristic
complete, end, getDeltaCheck, getEnv, getImpl, getName, getObject, isFeasible, notify, operator=, reset, setName, setObject, start, test
Constructor Detail

IloTabuSearch

public IloTabuSearch(IloEnv env, IloInt forbid, IloInt keep=0, IloNum step=1e-4)

This constructor creates a tabu search object associated with the environment env. The parameter forbid indicates the number of moves to maintain an old removed assignment on the tabu list. The parameter keep, if supplied, indicates the number of moves to maintain a new added assignment on the tabu list. The parameter step indicates how much better than the best solution found previously the current solution must be before the tabu status of any assignments is overridden.


Method Detail

getAspirationStep

public IloNum getAspirationStep() const

This member function returns the value of step specified in the constructor or through the previous call to IloTabuSearch::setAspirationStep.


getForbidTenure

public IloInt getForbidTenure() const

This member function returns the forbid value specified in the constructor or specified in the last call to IloTabuSearch::setForbidTenure.


getKeepTenure

public IloInt getKeepTenure() const

This member function returns the keep value specified in the constructor or specified in the last call to IloTabuSearch::setKeepTenure.


setAspirationStep

public void setAspirationStep(IloNum step)

This member function sets the value of the aspiration step to step.


setForbidTenure

public void setForbidTenure(IloInt t) const

This member function changes the number of moves that forbidden assignments remain on the tabu list. Any new assignments added remain on the list for t moves; the tenure of assignments already on the list is not changed.


setKeepTenure

public void setKeepTenure(IloInt t) const

This member function changes the number of moves that kept assignments remain on the tabu list. Any new assignments added remain on the list for t moves; the tenure of assignments already on the list is not changed.