slp 0.1.8

SolHOP Linear Programming Solver
Documentation
# slp

SolHOP Linear Programming Solver.

[![Crates.io](https://img.shields.io/crates/v/slp.svg)](https://crates.io/crates/slp)
[![Crates.io](https://img.shields.io/crates/d/slp.svg)](https://crates.io/crates/slp)
![Crates.io](https://img.shields.io/crates/l/slp)
[![Docs](https://docs.rs/slp/badge.svg)](https://docs.rs/slp)
[![Build Status](https://dev.azure.com/solhop/slp/_apis/build/status/solhop.slp?branchName=master)](https://dev.azure.com/solhop/slp/_build/latest?definitionId=1&branchName=master)
<!-- [![Coverage Status](https://coveralls.io/repos/github/solhop/slp/badge.svg?branch=master)](https://coveralls.io/github/solhop/slp?branch=master) -->

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

```sh
cargo install slp
```

### Help

```sh
$ slp --help
slp 0.1.7
SolHOP Linear Programming Solver

USAGE:
    slp [FLAGS] <file>

FLAGS:
    -h, --help        Prints help information
    -m, --mprog       Use mprog format (only for Rational64)
    -p, --parallel    Enable data parallelism
    -r, --rat64       Use Rational64
    -V, --version     Prints version information

ARGS:
    <file>    Input file
```

### Usage

```sh
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.

```sh
slp input.txt -p
```

## Examples

### Example 1

Input:

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

Output:

```txt
OPTIMAL 28
SOLUTION 5 6
```

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

### Example 2

Input:

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

Output:

```txt
INFEASIBLE
```

### Example 3

Input:

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

Output when run using command `rsat input.txt`:

```txt
OPTIMAL -5
SOLUTION 0.6666666666666666 0.33333333333333337
```

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

```txt
OPTIMAL -5
SOLUTION 2/3 1/3
```

## License

[MIT](LICENSE)