CVX with Mosek - optimizer settings

I have a problem with mosek optimizer settings. I have checked the Mosek manual available here:


In chapter 5, there is MSK IPAR OPTIMIZER settings.

MSK IPAR OPTIMIZER (integer)

Controls which optimizer is used to optimize the task.
(default = 0)

0 The choice of optimizer is made automatically.

1 The interior-point optimizer is used.

2 Another cone optimizer.

3 The Qcone optimizer is used.

4 The primal simplex optimizer is used.

5 The dual simplex optimizer is used.

6 Either the primal or the dual simplex optimizer is used.

7 The mixed integer optimizer.

8 The optimizer for nonconvex nonlinear

9 The concurrent optimizer is used.


I suppose when you write

cvx_begin

cvx_solver mosek

cvx_solver_settings(‘MSK_IPAR_OPTIMIZER’,1)

you should set the solver to the interior point optimizer. Doing so yields the output added to the end of the post.

I would like to use concurrent optimizer, therefore, I would like to set

cvx_solver_settings(‘MSK_IPAR_OPTIMIZER’,9) % concurrent solver ID

cvx_solver_settings(‘MSK_IPAR_CONCURRENT_NUM_OPTIMIZERS’,4) % max number of optimizers

and run the problem, however, CVX gives the same failure output. Could someone tell me how to use the Mosek concurrent solver in CVX?


Calling Mosek 7.0.0.106: 27403 variables, 1221 equality constraints.

For improved efficiency, Mosek is solving the dual problem.

NOTE: custom settings have been set for this solver.

MOSEK Version 7.0.0.106 (Build date: 2014-2-20 22:10:53)
Copyright © 1998-2014 MOSEK ApS, Denmark. WWW: http://mosek.com

Computer
Platform : Windows/64-X86
Cores : 2

Problem
Name :
Objective sense : min
Type : CONIC (conic optimization problem)
Constraints : 1221
Cones : 409
Scalar variables : 27403
Matrix variables : 0
Integer variables : 0

Optimizer started.
Conic interior-point optimizer started.
Interior-point optimizer terminated. Time: 0.00.

Optimizer terminated. Time: 0.06

Interior-point solution summary

Problem status : UNKNOWN

Solution status : UNKNOWN

Primal. obj: 0.0000000000e+000 Viol. con: 1e+000 var: 0e+000 cones: 0e+000

Dual. obj: 0.0000000000e+000 Viol. con: 0e+000 var: 9e+001 cones: 0e+000

Optimizer summary

Optimizer - time: 0.06

Interior-point          - iterations : 0         time: 0.00   

  Basis identification  -                        time: 0.00    

    Primal              - iterations : 0         time: 0.00   

    Dual                - iterations : 0         time: 0.00   

    Clean primal        - iterations : 0         time: 0.00   

    Clean dual          - iterations : 0         time: 0.00   

    Clean primal-dual   - iterations : 0         time: 0.00   

Simplex                 -                        time: 0.00   

  Primal simplex        - iterations : 0         time: 0.00   

  Dual simplex          - iterations : 0         time: 0.00   

  Primal-dual simplex   - iterations : 0         time: 0.00    

Mixed integer           - relaxations: 0         time: 0.00    

Mosek error: MSK_RES_ERR_INV_OPTIMIZER (An invalid optimizer (1) has been chosen for the problem.)

Status: Error

Optimal value (cvx_optval): NaN

Reference to non-existent field ‘sol’.

Error in cvx_mosek>solve (line 486)


Premysl Vorac

University of West Bohemia

1 Like

This is a MOSEK-specific question. You should consult the MOSEK documentation to understand what the MSK_RES_ERR_INV_OPTIMIZER means in your case. And that is an old manual. Go to http://mosek.com and look at their latest documentation.

You are trying apply an optimizer for a linear problem to problem with conic constraints i.e.

Cones : 409

so you have 409 conic constraints.

The concurrent optimizer is only useful for linear problems where the interior-point and simplex optimizers can compete. For conic problems the default optimizer is only useful choice. So you have no choice but using the default one in this case.

A note to Michael. This is

cvx_solver_settings(‘MSK_IPAR_OPTIMIZER’,1)

somewhat nonportable across version whereas

cvx_solver_settings(‘MSK_IPAR_OPTIMIZER’,*MSK_OPTIMIZER_INTPNT’)

is more robust. It might go over board supporting the more robust version though.

The more robust version works fine as well. CVX does not check or process the solver settings in any way.

Thank you both for answers. That is what I wanted to know.

To specify my problem. First, I have one non-linear problem (LMI+logarithmic criterion - volume maximization). Second, I have a lot of LPs, where I would like to use the concurrent optimizer. It seems to be working now.