CPLEX 错误 5002:%s 不是凸的 - 二元公式的最小二乘问题

CPLEX Error 5002: %s is not convex - Least Square Problem with binary formulation

第一个 post 在 SO 上。

我正在研究二次优化问题。
我收到以下错误:

Aeq = beq = sostype =sosind = soswt = [] % for my specific problem

其他参数看起来正确定义。

Error using cplexmiqp
CPLEX Error  5002: %s is not convex.
Error in MIP_CPLEX_OptL2_CstrL0 (line 78)
        [x,z,exitflag,output] = cplexmiqp(Hprim'*Hprim,(-y'*Hprim)',Aineq,bineq,Aeq,beq,sostype,sosind,soswt,lb,ub,ctype,z0,solveur);

我已经检查了矩阵的属性(它是半 PSD)。

错误仅出现在大于 600 个变量的维度上(连续和二进制 -> MIQP)。 低于此值,模型可以正常工作。

有人有什么想法吗?非常感谢 :)

如错误消息所述,问题在于您的 objective 函数不是凸函数。默认情况下,CPLEX 仅处理二次规划中的凸 objective 函数。但是,您可以切换一些参数以使 CPLEX 接受(并求解)非凸 objective 函数。

您可以在 CPLEX > User's Manual for CPLEX > Continuous optimization > Solving problems with a quadratic objective (QP) 部分的用户手册中找到详细信息。

为了求解具有非凸二次方程的模型 objective,您必须将参数 Cplex.Param.optimalitytarget 设置为 3(找到全局最优值)。