solverforge_config/
acceptor.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Deserialize, Serialize)]
5#[serde(tag = "type", rename_all = "snake_case")]
6pub enum AcceptorConfig {
7 HillClimbing,
9
10 StepCountingHillClimbing(StepCountingHillClimbingConfig),
12
13 TabuSearch(TabuSearchConfig),
15
16 SimulatedAnnealing(SimulatedAnnealingConfig),
18
19 LateAcceptance(LateAcceptanceConfig),
21
22 DiversifiedLateAcceptance(DiversifiedLateAcceptanceConfig),
24
25 GreatDeluge(GreatDelugeConfig),
27}
28
29#[derive(Debug, Clone, Default, Deserialize, Serialize)]
31#[serde(rename_all = "snake_case")]
32pub struct StepCountingHillClimbingConfig {
33 pub step_count_limit: Option<u64>,
34}
35
36#[derive(Debug, Clone, Default, Deserialize, Serialize)]
38#[serde(rename_all = "snake_case")]
39pub struct TabuSearchConfig {
40 pub entity_tabu_size: Option<usize>,
42
43 pub value_tabu_size: Option<usize>,
45
46 pub move_tabu_size: Option<usize>,
48
49 pub undo_move_tabu_size: Option<usize>,
51
52 pub aspiration_enabled: Option<bool>,
56}
57
58#[derive(Debug, Clone, Default, Deserialize, Serialize)]
60#[serde(rename_all = "snake_case")]
61pub struct SimulatedAnnealingConfig {
62 pub starting_temperature: Option<String>,
64
65 pub decay_rate: Option<f64>,
67}
68
69#[derive(Debug, Clone, Default, Deserialize, Serialize)]
71#[serde(rename_all = "snake_case")]
72pub struct LateAcceptanceConfig {
73 pub late_acceptance_size: Option<usize>,
75}
76
77#[derive(Debug, Clone, Default, Deserialize, Serialize)]
79#[serde(rename_all = "snake_case")]
80pub struct DiversifiedLateAcceptanceConfig {
81 pub late_acceptance_size: Option<usize>,
83
84 pub tolerance: Option<f64>,
86}
87
88#[derive(Debug, Clone, Default, Deserialize, Serialize)]
90#[serde(rename_all = "snake_case")]
91pub struct GreatDelugeConfig {
92 pub water_level_increase_ratio: Option<f64>,
94}