【问题标题】:Converting vector arrays into .MPS files with C++使用 C++ 将向量数组转换为 .MPS 文件
【发布时间】:2016-12-13 17:42:57
【问题描述】:

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

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

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

【问题讨论】:

  • 我认为只有这个问题的“替代”部分是主题。根据标记,“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,描述问题以及迄今为止为解决问题所做的工作。"

标签: c++ optimization mathematical-optimization linear-programming coin-or-cbc


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是否有在线 C/C++ 示例来演示如何在内存中构建 LP,然后通过调用 CLP 来解决?
    • examples目录下是一个demo如何使用loadproblem:link
    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多