1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use crate::VariableId;

#[derive(Clone, Debug)]
pub struct Solution {
    objective_value: f64,
    variable_values: Vec<f64>,
}

impl Solution {
    pub(crate) fn new(variable_values: Vec<f64>, objective_value: f64) -> Self {
        Self {
            objective_value,
            variable_values,
        }
    }

    pub fn objective_value(&self) -> f64 {
        self.objective_value
    }

    pub fn variable_values(&self) -> &[f64] {
        &self.variable_values
    }

    pub fn variable_value(&self, v: VariableId) -> f64 {
        self.variable_values[v.0]
    }
}