Skip to content

Releases: engri-1101/gilp

v2.1.0

18 Oct 23:50
Compare
Choose a tag to compare
This release adds the following additional functionality:

- Use gilp_style.json to override default theme (color scheme)
- Default theme made to be color blind friendly
- Cormen et. al Introdution to Algorithms example LPs

v2.0.0

18 Aug 04:26
Compare
Choose a tag to compare
This release is mainly due to a single incompatible change: renaming
tableau_form -> lp_form in the simplex_visual function. This was chosen to more
accurately reflect the meaning of the parameter. In addition, instead of being
set to "canonical" or "dictionary", it can be set to "tableau" or "dictionary".
Also worth noting is that the Plotly dependency noe requires 5.0.0 or higher.
This is to avoid an issue with rendering on Safari 13. The docs were updated to
avoid this rendering issue on 3D plots as well. Lastly, not providing an
initial solution first defaults to trying an all zero solution before falling
back to the Phase I algorithm. This was done to avoid setting the parameter in
examples for students.

Initial Release (v1.0.0)

26 Jul 22:24
Compare
Choose a tag to compare
This release follows extensive use of the Python package by ENGRI 1101 students
across multiple iterations of the course. All known bugs have been resolved.

v1.0.0rc5

14 Apr 20:32
Compare
Choose a tag to compare
v1.0.0rc5 Pre-release
Pre-release
Bug fix:
 - Basis in BFS list (path) returned by simplex was a reference to a list
   rather than a copy. This caused the basis for each BFS to be inconsitent
   which in turn caused tableaus to not update on visualizations. Now fixed.

v1.0.0rc4

01 Dec 23:53
Compare
Choose a tag to compare
v1.0.0rc4 Pre-release
Pre-release
Enhancements:
- Added function to plot integer points of an LP feasible region

Bug fix:
- Now requires NumPy>=1.19 as a dependency.

v1.0.0rc3

24 Nov 22:14
Compare
Choose a tag to compare
v1.0.0rc3 Pre-release
Pre-release
Enhancements:
- Define an LP using any type of sequence (not just numpy array)
- Branch and bound visual now shows isoprofit lines.
- IP examples added to examples module.
- Pyhull dependency removed.
- Visualization functions test cases added. Coverage increased,
- Select a default visibility for update_sliders function.
- Added linting to CI

Bug fixes:
- Fathom by bound now fathoms nodes with objective <= to best bound not just <.
- Shift x properly in tree positioning function
- Wrong text colors used in the branch and bound nodes
- Fixed circleci badge in README
- Numerical issue in polytope_facets fixed
- Branch and bound iteration used wrong LP coefficents

v1.0.0rc2

03 Nov 03:29
Compare
Choose a tag to compare
v1.0.0rc2 Pre-release
Pre-release
This is the second release canidate for v1.0.0. Many minor changes were made
from v1.0.0rc1. These changes included:

- Renaming the style module to graphic.
- Improving docstrings across the entire codebase.
- Implementing __init__.py.
- Bug fix: rounding to address numerical error.
- Updating README and docs.

Furthermore, the project now uses Contiuous Integration with CircleCI and is
integrated with Codecov for managing code coverage reports.

Branch and Bound Visualization

29 Oct 01:27
Compare
Choose a tag to compare
Pre-release
The visualization for the branch and bound algorithm (bnb_visual) is now
complete. Like other visualization functions, it takes a standard inequality LP
in either 2 or 3 variables. It then visualizes branch and bound assuming all
variables must be integral. On the left subplot, the remaining feasible region
that has not been eliminated from some bound is shown as well as a feint
outline of the initial LP feasible region. The current node's feasible region
is darkend and the simplex path is shown on it. On the right subplot, the
branch and bound tree is shown with the bound, objective value, and solution
for each node. Explored nodes are colored in and the current node is darkened
like it's feasible region on the left subplot.

In addition to this added functionality, there were numerous bug fixes, code
restructuring, and cosmetic changes.

Phase I and Branch and Bound

24 Sep 22:42
Compare
Choose a tag to compare
Pre-release
Phase I of the simplex method for finding an initial basic feasible solution
has been implemented. If an initial basic feasible solution is not provided to
the simplex function, Phase I is used to generate one.

Branch and bound has now been implemented as well. Given an LP in either
standard equality or inequality form, branch and found finds the optimal
all integral solution. No visualization has been implemented yet.

Previously, the LP class limited the creation of LPs to those in standard
inequality form. Although only standard inequality form LPs (in 2 and 3
variables) can be visualized, LPs can be instantiated in either standard
equality or inequality form. Furthermore, the b vector in Ax <= b or Ax == b is
no longer restricted to be nonnegative.

Initial Development Release

24 Sep 21:25
Compare
Choose a tag to compare
Pre-release
This intitial development release follows a peer review by past ENGRI 1101
students. The bugs they identified are all addressed. This release contains
the core functionality of the gilp (Geometric Interpretation of Linear
Programming) package. Using the simplex.py module, one can create and solve
standard inequality form LPs using the revised simplex method. In addition,
the feasible region of an LP and the iterations of simplex on a given LP
can be visualized using the visualize.py module. Some example LPs are given
in the examples.py module and helper functions for interacting with ploty are
given in the style.py module.