Overview | Group | Tree | Graph | Index | Concepts |
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:
forbid
moves ago, the move is rejected.
keep
moves ago, the move is rejected.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:
IloMetaHeuristic, IloMetaHeuristicI
Constructor Summary | |
---|---|
public | IloTabuSearch(IloEnv env, IloInt forbid, IloInt keep=0, IloNum step=1e-4) |
Method Summary | |
---|---|
public IloNum | getAspirationStep() const |
public IloInt | getForbidTenure() const |
public IloInt | getKeepTenure() const |
public void | setAspirationStep(IloNum step) |
public void | setForbidTenure(IloInt t) const |
public void | setKeepTenure(IloInt t) const |
Inherited Methods from IloMetaHeuristic |
---|
complete, end, getDeltaCheck, getEnv, getImpl, getName, getObject, isFeasible, notify, operator=, reset, setName, setObject, start, test |
Constructor Detail |
---|
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 |
---|
This member function returns the value of step specified in the
constructor or through the previous call to
IloTabuSearch::setAspirationStep
.
This member function returns the forbid
value specified
in the constructor or specified in the last call to
IloTabuSearch::setForbidTenure
.
This member function returns the keep
value specified in
the constructor or specified in the last call to
IloTabuSearch::setKeepTenure
.
This member function sets the value of the aspiration step to
step
.
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.
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.