feat(algorithms): add TabuSearch with a configurable neighbor generator
Glover 1986 tabu search for single-objective problems. Generic over decision type — the user supplies a neighbor-generator closure that produces a finite list of candidate moves from the current incumbent (e.g. all 2-swaps for a permutation, or N Gaussian-perturbed copies of a real vector). Each iteration picks the best non-tabu neighbor (with an aspiration override that lets a tabu move through if it beats the best-seen-ever incumbent) and adds the chosen move's decision to a fixed-size FIFO tabu list. Single-objective only. Tracks the best-seen-ever incumbent across the run, returned as the result. Generic over the decision `D: Hash + Eq` so the tabu list can match by full decision (simple and correct; move-based tabu is left for users to implement themselves via a custom decision wrapper).
This commit is contained in:
+1
-1
@@ -26,5 +26,5 @@ pub use crate::algorithms::{
|
||||
GeneticAlgorithmConfig, HillClimber, HillClimberConfig, Moead, MoeadConfig, Nsga2,
|
||||
Nsga2Config, Nsga3, Nsga3Config, Paes, PaesConfig, ParticleSwarm, ParticleSwarmConfig,
|
||||
RandomSearch, RandomSearchConfig, SimulatedAnnealing, SimulatedAnnealingConfig, Spea2,
|
||||
Spea2Config,
|
||||
Spea2Config, TabuSearch, TabuSearchConfig,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user