My optimization problem is a Mixed Integer Cone Programming problem and trying to solve with the MOSEK solver. It is showing like below after running code
MOSEK 32.2.0 rc62c018 Released Aug 26, 2020 WEI x86 64bit/MS Window
M O S E K version 9.2.18 (Build date: 2020-8-11 14:59:10)
Copyright (C) MOSEK ApS, Fruebjergvej 3, Box 16
DK-2100 Copenhagen, Denmark https://www.mosek.com
GAMS/MOSEK Link license detected.
Setting up initial integer solution.
Problem
Name :
Objective sense : min
Type : QCQO (quadratically constrained optimization problem)
Constraints : 8836
Cones : 0
Scalar variables : 8904
Matrix variables : 0
Integer variables : 240
Optimizer started.
Quadratic to conic reformulation started. The constraint ‘eq3(1,2,t1)’(3072) is not convex. Q should be negative semidefinite for a constraint with finite lower bound. (1294)
Quadratic to conic reformulation terminated. Time: 0.00
Optimizer terminated. Time: 0.00
Integer solution solution summary
Problem status : UNKNOWN
Solution status : UNKNOWN
Primal. obj: 0.0000000000e+00 nrm: 1e+03 Viol. con: 1e+03 var: 0e+00 itg: 0e+00
Return code - 1294 [MSK_RES_ERR_CON_Q_NOT_NSD]: The quadratic constraint matrix is not NSD.
The same optimization problem is running with the CPLEX and GUROBI solvers successfully. I would like to know, why MOSEK solver is showing like that? Please help me in this regard.
Mosek is pretty pure in terms of how your cones need to look like. Cplex and Gurobi try to transform your constraints and see if they can reformulate this into a convex cone. Without seeing the constraints/model it is hard to say, but the message from MOSEK about PSD indicates that MOSEK interpreted your constraint as a regular quadratic constraint and not as a SOCP constraint.
As I said before, MOSEK is strict for what it expects as SOCP constraints. The definition of the various SOCPs can be found e.g. here: https://www.gams.com/latest/docs/UG_LanguageFeatures.html#UG_LanguageFeatures_ConicProgramming_Intro. So you have a rotated quadratic cone for MOSEK you can’t have constant (e.g. 2Uij(i,j)) and the you need the explicit 2x*y with x and y positive variables, not terms. Hence you need to make some new variables (MOSEK’s presolve will take care of substituting these out again):
I have reformulated my optimization problem. I try to solve with the mosek solver. It is showing like below
Variable ‘u(1)’ (128) is a member of cone ‘’ (0). (1307)
*** mosekgms.c:3263: MSK_GAMS_readtask: Error code MSK_RES_ERR_CONE_OVERLAP_APPEND (1307): The cone to be appended has one variable which is already member of another cone.
I attached my code. please help me. loadflow_mosek.gms (4.54 KB)
Thanks in advance.