When solving the following linear feasibility problem using Mosek, the problem is considered solved, but the vector eta
ends up containing negative values. The peculiar thing is that if nonnegative
is replaced with an explicit eta >= 0
this does not happen and the problem is considered infeasible. When using SDPT3 or Gurobi this problem does not occur.
function repro()
% Complete code: https://gist.github.com/nikic/ab445c2ebaf1f2938297989e51c07cf1
mat = ...;
vec = ...;
cvx_begin
cvx_solver mosek
variable eta(40, 1) nonnegative
%variable eta(40, 1)
mat * eta <= -vec;
eta <= 1;
%eta >= 0;
cvx_end
eta
end
Here is the output from Mosek:
Calling Mosek 8.0.0.60: 120 variables, 40 equality constraints
For improved efficiency, Mosek is solving the dual problem.
------------------------------------------------------------
MOSEK Version 8.0.0.60 (Build date: 2017-3-1 13:09:33)
Copyright (c) MOSEK ApS, Denmark. WWW: mosek.com
Platform: Windows/64-X86
Problem
Name :
Objective sense : min
Type : LO (linear optimization problem)
Constraints : 40
Cones : 0
Scalar variables : 120
Matrix variables : 0
Integer variables : 0
Optimizer started.
Interior-point optimizer started.
Presolve started.
Linear dependency checker started.
Linear dependency checker terminated.
Eliminator started.
Freed constraints in eliminator : 0
Eliminator terminated.
Eliminator - tries : 1 time : 0.00
Lin. dep. - tries : 1 time : 0.00
Lin. dep. - number : 9
Presolve terminated. Time: 0.01
Optimizer - threads : 4
Optimizer - solved problem : the primal
Optimizer - Constraints : 3
Optimizer - Cones : 0
Optimizer - Scalar variables : 17 conic : 0
Optimizer - Semi-definite variables: 0 scalarized : 0
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 : 6 after factor : 6
Factor - dense dim. : 0 flops : 3.78e+002
ITE PFEAS DFEAS GFEAS PRSTATUS POBJ DOBJ MU TIME
0 1.2e+000 1.0e+000 1.0e+000 1.00e+000 -1.612022072e-006 0.000000000e+000 1.0e+000 0.03
1 1.2e+000 1.1e+000 1.0e+000 0.00e+000 -8.587046430e-007 0.000000000e+000 3.0e+000 0.11
2 8.1e-002 7.4e-002 6.7e-002 1.00e+000 -3.225717889e-007 0.000000000e+000 2.1e-001 0.11
3 3.2e-003 3.0e-003 2.7e-003 1.00e+000 -3.161178013e-008 0.000000000e+000 8.2e-003 0.11
4 4.6e-006 4.2e-006 3.8e-006 1.00e+000 -1.241655548e-011 0.000000000e+000 1.2e-005 0.13
5 4.6e-010 4.2e-010 3.8e-010 1.00e+000 -1.241704793e-015 0.000000000e+000 1.2e-009 0.13
Basis identification started.
Primal basis identification phase started.
ITER TIME
0 0.02
Primal basis identification phase terminated. Time: 0.02
Dual basis identification phase started.
ITER TIME
3 0.00
Dual basis identification phase terminated. Time: 0.00
Basis identification terminated. Time: 0.05
Interior-point optimizer terminated. Time: 0.20.
Optimizer terminated. Time: 0.28
Interior-point solution summary
Problem status : PRIMAL_AND_DUAL_FEASIBLE
Solution status : OPTIMAL
Primal. obj: -1.2417047930e-015 nrm: 2e-007 Viol. con: 4e-015 var: 5e-014
Dual. obj: 0.0000000000e+000 nrm: 4e+005 Viol. con: 0e+000 var: 4e+005
Basic solution summary
Problem status : PRIMAL_AND_DUAL_FEASIBLE
Solution status : OPTIMAL
Primal. obj: 0.0000000000e+000 nrm: 0e+000 Viol. con: 0e+000 var: 0e+000
Dual. obj: 0.0000000000e+000 nrm: 7e+000 Viol. con: 0e+000 var: 6e+000
Optimizer summary
Optimizer - time: 0.28
Interior-point - iterations : 5 time: 0.20
Basis identification - time: 0.05
Primal - iterations : 0 time: 0.02
Dual - iterations : 3 time: 0.00
Clean primal - iterations : 0 time: 0.00
Clean dual - iterations : 0 time: 0.00
Simplex - time: 0.00
Primal simplex - iterations : 0 time: 0.00
Dual simplex - iterations : 0 time: 0.00
Mixed integer - relaxations: 0 time: 0.00
------------------------------------------------------------
Status: Solved
Optimal value (cvx_optval): -0
eta =
0
-2.5504
0
0
0
0
-5.7589
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0