【问题标题】:Is there a limit on the size of an .lp file or number of variables in CBC/GLPK?.lp 文件的大小或 CBC/GLPK 中的变量数量是否有限制?
【发布时间】:2019-02-14 20:48:46
【问题描述】:

我正在尝试解决 GLPK 和/或 CBC 中的 MIP。 .lp 文件有 907 兆字节,大约有 500 万个变量,但它甚至没有在 CBC 上运行,并且在 GLPK 上运行了 8 天以上,但没有找到解决方案。 此外,每当我对 GLPK 设置时间限制时,它都会显示 TIME LIMIT EXCEEDED; SEARCH TERMINATED,想知道是否可以使用 CMD 窗口或 python 获得输出。

ERROR: "[base]\site-packages\pyomo\opt\base\solvers.py", 616, solve
        Solver (cbc) returned non-zero return code (-1073740791) ERROR: "[base]\site-packages\pyomo\opt\base\solvers.py", 619, solve
        See the solver log above for diagnostic information. Traceback (most recent call last):

  File "<ipython-input-1-55698ac3ed56>", line 1, in <module>
    runfile('D:/Data/Central Data Repository/Pooling Optimisation/Python Scripts/Run_Solver_From_Spyder v2.py', wdir='D:/Data/Central Data Repository/Pooling Optimisation/Python Scripts')

  File "C:\ProgramData\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
    execfile(filename, namespace)

  File "C:\ProgramData\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 86, in execfile
    exec(compile(scripttext, filename, 'exec'), glob, loc)

  File "D:/Data/Central Data Repository/Pooling Optimisation/Python Scripts/Run_Solver_From_Spyder v2.py", line 37, in <module>
    results = opt.solve(instance, options=solver_opt, tee=True, keepfiles=True)

  File "C:\ProgramData\Anaconda2\lib\site-packages\pyomo\opt\base\solvers.py", line 623, in solve
    "Solver (%s) did not exit normally" % self.name)

ApplicationError: Solver (cbc) did not exit normally

【问题讨论】:

  • 对于 LP,这很大但并不过分(我们错过了对 LP 更重要的非零数字;您的 LP 文件大小表明它可能相当密集)。如果模型是 LP 并且它很稀疏,您可能需要考虑使用内点求解器。如果您的模型是 MIP(即包含离散变量),那么最好的方法通常是查看商业求解器。最好显示求解器日志的第一部分。
  • 添加了 cbc 错误的求解器日志。 @ErwinKalvelagen
  • 我猜你内存不足
  • 运行它的计算机有 128GB 内存,所以我希望不会!

标签: optimization mathematical-optimization pyomo glpk coin-or-cbc


【解决方案1】:

通常,LP 模型是可解的。 8天太多了。您可以在此处“http://plato.asu.edu/ftp/lpsimp.html”找到 lp 求解器的比较。您可以更改求解器。

如果求解器在终止之前找到解决方案,您可以从 python-pyomo 访问。

另外,CBC 是 MIP 求解器。但是你说你的模型是LP。

【讨论】:

  • 对不起,它确实是 MIP。您是否推荐任何可以解决此问题的开源解决方案。关于它是否找到解决方案,你知道在pyomo中输出它的代码是什么吗?谢谢。
  • 如果您是学生,有商业求解器的免费版本。您可以将它们与 pyomo 一起使用。与lp页面类似,有MIP对比页面,请查看plato.asu.edu/ftp/milpc.html。您可以在此页面上找到一个很好的示例hselab.org/pyomo-get-variable-values.html 来获取值。另外,作为 SO 用户,请看这里stackoverflow.com/help/someone-answers
猜你喜欢
  • 2011-01-04
  • 2015-11-08
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-27
相关资源
最近更新 更多