【问题标题】:CPLEX won't display decision variables after successful solution成功求解后 CPLEX 不会显示决策变量
【发布时间】:2021-11-17 19:49:43
【问题描述】:

我使用 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 是否存在变量限制导致无法解决?

提前非常感谢!

【问题讨论】:

    标签: optimization cplex mixed-integer-programming integer-programming


    【解决方案1】:

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

    你写道:

    现在,我仍然可以运行模型,并且运行时间稍长后,我 得到最优解。然而,我之前的分析过程 正在显示决策变量,对具有 值 1 并将它们复制并粘贴到 Excel 中以供进一步使用 分析。

    您应该使用 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"); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      相关资源
      最近更新 更多