Is cvx solving the Primal or the Dual Problem?


I’m getting this report when I solve my problem :

Calling Mosek 271 variables, 41 equality constraints
   For improved efficiency, Mosek is solving the dual problem.

MOSEK Version (Build date: 2015-5-4 11:25:39)
Copyright (c) 1998-2015 MOSEK ApS, Denmark. WWW:
Platform: Windows/64-X86

  Platform               : Windows/64-X86  
  Cores                  : 2               

  Name                   :                 
  Objective sense        : min             
  Type                   : CONIC (conic optimization problem)
  Constraints            : 41              
  Cones                  : 0               
  Scalar variables       : 40              
  Matrix variables       : 1               
  Integer variables      : 0               

Optimizer started.
Conic interior-point optimizer started.
Presolve started.
Linear dependency checker started.
Linear dependency checker terminated.
Eliminator - tries                  : 0                 time                   : 0.00            
Eliminator - elim's                 : 0               
Lin. dep.  - tries                  : 1                 time                   : 0.00            
Lin. dep.  - number                 : 0               
Presolve terminated. Time: 0.02    
Optimizer  - threads                : 2               
Optimizer  - solved problem         : the primal      
Optimizer  - Constraints            : 41
Optimizer  - Cones                  : 0
Optimizer  - Scalar variables       : 40                conic                  : 0               
Optimizer  - Semi-definite variables: 1                 scalarized             : 231             
Factor     - setup time             : 0.00              dense det. time        : 0.00            
Factor     - ML order time          : 0.00              GP order time          : 0.00            
Factor     - nonzeros before factor : 861               after factor           : 861             
Factor     - dense dim.             : 0                 flops                  : 3.74e+005       

As you can see at the beginning it says that mosek is solving the dual problem, however after that it says "Optimizer - solved problem : the primal " so I’m not sure if it’s solving the primal or the dual problem ?

In case it was solving the dual problem, is there is anyway to force it to solve the primal problem instead ?

Thank you.

Well, technically, MOSEK is solving both the primal and the dual, simultaneously, together. The only question here is which one MOSEK thinks is the primal, and which is the dual. In this case, CVX has decided to “swap” the primal and the dual problems, so what MOSEK calls the primal is actually the dual.

But again, since it’s solving both of them, there is no need to force it to solve the primal problem “instead”. Your original, primal solution is being extracted automatically from the dual solution MOSEK produces.

Ok, however I know that when the CVX gets the dual it results in a smaller problem but I don’t want it to solve this problem as actually I’m comparing the time it takes to solve my problem with many solvers and interfance, and in the other solvers they solve my problem not the dual of it.

So it there is anyway to prevent the cvx from even solving the dual problem ?
And is there is a document or something that describes how does the cvx gets the dual of a problem ?

Thank you.

I’m afraid your question is not well-posed. MOSEK always solves both problems. That is fundamental to how it does so; indeed, it is fundamental to how every primal-dual algorithm solves problems. You cannot ask it not to do that. I’m experimenting with a function that controls the dualization process, but it is not ready for release and documentation. But even if you do prevent the dualization from occurring, both problems will be solved.