【问题标题】:Set limitation on gap tolerance and run time [closed]设置间隙公差和运行时间的限制[关闭]
【发布时间】:2019-10-20 06:05:39
【问题描述】:

我有两个问题:

  1. 在 IBM ILOG CPLEX 中,我编写了一个 OPL 项目。由于代码适用于大规模数据,因此需要花费大量时间来解决。限制MIP问题的间隙容限和限制时间的代码是什么?

  2. 我想要一个包含我想要的结果的 CSV 文件。例如,我想在 CSV 文件中有一个目标函数和运行时以及设施变量。我得到了所有这些结果,但我也希望将它们写入 CSV 文件。

【问题讨论】:

    标签: csv optimization runtime cplex ibm-ilog-opl


    【解决方案1】:

    1) 在您的.mod 文件中 minimize 语句之前添加以下代码。

    execute
    {
       cplex.tilim=30; // 20 s time limt
       cplex.epgap=0.01 // 1% gep
    }
    

    您可以通过检查引擎日志来确认它已被考虑在内。一开始应该是这样的:

    CPXPARAM_TimeLimit                               30
    CPXPARAM_MIP_Tolerances_MIPGap                   0.01
    

    2) 您可以依赖 IloOplOutputFile

    参见https://www.ibm.com/developerworks/community/forums/html/topic?id=3fd44d41-210b-4b81-a005-819530d6377b&ps=25中的示例

    【讨论】:

    • 感谢您的回复。我在 CSV 文件中写入结果的问题是其中一件事是变量 y=[10000101010] 我只想编写等于 1 的列的索引。你知道吗?此外,当我在代码中使用 cplex.tilim 时,它不会产生影响,而且我的代码运行时间比我想要的要长得多。
    • 查看示例 warehouse.mod {int} Storesof[w in Warehouses] = { s |商店中的 s : 供应[s][w] == 1 };是一个关于如何获取值为 1 的所有索引的示例
    • 除了在代码中编写参数设置,您还可以使用设置 (OPS) 文件。
    • 我尝试了这段代码,在引擎日志中,它确实带来了我想要的限制。但是我从代码中得到的解决时间超过了我选择的限制。
    猜你喜欢
    • 2013-04-02
    • 2020-10-07
    • 2018-04-27
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多