Documentation
Local Search
Local-search acceptors, foragers, move selectors, and score-level annealing.
Local search repeatedly generates candidate moves, scores them, accepts or rejects them, and commits one accepted candidate. It is the normal improvement phase after construction.
[[phases]]
type = "local_search"
[phases.acceptor]
type = "late_acceptance"
late_acceptance_size = 400
[phases.forager]
type = "accepted_count"
limit = 4
[phases.move_selector]
type = "change_move_selector"
value_candidate_limit = 32
Acceptor
The acceptor decides whether a scored candidate can be accepted.
| Acceptor | Use |
|---|---|
hill_climbing |
accept only improving moves |
simulated_annealing |
allow controlled regressions while cooling |
tabu_search |
avoid recently visited entities, values, or moves |
late_acceptance |
compare against a historical score window |
great_deluge |
compare against a decaying score boundary |
step_counting_hill_climbing |
hold a boundary for a fixed step interval |
diversified_late_acceptance |
late acceptance with diversification pressure |
Score-Level Simulated Annealing
Simulated annealing supports per-score-level temperatures and hard-regression policy.
[phases.acceptor]
type = "simulated_annealing"
level_temperatures = [5.0, 500.0]
hard_regression_policy = "temperature_controlled"
[phases.acceptor.calibration]
sample_size = 64
target_acceptance_probability = 0.75
fallback_temperature = 2.0
level_temperatures are ordered from highest-priority score level to
lowest-priority score level. hard_regression_policy decides whether hard-score
regressions can be temperature-controlled or are never accepted.
Forager
The forager decides which accepted candidate is committed.
[phases.forager]
type = "accepted_count"
limit = 4
accepted_count_limit and the accepted-count forager retain the best accepted
candidates for final selection. They do not cap candidate generation. Use
limited_neighborhood when a selector itself is too broad before scoring.
Move Selector
Move selection lives under [phases.move_selector].
[phases.move_selector]
type = "union_move_selector"
selection_order = "round_robin"
[[phases.move_selector.selectors]]
type = "change_move_selector"
value_candidate_limit = 32
[[phases.move_selector.selectors]]
type = "swap_move_selector"
For selector details, start with Moves.
Telemetry
Retained status and events preserve exact generated, evaluated, accepted,
not-doable, acceptor-rejected, forager-ignored, hard-delta, conflict-repair,
and construction-slot counters plus generation and evaluation durations.
Displayed moves/s is a human-facing derived value.
See Also
- Construction - creating the first solution
- Moves - selector family guide
- Termination - stopping local search