-
Notifications
You must be signed in to change notification settings - Fork 97
Description
While most SDP only allow to create PSD matrices of variables, some solvers allow to to create matrices bounded (in the semidefiniteness sense) by other matrices.
For instance, PENNON allows to create a matrix X of variables in (cc @mstingl-fau @kocvara):
lambda_lower * I <= X <= lambda_upper * I
and SDPNAL allows to create a matrix X of variables in
L <= X <= U
We could create a set EigenvalueInterval(lambda_lower, lambda_upper), EigenvalueGreaterThan(lambda_lower), EigenvalueLessThan(lambda_lower), SemidefiniteInteval(L, U), SemidefiniteGreaterThan(L), SemidefiniteLessThan(U).
Of course the ...GreaterThan and ...LessThan does not have much interest with VectorAffineFunction but it can communicate critical problem structure with VectorOfVariables.
Of course, the user would be able to use these sets with solvers not supporting it and EigenvalueInterval would be transformed into SemidefiniteInterval for SDPNAL:
Constraint.SplitIntervalBridgebridgesEigenvalueIntervalintoEigenvalueGreaterThanandEigenvalueLessThanandSemidefiniteIntervalintoSemidefiniteGreaterThanandSemidefiniteLessThan.
- A new bridge to transform
Eigenvalue...toSemidefinite.... FlipSignBridgeto transform...LessThanto...GreaterThan- A new bridge to transform
SemidefiniteGreaterThantoPositiveSemidefiniteConeTriangle.
In JuMP, the user should be able to do
@variable(model, Q[1:5, 1:5] in EigenvalueInterval(lambda_lower, lambda_upper))