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 level_temperatures: Option<Vec<f64>>,
64
65 pub decay_rate: Option<f64>,
67
68 pub hill_climbing_temperature: Option<f64>,
70
71 pub hard_regression_policy: Option<HardRegressionPolicyConfig>,
73
74 pub calibration: Option<SimulatedAnnealingCalibrationConfig>,
76}
77
78#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Deserialize, Serialize)]
79#[serde(rename_all = "snake_case")]
80pub enum HardRegressionPolicyConfig {
81 #[default]
82 TemperatureControlled,
83 NeverAcceptHardRegression,
84}
85
86#[derive(Debug, Clone, Default, Deserialize, Serialize)]
87#[serde(rename_all = "snake_case")]
88pub struct SimulatedAnnealingCalibrationConfig {
89 pub sample_size: Option<usize>,
90 pub target_acceptance_probability: Option<f64>,
91 pub fallback_temperature: Option<f64>,
92}
93
94#[derive(Debug, Clone, Default, Deserialize, Serialize)]
96#[serde(rename_all = "snake_case")]
97pub struct LateAcceptanceConfig {
98 pub late_acceptance_size: Option<usize>,
100}
101
102#[derive(Debug, Clone, Default, Deserialize, Serialize)]
104#[serde(rename_all = "snake_case")]
105pub struct DiversifiedLateAcceptanceConfig {
106 pub late_acceptance_size: Option<usize>,
108
109 pub tolerance: Option<f64>,
111}
112
113#[derive(Debug, Clone, Default, Deserialize, Serialize)]
115#[serde(rename_all = "snake_case")]
116pub struct GreatDelugeConfig {
117 pub water_level_increase_ratio: Option<f64>,
119}