使用CPLEX API进行线性编程时,MATLAB崩溃了

时间:2013-11-19 23:25:21

标签: matlab mex linear-programming cplex integer-programming

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

[x,fval,exitflag,output,] = cplexbilp(f, Aineq, bineq, Aeq, beq);
  • 矩阵的大小: f = 25000x1,Aineq = 50x25000,bineq = 50x1,Aeq = 2555x25000,beq = 2255x1

当我运行脚本时,会出现此错误:

enter image description here

当我查看错误详情时,我会看到以下消息:

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

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

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

提前感谢任何评论或回答

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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