Skip to main content

solverforge_config/
acceptor.rs

1use serde::{Deserialize, Serialize};
2
3/// Acceptor configuration.
4#[derive(Debug, Clone, Deserialize, Serialize)]
5#[serde(tag = "type", rename_all = "snake_case")]
6pub enum AcceptorConfig {
7    /// Hill climbing (only accept improving moves).
8    HillClimbing,
9
10    /// Tabu search acceptor.
11    TabuSearch(TabuSearchConfig),
12
13    /// Simulated annealing acceptor.
14    SimulatedAnnealing(SimulatedAnnealingConfig),
15
16    /// Late acceptance acceptor.
17    LateAcceptance(LateAcceptanceConfig),
18
19    /// Great deluge acceptor.
20    GreatDeluge(GreatDelugeConfig),
21}
22
23/// Tabu search configuration.
24#[derive(Debug, Clone, Default, Deserialize, Serialize)]
25#[serde(rename_all = "snake_case")]
26pub struct TabuSearchConfig {
27    /// Size of entity tabu list.
28    pub entity_tabu_size: Option<usize>,
29
30    /// Size of value tabu list.
31    pub value_tabu_size: Option<usize>,
32
33    /// Size of move tabu list.
34    pub move_tabu_size: Option<usize>,
35
36    /// Size of undo move tabu list.
37    pub undo_move_tabu_size: Option<usize>,
38}
39
40/// Simulated annealing configuration.
41#[derive(Debug, Clone, Default, Deserialize, Serialize)]
42#[serde(rename_all = "snake_case")]
43pub struct SimulatedAnnealingConfig {
44    /// Starting temperature.
45    pub starting_temperature: Option<String>,
46}
47
48/// Late acceptance configuration.
49#[derive(Debug, Clone, Default, Deserialize, Serialize)]
50#[serde(rename_all = "snake_case")]
51pub struct LateAcceptanceConfig {
52    /// Size of late acceptance list.
53    pub late_acceptance_size: Option<usize>,
54}
55
56/// Great deluge configuration.
57#[derive(Debug, Clone, Default, Deserialize, Serialize)]
58#[serde(rename_all = "snake_case")]
59pub struct GreatDelugeConfig {
60    /// Water level increase ratio.
61    pub water_level_increase_ratio: Option<f64>,
62}