Releases: engri-1101/gilp
Releases · engri-1101/gilp
v2.1.0
v2.0.0
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)
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
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
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
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
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
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
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
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.