【问题标题】:How to change CPLEX parameters in oplrun?如何更改 oplrun 中的 CPLEX 参数?
【发布时间】:2017-07-06 07:56:39
【问题描述】:
有没有办法让oplrun 采用特定的CPLEX 参数,例如CPX_PARAM_LPMETHOD(线性编程方法)。在the reference here中,针对不同的语言有不同的称呼:
C Name: CPX_PARAM_LPMETHOD
C++ Name: RootAlg
Java Name: RootAlg
.NET Name: RootAlg
InteractiveOptimizer: lpmethod
但是没有关于 OPL 或 oplrun 的参考。
是否可以在oplrun 会话中更改此参数?还是我必须使用这些其他语言/界面?
【问题讨论】:
标签:
command-line-interface
cplex
ibm-ilog-opl
【解决方案1】:
在.mod中你可以写
execute
{
cplex.lpmethod=4;
}
然后你会在日志中看到
CPXPARAM_LPMethod 4
问候
【解决方案2】:
如果您只是想更改一个特定的参数,在 .mod 文件中您可以有类似的内容:
int myParameter = …;
您也可以在同一个 .mod 文件中使用
execute
{
cplex.lpmethod=myParameter;
}
然后您的 .dat 文件中有一些默认值。
要在使用 oplrun 时将该参数从 run 更改为 run,您可以使用以下命令行参数调用它:
oplrun myModel.mod myData.dat -D myParameter=4
【解决方案3】:
使用 oplrun command line options 无法(直接)执行此操作。但是,您可以使用 oplrun 执行具有关联 settings file(.ops 文件)的特定运行配置。例如:
oplrun [options] -p project-dir [run-configuration ...]
当您使用 IDE 设置单个参数时,参数的 OPL 名称存储在 .ops 文件中。例如,CPLEX 参数 CPX_PARAM_TILIMIT 在 OPL 中被命名为 tiLimit(有关更多信息,请参阅 here)。
或者,您可以使用-e oplrun 选项导出您的 OPL 模型。然后,您可以使用 CPLEX 交互式运行它并使用参数文件或在命令行本身中设置它们(有关语法,请参阅 here)。
最后,您当然可以使用 CPLEX 中可用的programming language APIs 之一来完成同样的事情。这将提供最大程度的控制,但可能需要更多时间(取决于您对编程的适应程度)。
【讨论】:
-
2012 年 IBM developerWorks 论坛上的 here 也回答了这个问题。