CPLEX 不会在成功求解后显示决策变量

CPLEX won't display decision variables after successful solution

我使用 IBM CPLEX 为课程安排优化问题设置了代码。 决策变量是 dvar boolean x[course][roomtype][timeslot];,如果课程在时间段 t 期间在房间类型 r 中进行,则 x 为 1。

该模型运行良好,适用于我尝试过的所有实例和场景。现在,对于一个新场景,我将时隙数从 46 个增加到 240 个,这将决策变量的总数增加到超过 200 万,而不是大约 300,000。

现在,我仍然可以 运行 模型,在稍长的 运行 时间后,我得到了最佳解决方案。然而,我之前分析的过程是显示决策变量,将值为1的变量排序并复制并粘贴到Excel以供进一步分析。

现在这不可能了,因为 CPLEX 将在很长一段时间内不会响应,然后从那时起不再让我做任何事情 (Limited extent of decision variable display)。我必须关闭程序并重新开始。

我认为问题出在RAM或整体内存上,所以我选择了我大学的云服务。但即使手头有128GB RAM、12核和500GB内存也不够用,性能和我自己的私人笔记本电脑完全一样。

关于可能出现的问题或如何导出解决方案的任何建议?

CPLEX 是否存在变量限制,导致无法求解?

非常感谢!

确实显示巨大的矩阵可以冻结IDE。

您写道:

Now, I can still run the model and after slightly longer run time I get an optimal solution. Yet, the process I had for analysis before was displaying the decision variables, sorting for the ones with the value of 1 and copying and pasting them into Excel for further analysis.

您应该使用 SheetWrite 来做到这一点。 首先构建一组值为 1 的值,然后使用 SheetWrite 导出。

Excel, Rocket science and optimization

.mod

range A=1..2;
range B=1..3;
range C=1..4;


dvar int X[A][B][C];

subject to
{
forall(a in A,b in B,c in C) X[a][b][c]==a*b*c;
}

tuple someTuple{
int a;
int b;
int c;
int value;
};


{someTuple} someSet = {<i,j,k,X[i][j][k]> | i in A, j in B, k in C:X[i][j][k]==1}; 

.dat

SheetConnection sheet("write3Darray.xlsx");

    someSet to SheetWrite(sheet,"A1:D24");