I upgraded today from Julia 0.5.1 to 0.6.
Doing so I ended up with the following behavior of Mosek (v.0.7.0) and JuMP (v.0.17.1): the example is
using JuMP, Mosek m = Model(solver=MosekSolver()) @variable(m, x[1:3]>=0) @constraint(m, x^2+x^2<=x^2) @objective(m, Min, x+x+x) solve(m)
and the result
Problem Name : Objective sense : min Type : QCQO (quadratically constrained optimization problem) Constraints : 1 Cones : 0 Scalar variables : 3 Matrix variables : 0 Integer variables : 0 Optimizer started. Quadratic to conic reformulation started. MOSEK error 1293: Constraint ''(0) is not convex. Q should be positive semidefinite in a constraint with finite upper bound. Quadratic to conic reformulation terminated. Time: 0.00 Optimizer terminated. Time: 0.00 WARNING: Not solved to optimality, status: Error :Error
To avoid this error I can reformulate the constraint as
and doing so the problem is immediately recognized as a conic optimization problem.
The same example works fine with both versions of the constraint in my previous Julia 0.5.1, using Mosek (v.0.6.1) and JuMP (v.0.16.2): in that case the first version of the problem is recognized as a conic optimization problem (not as a QCQO), and so no “Quadratic to conic reformulation” takes place.
Is this new behavior due to some errors in the way I upgraded or do you experience the same? In the second case, is this behavior fine?