Rustplex
A fast and efficient Linear Programming (LP) Solver implemented in Rust, designed to solve optimization problems using the Simplex Algorithm.
โจ Features
- Fast & Efficient: Optimized implementation of the Simplex Algorithm for solving LP problems.
- User-Friendly API: Designed for ease of use with a clean and intuitive API.
- Custom Constraints & Objectives: Define your own constraints and objective functions effortlessly.
- Scalable & Reliable: Suitable for large-scale linear programming problems.
๐ Installation
install via Cargo:
-
Implements the two-phase simplex method for solving LP problems efficiently.
-
Detects and handles infeasible or unbounded problems.
-
Configurable Solver:
- Supports custom tolerances and iteration limits via
SolverConfig. - Offers robust numerical stability by accounting for floating-point precision errors.
- Supports custom tolerances and iteration limits via
-
Extensible Slack Dictionary:
- Efficiently manages basic and non-basic variables.
- Allows pivot operations and tracks the objective function dynamically.
-
Detailed Solutions:
- Provides optimal values for decision variables.
- Reports solver status (optimal, infeasible, unbounded, or iteration limit reached).
Roadmap / TODO
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.
Usage
Input Requirements
The solver expects an LP problem in standard form, including:
- An objective function to maximize or minimize.
- A set of constraints.
- Decision variable bounds.
Example
Here is an example of how to set up and solve an LP problem:
use ;
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
๐ Contributing
Contributions are welcome! Feel free to fork, submit issues, or open pull requests.
๐ License
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.