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");
我使用 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");