使用CPLEXAPI进行线性规划时,MATLAB崩溃

使用CPLEXAPI进行线性规划时,MATLAB崩溃,matlab,mex,linear-programming,cplex,integer-programming,Matlab,Mex,Linear Programming,Cplex,Integer Programming,您好,我想解决线性规划(LP)问题,该问题具有25000个二进制变量和几乎2555个等式约束和50个不等式约束,因此我使用了CPLEX API为MATLAB提供的cplexbilp函数,如下所示: [x,fval,exitflag,output,] = cplexbilp(f, Aineq, bineq, Aeq, beq); 矩阵的大小: f=25000x1,Aineq=50x25000,bineq=50x1,Aeq=2555x25000,beq=2255x1 运行脚本时,出现以下错误:

您好,我想解决线性规划(LP)问题,该问题具有25000个二进制变量和几乎2555个等式约束50个不等式约束,因此我使用了CPLEX API为MATLAB提供的cplexbilp函数,如下所示:

[x,fval,exitflag,output,] = cplexbilp(f, Aineq, bineq, Aeq, beq);
  • 矩阵的大小: f=25000x1,Aineq=50x25000,bineq=50x1,Aeq=2555x25000,beq=2255x1
运行脚本时,出现以下错误:

当我查看错误详细信息时,我看到以下消息:

0x6df51ba9 C:/Program Files/IBM/ILOG/CPLEX_Studio_Preview125/CPLEX/matlab/x86_win32/cplexlink125.mexw32+00007081(???+000000)

我认为cplexlink125.mexw32是用于MATLAB的cplexv12.5可调用库。
所以,我的问题是如何解决这个错误?我想知道问题大小(25000个二进制变量)是主要的错误根源吗?我在一些参考资料中读到Cplex能够解决大规模LP问题

  • MATLAB版本:R2011a
  • CPLEX版本:12.5

提前感谢您的任何评论或回答

您使用的似乎是CPLEX的“学生版”。此版本仅限于解决“最多”300个变量和300个约束的问题。我在“商业版”中解决了许多包含100000多个二进制和整数变量的问题,没有任何错误

我曾经在MATLAB中使用cplexapi。每次运行我的代码时,调用CPlex的次数几乎达到10^6次。在每次通话中,CPlex处理的系数矩阵都比你的大。每当我在MATLAB中使用CPlex时,我都会遇到内存泄漏。然后我切换到gurobi,它比cplex稍慢,但更稳定。
(我的数学模型没有任何二进制或整数变量。我的变量都是连续的非负变量。二进制变量以指数形式增加问题的复杂性。这个问题也可能是由二进制变量引起的。25000个二进制变量实在太多了)。

你能解决更小的问题吗?@Inquest,对于变量数小于300的问题,脚本工作得很好,我的意思是没有上面提到的错误,不会收敛到最优解。当变量数为300时,我有120个等式约束和15个不等式约束。尝试找出它何时崩溃。很多时候,内存不足以创建许多变量。很可能你必须改变你的公式(启发式方法,Dantzig Wolfe,…)@Chris,我之前测试过你的建议,甚至我使用单精度矩阵,但问题仍然存在:(