Lava Constraint Optimization Library
The BSD-3 licensed lava-optimization library will soon include neuromorphic optimization solvers for linear (LP), quadratic (QP), mixed-integer linear (MILP), mixed-integer quadratic (MIQP) and quadratically constrained quadratic (QCQP) programming, as well as solvers for quadratically unconstrained binary optimization (QUBO) and constraint satisfaction problems (CSP). This first release includes a quadratic programming (QP) solver, following the general design principles of all future solvers in the library. As a first example to demonstrate the basic usage concepts of the solver, we provide a tutorial for solving a LASSO/sparse-coding problem.
This first version is implemented using floating point arithmetic and executes on CPU only. In future releases, we will release additional solvers, with support for Loihi-compatible fixed-point arithmetic on CPU and support for execution on Loihi platforms. The various features and API of the solvers will be described at https://lava-nc.org/optimization.html. In the meantime, we appreciate any feedback on the API design and welcome contributions in areas such as enabling pre-conditioning, pre-solving, heuristics, and meta-heuristics for the solvers where such features are pertinent or interfacing with other packages like PuLP.
New Features and Improvements
* lava.lib.optimization.solver.qp is a first implementation of QP solver dynamics with equality and inequality constraints as well as unconstrained QPs in LAVA.
Bug Fixes and Other Changes
* This is the first release of Lava. No bug fixes or other changes.
Breaking Changes
* This is the first release of Lava. No breaking or other changes.
Known Issues
* Floating-point solutions from the solver compared to numpy implementation of the same dynamics are a little off (precision falls). However, the behavior is convergent towards the actual solution.
* The solver dynamics in Lava take longer than the dynamics in pure numpy resulting for the preliminary message passing implementation.
* The growth-rate of the constraint-correction constant is currently set experimentally. Principled tuning guidelines will be part of the next release. Without this, solution will in most cases show convergent behavior, but convergence will start slowing down/stop away from the optimal solution.
What's Changed
* V0.1.0 of Lava-optimization
* Removing __init__.py from lava/lib to avoid module clash across lava libraries by bamsumit in https://github.com/lava-nc/lava-optimization/pull/12
* Update version to 0.1.1 by mgkwill in https://github.com/lava-nc/lava-optimization/pull/13
New Contributors
* bamsumit made their first contribution in https://github.com/lava-nc/lava-optimization/pull/12
* mgkwill made their first contribution in https://github.com/lava-nc/lava-optimization/pull/1
* mathisrichter made their first contribution in https://github.com/lava-nc/lava-optimization/pull/8
* ashishrao7 made their first contribution in https://github.com/lava-nc/lava-optimization/pull/7
**Full Changelog**: https://github.com/lava-nc/lava-optimization/commits/v0.1.1