Skip to main content

solverforge_config/
lib.rs

1/* Configuration system for SolverForge.
2
3Load solver configuration from TOML files to control termination,
4phases, and acceptors without code changes.
5
6# Examples
7
8Load configuration from TOML string:
9
10```
11use solverforge_config::SolverConfig;
12use std::time::Duration;
13
14let config = SolverConfig::from_toml_str(r#"
15[termination]
16seconds_spent_limit = 30
17unimproved_seconds_spent_limit = 5
18
19[[phases]]
20type = "construction_heuristic"
21construction_heuristic_type = "first_fit"
22
23[[phases]]
24type = "local_search"
25[phases.acceptor]
26type = "late_acceptance"
27late_acceptance_size = 400
28"#).unwrap();
29
30assert_eq!(config.time_limit(), Some(Duration::from_secs(30)));
31assert_eq!(config.phases.len(), 2);
32```
33
34Use default config when file is missing:
35
36```
37use solverforge_config::SolverConfig;
38
39let config = SolverConfig::load("solver.toml").unwrap_or_default();
40// Proceeds with defaults if file doesn't exist
41```
42*/
43
44mod acceptor;
45mod director;
46mod error;
47mod forager;
48mod move_selector;
49mod phase;
50mod solver_config;
51mod termination;
52
53pub use acceptor::{
54    AcceptorConfig, GreatDelugeConfig, LateAcceptanceConfig, SimulatedAnnealingConfig,
55    TabuSearchConfig,
56};
57pub use director::DirectorConfig;
58pub use error::ConfigError;
59pub use forager::{ForagerConfig, PickEarlyType};
60pub use move_selector::{
61    CartesianProductConfig, ChangeMoveConfig, KOptMoveSelectorConfig, ListChangeMoveConfig,
62    ListReverseMoveConfig, ListRuinMoveSelectorConfig, ListSwapMoveConfig, MoveSelectorConfig,
63    NearbyListChangeMoveConfig, NearbyListSwapMoveConfig, SubListChangeMoveConfig,
64    SubListSwapMoveConfig, SwapMoveConfig, UnionMoveSelectorConfig,
65};
66pub use phase::{
67    ConstructionHeuristicConfig, ConstructionHeuristicType, CustomPhaseConfig,
68    ExhaustiveSearchConfig, ExhaustiveSearchType, LocalSearchConfig, PartitionedSearchConfig,
69    PhaseConfig,
70};
71pub use solver_config::{EnvironmentMode, MoveThreadCount, SolverConfig, SolverConfigOverride};
72pub use termination::TerminationConfig;
73
74#[cfg(test)]
75mod tests;