2

我正在尝试使用 Coin-OR 的线性规划 (LP) 软件来解决一系列线性程序。每个程序的大部分数据都包含在几个 .csv 文件中,但每次运行线性优化时都需要修改一些数据。

看起来我只能让 Coin-OR 的 LP 求解器读取 .MPS 文件,并且可以使用 AMPL 之类的程序单独构建一个 .MPS 文件。但是考虑到我正在尝试运行这些优化的自动化、迭代系列,仅使用 AMPL 或 Gurobi 构建单个问题实例然后在生成的 .MPS 文件上调用求解器是不可行的;我需要根据每个问题更改文件,可能是数千或数百万次。

那么有人知道是否有可以将向量数组或其他标准 C++ 数据结构转换为 .MPS 文件的 C++ 库吗?或者,有没有办法可以将这些数据结构指定为 Coin-OR 的 LP 求解器的输入?

4

2 回答 2

2

通过其 API 调用 Coin-OR 的 CLP 不是更好吗?对于纯 LP,写入和读取 MPS 文件可能会变得昂贵。否则 CLP 有自己的 MPSWriter,你可以借用:CoinMpsIO::writeMps。如果您运行许多类似的模型,您可能需要确保热启动求解器。此外,AMPL 具有直接的 COIN-OR CLP 接口 ( https://github.com/ampl/coin ),因此无需通过 MPS 文件。

于 2016-08-08T04:33:51.140 回答
0

正如埃尔文所说。使用 API。使用 MPS 文件或类似文件对于在不同求解器上尝试给定模型很有用。LP 格式有助于了解您的模型是否实现了您的预期。甚至可能使用 MPS 文件来归档特定案例以进行回归测试或类似的事情。但是 NOBODY 应该创建要提供给求解器的文件。如果可能,请使用 API。

于 2016-08-08T14:53:02.743 回答