Skip to content

Chore(): Bump dependency float_eq #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 2, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ keywords = ["linear-programming", "optimization", "symbolic", "math", "solver"]
categories = ["mathematics", "algorithms", "science", "api-bindings", "data-structures"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html


[features]
default = ["coin_cbc"]

Expand All @@ -25,13 +24,12 @@ fnv = "1"

[dev-dependencies]
criterion = "0.3"
float_eq = "0.5"
float_eq = "0.6"

[[bench]]
name = "benchmark"
harness = false


[package.metadata.docs.rs]
# Display the documentation for all solvers on docs.rs
all-features = true
Expand Down
25 changes: 12 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,25 +67,25 @@ You can find a resource allocation problem example in
This library offers an abstraction over multiple solvers. By default, it uses [cbc][cbc], but
you can also activate other solvers using cargo features.

| solver feature name | integer variables | no C compiler\*| no additional libs\** | fast |
|---------------------|-------------------|----------------|-----------------------|------|
| [`coin_cbc`][cbc] | ✅ | ✅ | ❌ | ✅
| [`highs`][highs] | ❌ | ❌ | ✅ | ✅
| [`lpsolve`][lpsolve]| ✅ | ❌ | ✅ | ❌
| [`minilp`][minilp] | ❌ | ✅ | ✅ | ❌
| [`lp-solvers`][lps] | ✅ | ✅ | ✅ | ❌
| solver feature name | integer variables | no C compiler\* | no additional libs\*\* | fast |
| -------------------- | ----------------- | --------------- | ---------------------- | ---- |
| [`coin_cbc`][cbc] | ✅ | ✅ | ❌ | ✅ |
| [`highs`][highs] | ❌ | ❌ | ✅ | ✅ |
| [`lpsolve`][lpsolve] | ✅ | ❌ | ✅ | ❌ |
| [`minilp`][minilp] | ❌ | ✅ | ✅ | ❌ |
| [`lp-solvers`][lps] | ✅ | ✅ | ✅ | ❌ |

* \* no C compiler: builds with only cargo, without requiring you to install a C compiler
* \** no additional libs: works without additional libraries at runtime, all the dependencies are statically linked
- \* no C compiler: builds with only cargo, without requiring you to install a C compiler
- \*\* no additional libs: works without additional libraries at runtime, all the dependencies are statically linked

To use an alternative solver, put the following in your `Cargo.toml`:

```toml
good_lp = { version = "*", features = ["your solver feature name"], default-features = false }
```


### [cbc][cbc]

Used by default, performant, but requires to have the cbc C library headers available on the build machine,
and the cbc dynamic library available on any machine where you want to run your program.

Expand All @@ -103,7 +103,6 @@ brew install cbc

[cbc]: https://www.coin-or.org/Cbc/


### [minilp](https://docs.rs/minilp)

minilp is a pure rust solver, which means it works out of the box without installing anything else.
Expand All @@ -121,7 +120,7 @@ written in C and based on the revised simplex method.
good_lp uses the [lpsolve crate](https://docs.rs/lpsolve/) to call lpsolve.
You will need a C compiler, but you won't have to install any additional library.

[lpsolve]:http://lpsolve.sourceforge.net/5.5/
[lpsolve]: http://lpsolve.sourceforge.net/5.5/

### [HiGHS][highs]

Expand All @@ -144,7 +143,7 @@ Instead, it calls other solvers at runtime.
It writes the given problem to a `.lp` file, and launches an external solver command
(such as **gurobi**, **cplex**, **cbc**, or **glpk**) to solve it.

There is some overhead associated to this method: it can take a few hundred milliseconds
There is some overhead associated to this method: it can take a few hundred milliseconds
to write the problem to a file, launch the external solver, wait for it to finish, and then parse its solution.
If you are not solving a few large problems but many small ones (in a web server, for instance),
then this method may not be appropriate.
Expand Down