pub struct SimplexTable { /* private fields */ }Implementations§
Source§impl SimplexTable
impl SimplexTable
Sourcepub fn solve(&mut self) -> SimplexOutput
pub fn solve(&mut self) -> SimplexOutput
Solve your LP problem
Try to solve the LP problem. It uses the “standard” Simplex algorithm, with Big M method There’s no timeout, so it could run for a very long time if you’re not careful. It returns a SimplexOutput, which has a description of the solution and the optimum value (if exists).
let program = Simplex::minimize(&vec![-3.0, 1.0, -2.0])
.with(vec![
SimplexConstraint::LessThan(vec![2.0, -2.0, 3.0], 5.0),
SimplexConstraint::LessThan(vec![1.0, 1.0, -1.0], 3.0),
SimplexConstraint::LessThan(vec![1.0, -1.0, 1.0], 2.0),
]);
let mut simplex = program.unwrap();
assert_eq!(simplex.solve(), SimplexOutput::MultipleOptimum(-8.0));
assert_eq!(simplex.get_var(1), Some(2.5));
assert_eq!(simplex.get_var(2), Some(1.5));
assert_eq!(simplex.get_var(3), Some(1.0));Sourcepub fn get_var(&self, var: usize) -> Option<f64>
pub fn get_var(&self, var: usize) -> Option<f64>
Gets the value of the N var in a solved problem
let program = Simplex::minimize(&vec![-3.0, 1.0, -2.0])
.with(vec![
SimplexConstraint::LessThan(vec![2.0, -2.0, 3.0], 5.0),
SimplexConstraint::LessThan(vec![1.0, 1.0, -1.0], 3.0),
SimplexConstraint::LessThan(vec![1.0, -1.0, 1.0], 2.0),
]);
let mut simplex = program.unwrap();
assert_eq!(simplex.solve(), SimplexOutput::MultipleOptimum(-8.0));
assert_eq!(simplex.get_var(1), Some(2.5));
assert_eq!(simplex.get_var(2), Some(1.5));
assert_eq!(simplex.get_var(3), Some(1.0));Auto Trait Implementations§
impl Freeze for SimplexTable
impl RefUnwindSafe for SimplexTable
impl Send for SimplexTable
impl Sync for SimplexTable
impl Unpin for SimplexTable
impl UnwindSafe for SimplexTable
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