3 个版本 (1 个稳定版)
1.0.0 | 2020 年 9 月 12 日 |
---|---|
0.9.0 | 2020 年 9 月 12 日 |
0.1.0 | 2019 年 8 月 23 日 |
#2564 in 算法
22KB
469 行
simplex
线性规划求解器。
使用它直接从 Rust 中解决你的线性规划问题。例如,对于这个问题
minimize -3x + y - 2z
with 2x - 2y + 3z <= 5
x + y - z <= 3
x - y + z <= 2
你可以这样做
use simplex::*;
fn main(){
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();
match simplex.solve() {
SimplexOutput::UniqueOptimum(x) => println!("{}", x),
SimplexOutput::MultipleOptimum(x) => println!("{}", x),
_ => panic!("No solution or unbounded"),
}
println!("{:?}", simplex.get_var(1));
println!("{:?}", simplex.get_var(2));
println!("{:?}", simplex.get_var(3));
}
依赖项
~1.5MB
~25K SLoC