Tabu Search How-to

The Tabu Search prototype provides an alternative to simulated annealing for diversification-heavy workloads.

Basic Usage

fhops solve-tabu examples/tiny7/scenario.yaml \
    --out tmp/tiny7_tabu.csv \
    --iters 2000 --tabu-tenure 20 --stall-limit 300 \
    --batch-neighbours 4 --parallel-workers 4 \
    --telemetry-log tmp/tabu_runs.jsonl

Key options:

--tabu-tenure

Length of the tabu list. 0 (default) picks max(10, #machines).

--stall-limit

Maximum number of non-improving iterations before terminating early.

--batch-neighbours / --parallel-workers

Reuse the batched neighbour evaluation infrastructure from SA. Defaults keep sequential scoring.

Telemetry

Telemetry records mirror SA entries but add tabu_tenure and stall_limit fields. Multi-start telemetry currently applies only to SA; Tabu emits a single record per run.

Benchmarks

Refer to tmp/tabu_bench/summary.csv (generated via fhops bench suite --include-tabu) and tmp/sa_batch_profile_long.csv for the latest profiling data. In current runs (tiny7/med42/large84, 500 iterations) Tabu lags behind SA, so the solver remains opt-in until further tuning.