soplex_rs/status.rs
1use std::convert::From;
2
3/// Status of the solver
4#[derive(Debug, PartialEq, Clone)]
5pub enum Status {
6 /// An error occurred
7 Error,
8 /// No ratiotester loaded
9 NoRatioTester,
10 /// No pricer loaded
11 NoPricer,
12 /// No linear solver loaded
13 NoSolver,
14 /// Not initialised error
15 NotInit,
16 /// Solve() aborted to exit decomposition simplex
17 AbortExdecomp,
18 /// Solve() aborted due to commence decomposition simplex
19 AbortDecomp,
20 /// Solve() aborted due to detection of cycling
21 AbortCycling,
22 /// Solve() aborted due to time limit
23 AbortTime,
24 /// Solve() aborted due to iteration limit
25 AbortIter,
26 /// Solve() aborted due to objective limit
27 AbortValue,
28 /// Basis is singular, numerical troubles?
29 Singular,
30 /// No Problem has been loaded
31 NoProblem,
32 /// LP has a usable Basis (maybe LP is changed)
33 Regular,
34 /// Algorithm is running
35 Running,
36 /// Nothing known on loaded problem
37 Unknown,
38 /// LP has been solved to optimality
39 Optimal,
40 /// LP has been proven to be primal unbounded
41 Unbounded,
42 /// LP has been proven to be primal infeasible
43 Infeasible,
44 /// LP is primal infeasible or unbounded
45 InfOrUnbd,
46 /// LP has been solved to optimality but unscaled solution contains violations
47 OptimalUnscaledViolations,
48}
49
50impl From<i32> for Status {
51 fn from(item: i32) -> Self {
52 match item {
53 -15 => Status::Error,
54 -14 => Status::NoRatioTester,
55 -13 => Status::NoPricer,
56 -12 => Status::NoSolver,
57 -11 => Status::NotInit,
58 -10 => Status::AbortExdecomp,
59 -9 => Status::AbortDecomp,
60 -8 => Status::AbortCycling,
61 -7 => Status::AbortTime,
62 -6 => Status::AbortIter,
63 -5 => Status::AbortValue,
64 -4 => Status::Singular,
65 -3 => Status::NoProblem,
66 -2 => Status::Regular,
67 -1 => Status::Running,
68 0 => Status::Unknown,
69 1 => Status::Optimal,
70 2 => Status::Unbounded,
71 3 => Status::Infeasible,
72 4 => Status::InfOrUnbd,
73 5 => Status::OptimalUnscaledViolations,
74 _ => panic!("Invalid value for Status"),
75 }
76 }
77}