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}