Skip to content

Releases: convexengineering/gpkit

v0.5.0

02 Dec 18:06
Compare
Choose a tag to compare
  • Added and documented debugging tools
  • Added and documented vectorization tools
  • Documented modular model construction
  • 3200 lines of code, 1800 lines of tests, 1700 lines of docstring. (not counting interactive)

Changes to named models / Model inheritance

We are deprecating the creation of named submodels with custom __init__ methods. Previously, variables created during __init__ in any class inheriting from Model were replaced by a copy with __class__.__name__ added as varkey metadata. This was slow, a bit irregular, and hacky.

We're moving to an explicitly-irregular setup method, which (if declared for a class inheriting from Model) is automatically called during Model.__init__ inside a NamedVariables(self.__class__.__name__) environment. This 1) handles the naming of variables more explicitly and efficiently, and 2) allows us to capture variables created within setup, so that constants that are not a part of any constraint can be used directly (several examples of such template models are in the new Building Complex Models documentation).

Model.__init__ calls setup with the arguments given to the constructor, with the exception of substitutions, which is a reserved keyword. This allows for the easy creation of a named model with custom parameter values (as in the documentation's Beam example). setup methods should return an iterable (list, tuple, ConstraintSet, ...) of constraints or nothing if the model contains no constraints. To declare a submodel cost, set self.cost during setup. However, we often find declaring a model's cost explicitly just before solving to be a more legible practice.

In addition to permitting us to name variables at creation, and include unconstrained variables in a model, we hope that setup methods will clarify the side effects of named model creation.

v0.4.2

07 Oct 20:52
Compare
Choose a tag to compare

Release notes

  • prototype handling of SignomialEquality constraints
  • fix an issue where solution tables printed incorrect units (despite the units being correct in the SolutionArray data structure)
  • fix controlpanel slider display for newer versions of ipywidgets
  • fix an issue where identical unit-ed variables could have different hashes
  • Make the text of several error messages more informative
  • Allow monomial approximation of monomials
  • bug fixes and improvements to TightConstraintSet
  • Don't print results table automatically (it was unwieldy for large models). To print it, print sol.table().
  • Use cvxopt's ldl kkt solver by default for more robustness to rank issues
  • Improved ConstraintSet.__getitem__, only returns top-level Variable
  • Move toward the varkeys of a ConstraintSet being an immutable set
  • CPI update
  • numerous pylint fixes
  • BoundedConstraint sets added for dual feasibility debugging
  • SP sweep compatibility

v0.4.1

04 Jun 11:56
Compare
Choose a tag to compare
version 0.4.1 as uploaded to pypi

Version 0.4.0 - Nimble Nesterov

18 May 04:41
Compare
Choose a tag to compare

Documentation at time of release

Version 0.4

  • New model for considering constraints: all constraints are considered as sets of constraints which may contain other constraints, and are asked for their substitutions / posynomial less than 1 representation as late as possible.
  • Support for calling external code during an SP solve.
  • New class KeyDict to allow referring to variables by name or with objects.
  • Many many other bug fixes, speed ups, and refactors under the hood.

v0.3.5.6

21 Apr 16:28
Compare
Choose a tag to compare

Fixed some install issues with 0.3.5

v0.3.4: Bugfixes and controlpanel

23 Nov 01:21
Compare
Choose a tag to compare

Includes numerous improvements:

  • Modular / model composition fixes and improvements
  • Working controlpanel() for Model (!!!)
  • ipynb and numpy dependency fixes
  • printing fixes
  • El Capitan fix
  • slider widgets now have units

v0.3.3

29 Sep 14:57
Compare
Choose a tag to compare
v0.3.3.0 as uploaded to pypi

Version 0.3.2 - Modern Monomial updates and bug fixes

05 Sep 21:58
Compare
Choose a tag to compare

Release notes

  • Assorted bug fixes
  • Assorted internal improvements and simplifications
  • Refactor signomial constraints, resulting in smarter SP heuristic
  • Simplify and strengthen equality testing for nomials
  • Not counting submodules, went from 2400 to 2500 lines of code and from 1050 to 1170 lines of docstrings and comments.

Version 0.3.0 - Modern Monomial

15 Aug 06:04
Compare
Choose a tag to compare

Documentation at time of release

Release notes

  • Integrated GP and SP creation under the Model class
  • Improved and simplified under-the-hood internals of GPs and SPs
  • New experimental SP heuristic
  • Improved test coverage
  • Handles vectors which are partially constants, partially free
  • Simplified interaction with Model objects and made it more pythonic
  • Added SP "step" method to allow single-stepping through an SP
  • Isolated and corrected some solver-specific behavior
  • Fully allowed substitutions of variables for 0 (4631255)
  • Use "with" to create a signomials environment (cd8d581)
  • Continuous integration improvements, thanks @galbramc !
  • Not counting subpackages, went from 2200 to 2400 lines of code (additions were mostly longer error messages) and from 650 to 1050 lines of docstrings and comments.
  • Add automatic feasibility-analysis methods to Model and GP
  • Simplified solver logging and printing, making it easier to access solver output.

Version 0.2.0 - Latent Logarithm

28 Jul 03:55
Compare
Choose a tag to compare

Documentation at time of release

Release Notes

  • Various bug fixes
  • Python 3 compatibility
  • Added signomial programming support
  • Added composite objectives
  • Parallelized sweeping
  • Better table printing
  • Linked sweep variables
  • Better error messages
  • Closest feasible point capability
  • Improved install process (no longer requires ctypesgen; auto-detects MOSEK version)
  • Added examples: wind turbine, modular GP, examples from 1967 book, maintenance (part replacement)
  • Documentation grew by ~50%
  • Added Advanced Commands section to documentation
  • Many additional unit tests (roughly doubled testing lines of code)