0.1.0 Nov 22, 2019

#30 in #linear-programming

MIT license

8KB
77 lines

slp-cli

SolHOP Linear Programming Solver.

Crates.io Crates.io Crates.io

Currently, the simplex method is implemented. Soon ILP and MIP will be supported.

This projetct is still in development. The APIs can change a lot before the first stable release v1.0.0.

Install and Run

Install

cargo install slp-cli

Help

$ slp --help
slp 0.1.0
SolHOP Linear Programming Solver

USAGE:
    slp [FLAGS] <file>

FLAGS:
    -h, --help        Prints help information
    -p, --parallel    Enable data parallelism
    -r, --rat64       Use Rational64
    -V, --version     Prints version information

ARGS:
    <file>    Input file

Usage

slp input.txt

where input.txt contains the LP instance to be solved.

If no file is provided then input is taken from stdin.

To enable data parallelism use -p flag.

slp input.txt -p

Examples

Example 1

Input:

vars       x1>=0, x2>=0
max        2x1 + 3x2
subject to 2x1 +  x2 <= 18,
           6x1 + 5x2 <= 60,
           2x1 + 5x2 <= 40

Output:

OPTIMAL 28
SOLUTION 5 6

representing the objective value to be 28 and the solution as x1 = 5, x2 = 6.

Example 2

Input:

vars       x1>=0, x2>=0
max        2x1 + 3x2
subject to 2x1 +  x2 <= 18,
           6x1 + 5x2 <= 60,
           2x1 + 5x2 <= -40

Output:

INFEASIBLE

Example 3

Input:

vars x>=0, y>=0
min 6x+3y subject to x+y>=1, 2x-y>=1, 3y<=2

Output when run using command slp input.txt:

OPTIMAL -5
SOLUTION 0.6666666666666666 0.33333333333333337

To use Rational64 numbers, use -r flag. Output when run using command slp -r input.txt:

OPTIMAL -5
SOLUTION 2/3 1/3

License

MIT

Dependencies

~6MB
~110K SLoC