0
votes

I am struggling to solve an optimization problem, numerically, of the following (generic) form.

minimize F(x)

such that:

___(1): 0 < x < 1

___(2): M(x) >= 0.

where M(x) is a matrix whose elements are quadratic functions of x. The last constraint means that M(x) must be a positive semidefinite matrix. Furthermore F(x) is a callable function. For the more curious, here is a similar minimum-working-example.

I have tried a few options, but to no success.

  1. PICOS, CVXPY and CVX -- In the first two cases, I cannot find a way of encoding a minimax problem such as mine. In the third one which is implemented in MATLAB, the matrices involved in a semidefinite constraint must be affine. So my problem falls outside this criteria.
  2. fmincon -- How can we encode a matrix positivity constraint? One way is to compute the eigenvalues of the matrix M(x) analytically, and constraint each one to be positive. But the analytic expression for the eigenvalues can be horrendous.
  3. MOSEK -- The objective function must be a expressible in a standard form. I cannot find an example of a user-defined objective function.
  4. scipy.optimize -- Along with the objective functions and the constraints, it is necessary to provide the derivative of these functions as well. Particularly in my case, that is fine for the objective function. But, if I were to express the matrix positivity constraint (as well as it's derivative) with an analytic expression of the eigenvalues, that can be very tedious.

My apologies for not providing a MWE to illustrate my attempts with each of the above packages/softwares.

Can anyone please suggest a package/software which could be useful to me in solving my optimization problem?

1
Could give an example for F and M?Cleb
A more concrete example of $M(x)$ would help. As for MOSEK (I work at MOSEK), you cannot specify user-defined functions for SDP. However, if F(X) is conic representable, maybe you do not need it. See docs.mosek.com/modeling-cookbook/index.htmlAndreaCassioli

1 Answers

0
votes

Have a look at a nonlinear optimization package with box constraints, where different type of constraints may be coded via penalty or barrier techniques. Look at the following URL merlin.cs.uoi.gr