如何在oplrun中更改CPLEX参数?

时间:2017-07-06 07:56:40

标签: command-line-interface cplex ibm-ilog-opl

是否有办法让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会话中更改此参数?或者我必须使用这些其他语言/接口吗?

3 个答案:

答案 0 :(得分:1)

你可以写.mod中的

execute
{
  cplex.lpmethod=4;
}

然后你会在日志中看到

CPXPARAM_LPMethod                                4

问候

答案 1 :(得分:1)

如果您只想更改特定参数,则在.mod文件中,您可以输入以下内容:

int myParameter = …;

在同一.mod文件中,您也可以使用

execute
{
  cplex.lpmethod=myParameter;
}

然后在.dat文件中有一些默认值。

要在使用oplrun时将参数从运行更改为运行,可以使用以下命令行参数进行调用:

oplrun myModel.mod myData.dat -D myParameter=4

答案 2 :(得分:0)

使用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 interactive运行它并使用参数文件或在命令行中设置它们(请参阅here了解语法)。

最后,您肯定可以使用CPLEX中提供的programming language APIs之一来完成同样的事情。这将提供最大程度的控制,但可能需要更多时间(取决于您对编程的舒适程度)。