-
Notifications
You must be signed in to change notification settings - Fork 94
Description
I am still processing the details, but after talking to @mlubin I think a name change from ConstraintDual
to ConicDual
may be important to allow the correct generic dual convention in the future.
The current dual conventions are based on Conic duality, but to me a more generic dual convention includes:
- dual for a constraint: simpler constraint (usually linear inequality) that approximates/contains the constraint.
- optimal dual for a constraint: a dual constraint that can replace the original constraint and lead to the same optimal value (and maybe solution)
- optimal set of constraint duals: set of optimal duals for the constraints that give a simple proof of optimality: e.g. objective is cx and duals are linear inequalities the cone generated by their lhs contains c
- dual problem: structured optimization problem that finds an optimal set of constraint duals.
Point 1. also works for functions and sets, and probably the function and set duals can be combined into a dual for the associated constraint (e.g. if the function is affine and the set is a cone, we know how to get the constraint dual). Points 2. and 3. are the same up to the relative scaling between the duals required by Point 3. You also may be able to get the duals for 3. even if 4. does not exist. Probably a lot more to discuss about this (e.g. infeasibility and unboundedness) and so too early to resolve.
In the mean time I propose changing ConstraintDual
to ConicDual
so we can reserve FunctionDual
, SetDual
and ConstraintDual
for the future. ConicDual
would be a special case of SetDual
whose feasibility/optimality is w/r to 4. In particular, this would allow us to later have a ConeDual
in between SetDual
and ConicDual
whose feasibility/optimality could be w/r to 1.-3. (e.g. in a conic problem the ConeDual
s in an optimal set from 3. would be any non-zero scalings of the optimal ConicDual
s)