gpt4 book ai didi

modeling - 用于LP/MILP建模的最佳建模语言? (不是求解器)

转载 作者:行者123 更新时间:2023-12-01 09:45:34 24 4
gpt4 key购买 nike

我拥有Gurobi许可证,并且使用了良好的MILP/LP建模语言,应该是

  • 免费/开源
  • 直观,即看起来像的东西(取自MiniZinc)

    var int:x;
    约束x> = 0.5;
    解决最小化x;
  • 快速:建立模型并将其发送到Gurobi的时间应与最佳模型(AMPL GAMS等)的顺序相似。
  • 灵活/强大(能够处理3D +数组,轻松激活/停用约束,为求解器提供初始解决方案等)

  • 当然,如果我错了,请纠正我,AMPL GAMS在1)失败,Python和R在2)(也许在3)失败?)。

    GLPK,Minizinc,ZIMPL等如何?他们满足1)和2),但是3)和4)呢?在这方面,它们是否与AMPL一样好?如果不是,是否存在满足1-4的建模语言?

    最佳答案

    我已经将AMPL与Gurobi一起用于中型MIP(〜100k-1m变量?)和MiniZinc(主要与Gecode结合使用)来解决较小的组合问题。我已经看到了一些用R和Python完成的Gurobi工作,但是我自己还没有那样使用它。

    我不太熟悉其他选项。我的理解是GAMS与AMPL非常相似,我不得不说的关于AMPL的很多内容对于GAMS也可能是有效的,但是我不能保证。

    Of course, and correct me if I'm wrong, AMPL GAMS fail at 1),



    是的,一般。有一个异常(exception)可能对您的特定要求没有帮助,但对其他人可能有用:您可以通过使用 NEOS web service来免费使用AMPL,Gurobi和许多其他优化产品。这仅限于 academic non-commercial purposes,您必须授予NEOS某些与发送它们有关的问题的权限;在使用前,请务必阅读这些服务条款。它还需要等待可用的服务器,因此,如果优先考虑提高速度,那么这可能不是您的解决方案。

    Python and R fail at 2) (and perhaps at 3)?).



    以我的有限经验,是(2)。 AMPL,GAMS和MiniZinc专为定义优化问题而设计,因此毫不奇怪的是,它们的语法比Python和R等语言对用户更友好。

    不利的一面是,除了定义这些语言的优化问题外,您还想做其他事情,Python/R/etc。为此可能会更好。

    关于速度:对于我通常处理的问题,AMPL可能需要花费几秒钟来构建和解决MIP模型,这需要Gurobi花费几分钟才能解决。显然,这将因硬件和问题的具体情况而有所不同,但总的来说,与解决所讨论的任何解决方案的时间相比,我希望构建时间会短一些。即使有了像Gurobi这样的优秀求解器,大型MIP也很难。我遇到的许多认真的优化程序员都使用Python,因此我认为性能方面足够好。

    但是,这并不意味着语言/平台的选择与速度无关。预解决是AMPL(以及GAMS)的一项不错的功能,它试图在将问题发送到求解器之前减小问题的大小。我的标准问题有很多多余的变量和约束。 AMPL可以识别并消除其中的许多问题,从而将问题大小减小了约80%,并显着缩短了求解器时间(与我关闭presolve的运行(有时出于调试相关原因而运行)相比)。如果您期望大量的冗余,这可能是一个考虑因素。

    flexible/powerful (ability to deal with 3D+ arrays, activate/deactivate constraints easily, provide initial solutions to the solver, etc.)



    MiniZinc最多可以处理6D阵列,这可能取决于您的应用程序,也可能不够。

    在某些领域,它比AMPL更灵活,而在另一些领域则不那么灵活。 AMPL具有许多我认为有用的基于集合的功能(例如,我可以定义一个变量,其索引集类似于“成对的不相同的城市之间相隔不超过500公里”),而MiniZinc则没有此功能。 OTOH,MiniZinc在求解器跳跃方面似乎比AMPL更好,例如如果我编写具有组合约束(例如“alldifferent”)的MZ模型,然后尝试在无法识别此类约束的求解器上运行它,则MZ会将其转换为求解器可以处理的内容。

    除了注释掉它们之外,我没有尝试停用MZ中的约束,所以我在这里无济于事,类似地,它提供了初始解决方案。

    总体而言,MiniZinc是一个不错的选择。相对于AMPL有一些优缺点(“免费”是一大优点!),但它填补了类似的空白。

    关于modeling - 用于LP/MILP建模的最佳建模语言? (不是求解器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49686044/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com