| Crates.io | rustplex |
| lib.rs | rustplex |
| version | 0.2.0 |
| created_at | 2025-02-06 12:14:23.712867+00 |
| updated_at | 2026-01-03 21:41:41.853803+00 |
| description | A linear programming solver based on the Simplex algorithm for Rust |
| homepage | |
| repository | https://github.com/mohsenpakzad/rustplex |
| max_upload_size | |
| id | 1545475 |
| size | 130,903 |
A fast and efficient Linear Programming (LP) Solver implemented in Rust, designed to solve optimization problems using the Simplex Algorithm.
install via Cargo:
cargo add rustplex
Implements the two-phase simplex method for solving LP problems efficiently.
Detects and handles infeasible or unbounded problems.
Configurable Solver:
SolverConfig.Extensible Slack Dictionary:
Detailed Solutions:
Planned features and improvements for future releases:
Comprehensive Documentation: Add detailed API references, architectural explanations, and practical examples to improve usability and understanding.
Multi-thread Architecture: Implement parallel processing for faster solving of large-scale problems.
Integer & Mixed-Integer Programming (MIP): Add branch-and-bound support for integer and mixed-integer variables.
The solver expects an LP problem in standard form, including:
Here is an example of how to set up and solve an LP problem:
use rustplex::{ConstraintSense, Model, ObjectiveSense};
fn main() {
let mut model = Model::new();
let x1 = model.add_variable().with_name("x1").with_lower_bound(0.0);
let x2 = model.add_variable().with_name("x2").with_lower_bound(0.0);
let x3 = model.add_variable().with_name("x3").with_lower_bound(0.0);
model.set_objective(
ObjectiveSense::Maximize,
&x1 + &x2 + &x3,
);
model
.add_constraint(&x1, ConstraintSense::LessEqual, 10)
.with_name("constr1");
model
.add_constraint(&x2 + &x3, ConstraintSense::LessEqual, 5)
.with_name("constr2");
if model.solve().is_ok() {
println!("{}", model.solution());
}
}
Output:
Solver Status: Optimal
Objective Value: 10.00
Variable Values: [
Var(x2): 2.00
Var(x3): 3.00
Var(x1): 5.00
]
Iterations: 3
Solve Time: 18.10ยตs
Contributions are welcome! Feel free to fork, submit issues, or open pull requests.
This project is licensed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-MIT and LICENSE-APACHE for details.
Developed with โค๏ธ in Rust.