Skip to content

Commit

Permalink
release 0.3.2.3
Browse files Browse the repository at this point in the history
  • Loading branch information
amosr committed Nov 12, 2018
1 parent 9373e61 commit a3b3a11
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 17 deletions.
30 changes: 30 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
0.3.2.3, 2018/11/13:
* Fix pretty-printing bug: printed programs did not include final 'End' line, so cbc could not parse the programs
* Relax the upper bound for containers dependency (contributed by @fumieval)
* Update test dependencies
* Update package description

0.3.2.2, 2018/06/04:
* Build -Wall clean with GHC 8.4.3
* Relax the upper bound for base dependency
* Add missing semigroup instances (contributed by @fumieval)

0.3.2.1, 2015/07/21:
* Naive implementations of two solving algorithms:
* Branch-and-bound algorithm for mixed programs
* Simplex algorithm for relaxed (real) programs
* Add tests to package description

0.3.2.0, 2014/11/02:
* Error handling for simplifier

0.3.1.0, 2014/09/19:
* Simplifier for Canon programs
* Pretty-printer for Canon programs

0.3.0.0, 2014/09/03:
* Simplify Canonical representation
* Add evaluator for Program representation

0.1.0.0, 2014/06/04:
* Initial release
19 changes: 5 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,10 @@
limp
====

Eventually, this will become a pure Haskell library for Linear Integer/Mixed Programming.
This package provides two representations for linear programs: "Numeric.Limp.Program", which is what I expect end-users to use, and
"Numeric.Limp.Canon", which is simpler, but would be less nice for writing linear programs.
You can convert programs from the Program representation to the Canon representation using "Numeric.Limp.Canon.Convert", and then pretty-print the program using "Numeric.Limp.Canon.Pretty".

So far, however, I only have a program representation.
I think the program representation has some minor advantages over existing ones: we separate Z-valued variables (Int) from R-valued variables (Double), which should make retrieving values a little nicer.
The Linear type for linear functions is also indexed over whether it is purely Z, or mixed.
While linear programming generally only supports less-than-or-equal comparisons, an less-than on Z can be changed to <=+1.
I'm not yet sure whether the added complication on Linear is worth this minor syntactic sugar, though.
There is a very simple branch-and-bound solver in "Numeric.Limp.Solve.Branch.Simple", and a simplex solver for relaxed (real only) programs in "Numeric.Limp.Solve.Simplex.Maps".
See the limp-cbc package for a simple external solver.



To do
===
Implement a Simplex-style algorithm for Canon. This probably won't be as fast as a real matrix-based simplex, but would be easy to implement.
After both are implemented, we can check them against each other on random inputs.

And lots more.
9 changes: 6 additions & 3 deletions limp.cabal
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
name: limp
version: 0.3.2.2
version: 0.3.2.3
synopsis: representation of Integer Linear Programs
description: so far, this package just provides two representations for linear programs: "Numeric.Limp.Program", which is what I expect end-users to use, and
description: This package provides two representations for linear programs: "Numeric.Limp.Program", which is what I expect end-users to use, and
"Numeric.Limp.Canon", which is simpler, but would be less nice for writing linear programs.
see the limp-cbc package for a simple solver.
You can convert programs from the Program representation to the Canon representation using "Numeric.Limp.Canon.Convert", and then pretty-print the program using "Numeric.Limp.Canon.Pretty".

There is a very simple branch-and-bound solver in "Numeric.Limp.Solve.Branch.Simple", and a simplex solver for relaxed (real only) programs in "Numeric.Limp.Solve.Simplex.Maps".
See the limp-cbc package for a simple external solver.

license: MIT
license-file: LICENSE
Expand Down

0 comments on commit a3b3a11

Please sign in to comment.