如何在 oplrun 中更改 CPLEX 参数?

How to change CPLEX parameters in oplrun?

有没有办法让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 会话中更改此参数?或者我必须使用其他 languages/interfaces?

使用 opl运行 command line options. You can, however, use oplrun to execute a specific run configuration that has an associated settings file(.ops 文件)无法(直接)执行此操作。例如:

oplrun [options] -p project-dir [run-configuration ...]

当您使用 IDE 设置单个参数时,参数的 OPL 名称存储在 .ops 文件中。例如,CPLEX 参数 CPX_PARAM_TILIMIT 在 OPL 中被命名为 tiLimit(有关更多信息,请参阅 here)。

或者,您可以使用 -e opl运行 选项导出 OPL 模型。然后,您可以 运行 使用 CPLEX 交互并使用参数文件或在命令行本身中设置它们(请参阅 here 了解语法)。

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

在.mod你可以写

execute
{
  cplex.lpmethod=4;
}

然后你会在日志中看到

CPXPARAM_LPMethod                                4

问候

如果您只是想更改一个特定的参数,在 .mod 文件中,您可以设置如下内容:

int myParameter = …;

在同一个.mod文件中你也可以使用

execute
{
  cplex.lpmethod=myParameter;
}

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

要在使用 opl运行 时从 运行 运行 更改该参数,您可以使用以下命令行参数调用它:

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