pub struct SolvedModel { /* private fields */ }
Expand description
A solved linear programming model.
Implementations§
Source§impl SolvedModel
impl SolvedModel
Sourcepub fn status(&self) -> Status
pub fn status(&self) -> Status
Returns the Status
of the model.
Examples found in repository?
examples/simple_model.rs (line 12)
3fn main() {
4 let mut lp = Model::new();
5 let col1 = lp.add_col(vec![], 1.0, 0.0, 5.0);
6 let _col2 = lp.add_col(vec![], 1.0, 0.0, 10.0);
7 let row = lp.add_row(vec![1.0, 1.0], 1.0, 5.0);
8 assert_eq!(lp.num_cols(), 2);
9 assert_eq!(lp.num_rows(), 1);
10
11 let lp = lp.optimize();
12 let result = lp.status();
13 assert_eq!(result, Status::Optimal);
14 assert!((lp.obj_val() - 5.0).abs() < 1e-6);
15 let dual_sol = lp.dual_solution();
16 assert_eq!(dual_sol.len(), 1);
17 assert!((dual_sol[0] - 1.0).abs() < 1e-6);
18
19 let mut lp = Model::from(lp);
20 lp.remove_row(row);
21 assert_eq!(lp.num_rows(), 0);
22 let lp = lp.optimize();
23 let new_result = lp.status();
24 assert_eq!(new_result, Status::Optimal);
25 assert!((lp.obj_val() - 15.0).abs() < 1e-6);
26 let primal_sol = lp.primal_solution();
27 assert_eq!(primal_sol.len(), 2);
28 assert!((primal_sol[0] - 5.0).abs() < 1e-6);
29 assert!((primal_sol[1] - 10.0).abs() < 1e-6);
30
31 let mut lp = Model::from(lp);
32 lp.remove_col(col1);
33 assert_eq!(lp.num_cols(), 1);
34 let lp = lp.optimize();
35 let new_result = lp.status();
36 assert_eq!(new_result, Status::Optimal);
37 assert!((lp.obj_val() - 10.0).abs() < 1e-6);
38
39 assert!(lp.solving_time() >= 0.0);
40}
Sourcepub fn obj_val(&self) -> f64
pub fn obj_val(&self) -> f64
Returns the objective value of the model.
Examples found in repository?
examples/simple_model.rs (line 14)
3fn main() {
4 let mut lp = Model::new();
5 let col1 = lp.add_col(vec![], 1.0, 0.0, 5.0);
6 let _col2 = lp.add_col(vec![], 1.0, 0.0, 10.0);
7 let row = lp.add_row(vec![1.0, 1.0], 1.0, 5.0);
8 assert_eq!(lp.num_cols(), 2);
9 assert_eq!(lp.num_rows(), 1);
10
11 let lp = lp.optimize();
12 let result = lp.status();
13 assert_eq!(result, Status::Optimal);
14 assert!((lp.obj_val() - 5.0).abs() < 1e-6);
15 let dual_sol = lp.dual_solution();
16 assert_eq!(dual_sol.len(), 1);
17 assert!((dual_sol[0] - 1.0).abs() < 1e-6);
18
19 let mut lp = Model::from(lp);
20 lp.remove_row(row);
21 assert_eq!(lp.num_rows(), 0);
22 let lp = lp.optimize();
23 let new_result = lp.status();
24 assert_eq!(new_result, Status::Optimal);
25 assert!((lp.obj_val() - 15.0).abs() < 1e-6);
26 let primal_sol = lp.primal_solution();
27 assert_eq!(primal_sol.len(), 2);
28 assert!((primal_sol[0] - 5.0).abs() < 1e-6);
29 assert!((primal_sol[1] - 10.0).abs() < 1e-6);
30
31 let mut lp = Model::from(lp);
32 lp.remove_col(col1);
33 assert_eq!(lp.num_cols(), 1);
34 let lp = lp.optimize();
35 let new_result = lp.status();
36 assert_eq!(new_result, Status::Optimal);
37 assert!((lp.obj_val() - 10.0).abs() < 1e-6);
38
39 assert!(lp.solving_time() >= 0.0);
40}
Sourcepub fn primal_solution(&self) -> Vec<f64>
pub fn primal_solution(&self) -> Vec<f64>
Returns the primal solution of the model.
Examples found in repository?
examples/simple_model.rs (line 26)
3fn main() {
4 let mut lp = Model::new();
5 let col1 = lp.add_col(vec![], 1.0, 0.0, 5.0);
6 let _col2 = lp.add_col(vec![], 1.0, 0.0, 10.0);
7 let row = lp.add_row(vec![1.0, 1.0], 1.0, 5.0);
8 assert_eq!(lp.num_cols(), 2);
9 assert_eq!(lp.num_rows(), 1);
10
11 let lp = lp.optimize();
12 let result = lp.status();
13 assert_eq!(result, Status::Optimal);
14 assert!((lp.obj_val() - 5.0).abs() < 1e-6);
15 let dual_sol = lp.dual_solution();
16 assert_eq!(dual_sol.len(), 1);
17 assert!((dual_sol[0] - 1.0).abs() < 1e-6);
18
19 let mut lp = Model::from(lp);
20 lp.remove_row(row);
21 assert_eq!(lp.num_rows(), 0);
22 let lp = lp.optimize();
23 let new_result = lp.status();
24 assert_eq!(new_result, Status::Optimal);
25 assert!((lp.obj_val() - 15.0).abs() < 1e-6);
26 let primal_sol = lp.primal_solution();
27 assert_eq!(primal_sol.len(), 2);
28 assert!((primal_sol[0] - 5.0).abs() < 1e-6);
29 assert!((primal_sol[1] - 10.0).abs() < 1e-6);
30
31 let mut lp = Model::from(lp);
32 lp.remove_col(col1);
33 assert_eq!(lp.num_cols(), 1);
34 let lp = lp.optimize();
35 let new_result = lp.status();
36 assert_eq!(new_result, Status::Optimal);
37 assert!((lp.obj_val() - 10.0).abs() < 1e-6);
38
39 assert!(lp.solving_time() >= 0.0);
40}
Sourcepub fn dual_solution(&self) -> Vec<f64>
pub fn dual_solution(&self) -> Vec<f64>
Returns the dual solution of the model.
Examples found in repository?
examples/simple_model.rs (line 15)
3fn main() {
4 let mut lp = Model::new();
5 let col1 = lp.add_col(vec![], 1.0, 0.0, 5.0);
6 let _col2 = lp.add_col(vec![], 1.0, 0.0, 10.0);
7 let row = lp.add_row(vec![1.0, 1.0], 1.0, 5.0);
8 assert_eq!(lp.num_cols(), 2);
9 assert_eq!(lp.num_rows(), 1);
10
11 let lp = lp.optimize();
12 let result = lp.status();
13 assert_eq!(result, Status::Optimal);
14 assert!((lp.obj_val() - 5.0).abs() < 1e-6);
15 let dual_sol = lp.dual_solution();
16 assert_eq!(dual_sol.len(), 1);
17 assert!((dual_sol[0] - 1.0).abs() < 1e-6);
18
19 let mut lp = Model::from(lp);
20 lp.remove_row(row);
21 assert_eq!(lp.num_rows(), 0);
22 let lp = lp.optimize();
23 let new_result = lp.status();
24 assert_eq!(new_result, Status::Optimal);
25 assert!((lp.obj_val() - 15.0).abs() < 1e-6);
26 let primal_sol = lp.primal_solution();
27 assert_eq!(primal_sol.len(), 2);
28 assert!((primal_sol[0] - 5.0).abs() < 1e-6);
29 assert!((primal_sol[1] - 10.0).abs() < 1e-6);
30
31 let mut lp = Model::from(lp);
32 lp.remove_col(col1);
33 assert_eq!(lp.num_cols(), 1);
34 let lp = lp.optimize();
35 let new_result = lp.status();
36 assert_eq!(new_result, Status::Optimal);
37 assert!((lp.obj_val() - 10.0).abs() < 1e-6);
38
39 assert!(lp.solving_time() >= 0.0);
40}
Sourcepub fn solving_time(&self) -> f64
pub fn solving_time(&self) -> f64
Returns the solving time of the model in seconds.
Examples found in repository?
examples/simple_model.rs (line 39)
3fn main() {
4 let mut lp = Model::new();
5 let col1 = lp.add_col(vec![], 1.0, 0.0, 5.0);
6 let _col2 = lp.add_col(vec![], 1.0, 0.0, 10.0);
7 let row = lp.add_row(vec![1.0, 1.0], 1.0, 5.0);
8 assert_eq!(lp.num_cols(), 2);
9 assert_eq!(lp.num_rows(), 1);
10
11 let lp = lp.optimize();
12 let result = lp.status();
13 assert_eq!(result, Status::Optimal);
14 assert!((lp.obj_val() - 5.0).abs() < 1e-6);
15 let dual_sol = lp.dual_solution();
16 assert_eq!(dual_sol.len(), 1);
17 assert!((dual_sol[0] - 1.0).abs() < 1e-6);
18
19 let mut lp = Model::from(lp);
20 lp.remove_row(row);
21 assert_eq!(lp.num_rows(), 0);
22 let lp = lp.optimize();
23 let new_result = lp.status();
24 assert_eq!(new_result, Status::Optimal);
25 assert!((lp.obj_val() - 15.0).abs() < 1e-6);
26 let primal_sol = lp.primal_solution();
27 assert_eq!(primal_sol.len(), 2);
28 assert!((primal_sol[0] - 5.0).abs() < 1e-6);
29 assert!((primal_sol[1] - 10.0).abs() < 1e-6);
30
31 let mut lp = Model::from(lp);
32 lp.remove_col(col1);
33 assert_eq!(lp.num_cols(), 1);
34 let lp = lp.optimize();
35 let new_result = lp.status();
36 assert_eq!(new_result, Status::Optimal);
37 assert!((lp.obj_val() - 10.0).abs() < 1e-6);
38
39 assert!(lp.solving_time() >= 0.0);
40}
Sourcepub fn reduced_costs(&self) -> Vec<f64>
pub fn reduced_costs(&self) -> Vec<f64>
Returns the reduced costs of the model.
Sourcepub fn num_iterations(&self) -> i32
pub fn num_iterations(&self) -> i32
Returns the number of iterations it took to solve the model.
Sourcepub fn col_basis_status(&self, col_id: ColId) -> ColBasisStatus
pub fn col_basis_status(&self, col_id: ColId) -> ColBasisStatus
Sourcepub fn row_basis_status(&self, row_id: RowId) -> RowBasisStatus
pub fn row_basis_status(&self, row_id: RowId) -> RowBasisStatus
Trait Implementations§
Source§impl From<SolvedModel> for Model
impl From<SolvedModel> for Model
Source§fn from(solved_model: SolvedModel) -> Self
fn from(solved_model: SolvedModel) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for SolvedModel
impl RefUnwindSafe for SolvedModel
impl !Send for SolvedModel
impl !Sync for SolvedModel
impl Unpin for SolvedModel
impl UnwindSafe for SolvedModel
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more