# Is cvx solving the Primal or the Dual Problem?

Hello,

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

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

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

Computer
Platform               : Windows/64-X86
Cores                  : 2

Problem
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  - 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.