Skip to content

Matrix bounds #942

@blegat

Description

@blegat

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.SplitIntervalBridge bridges
    • EigenvalueInterval into EigenvalueGreaterThan and EigenvalueLessThan and
    • SemidefiniteInterval into SemidefiniteGreaterThan and SemidefiniteLessThan.
  • A new bridge to transform Eigenvalue... to Semidefinite....
  • FlipSignBridge to transform ...LessThan to ...GreaterThan
  • A new bridge to transform SemidefiniteGreaterThan to PositiveSemidefiniteConeTriangle.

In JuMP, the user should be able to do

@variable(model, Q[1:5, 1:5] in EigenvalueInterval(lambda_lower, lambda_upper))

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions