Skip to content

TABU Algorithm

Overview

Tabu search extends the basic hill-climbing algorithm with a short-term memory called the tabu list. After each accepted move the corresponding reverse operation is added to the tabu list and is forbidden for a configurable number of subsequent iterations. This prevents the search from immediately undoing a recent change and allows it to escape shallow local optima that would trap a pure hill-climber.

When the tabu list is full, the oldest entry is evicted (FIFO). The search also accepts a limited number of non-improving moves (controlled by no_increase) before terminating, which gives it further ability to escape plateaux. Tabu is generally more robust than plain HC at the cost of slightly higher runtime.

Class: score · DAG Package: CausalIQ

Reference

Glover F. (1989) – Tabu Search. ORSA J. Computing 1(3), 190–206. https://doi.org/10.1287/ijoc.1.3.190

Hyperparameters

Hyperparameter Type Default Values Description
iss float 1.0 Imaginary Sample Size weighting the prior in Bayesian scores.
max_elapsed int No limit Maximum allowed execution time in seconds.
max_iterations int No limit Maximum number of iterations.
no_increase int 10 Iterations permitted without a score improvement.
penalty_weight float 1.0 Weight of the penalty component in AIC and BIC scores.
score str bic aic, bdeu, bge, bic, k2, loglik Scoring function for score-based learning.
tabulist_len int 10 Length of the tabu list.

Variants

Variant Package
bnlearn bnlearn
causaliq CausalIQ