Passing a CMP when constructing a formulation is now optional
Constrained Optimizers no longer hold a self.cmp attribute
When no CMP is provided to the formulation, the user must provide pre_computed_state when calling formulation.composite_objective method of the formulation.
write_state parameter of formulation.composite_objective is a no-op when formulation.cmp is None
Testing
A toy test was implemented (tests/test_simplest_pipeline.py) without a CMP or closure. This considers inequality constraints (not proxy) and a SimultaneousConstrainedOptimizer.
Extrapolation and Alternating updates without a CMP are untested. Nonetheless, if a closure is provided to their step() method, they should work.
This is NOT breaking backwards compatibility. It is an alternative way for the user to use Cooper, but creating a CMP with a closure is still supported.
Docs
The changes in this PR have not been documented. Documentation is currently lagging behind code in dev branch (#53 #29).
I think that we could tackle all the issues with documentation in one go. For now, I propose to consider this PR without docs.
Addresses #55
Changes
self.cmp
attributepre_computed_state
when callingformulation.composite_objective
method of the formulation.write_state
parameter offormulation.composite_objective
is a no-op whenformulation.cmp
isNone
Testing
A toy test was implemented (
tests/test_simplest_pipeline.py
) without a CMP or closure. This considers inequality constraints (not proxy) and a SimultaneousConstrainedOptimizer.Extrapolation and Alternating updates without a CMP are untested. Nonetheless, if a
closure
is provided to theirstep()
method, they should work.This is NOT breaking backwards compatibility. It is an alternative way for the user to use Cooper, but creating a CMP with a closure is still supported.
Docs
The changes in this PR have not been documented. Documentation is currently lagging behind code in dev branch (#53 #29). I think that we could tackle all the issues with documentation in one go. For now, I propose to consider this PR without docs.