【问题标题】:Loading/Parsing Mathematical Programming System files加载/解析数学编程系统文件
【发布时间】:2018-04-28 14:53:16
【问题描述】:

为了不重新发明轮子,我试图找到一些代码来解析
Mathematical Programming System 文件,但我没有在 python 中找到任何实现。

是否有任何代码可用于此?

更新

阅读Mathematical Prog. files

示例 MPS(afiro.mps:link1link2
包含:

  1. 目标函数,一行n列
  2. 有限制的表,m 行,n 列
  3. 右表,一列,m行

许多languages have packages 用于读写这些文件。

【问题讨论】:

  • 解析器的预期输出是什么?
  • 加载3个数组中的表
  • 没有多少 LP/MIP 求解器是用 Python 编写的(出于性能原因)。
  • 这完全符合欧文的意思。
  • 我可能会更改项目要求

标签: python python-2.7 linear-programming mps


【解决方案1】:

这个问题没有解决具体问题,例如纯 python 与基于 c-wrapper 的对比,也没有任何许可证问题。

但是...过去对我有用的两件事(前者在 netlib 数据集上针对我自己的 IPM 方法进行了更多测试;后者看起来也不错):

Dirty code 将 netlib 的测试用例与基于前一种方法的 scipy 求解器一起使用。

cvxopt

MPS 阅读在某种程度上隐藏了 herehere

在我看来几乎只有 python。

至少在向 cvxopt 询问矩阵形式时,应该小心 cvxopt 已经对问题进行的潜在修改。我现在不记得在这里会发生什么(在我的情况下也没有多大关系)。

警告:如果您尝试安装整个项目,cvxopt 以 Windows 上的非平凡安装过程而闻名!

还有一些关于不支持 MPS 文件的哪些功能的警告。

GLPK + swiglpk

基本上是基于 swig 的 GLPK 绑定。可用here(可能是最新的 GLPK 的 python 绑定)。如果使用这个,结合GLPK的手册和对SWIG(或else)的一些了解一起使用。

就我们阅读的内容而言,这个应该更可控(见手册)!

【讨论】:

    【解决方案2】:

    您可以在 Python 中使用 pysmps 包。可以通过pip install pysmps简单安装。更多详情请见:

    https://pypi.org/project/pysmps/

    https://github.com/jmaerte/pysmps

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 2011-08-07
      • 2016-12-17
      • 2018-11-09
      • 2013-03-31
      • 2017-02-09
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多