GAMS与AMPL代数建模语言的比较

Emm*_*uel 17 modeling ampl gams-math

我有兴趣获得GAMS和AMPL用户关于每种语言的优缺点的意见.

vit*_*aut 15

在功能方面,它们几乎相同,允许表达大多数类型的优化问题.就个人而言,我更喜欢AMPL,因为它具有直观和富有表现力的语法,并且在本书中有很好的记录.AMPL的另一个重要优势是尽管它是商业的,但你可以避免供应商锁定,因为有一个开源替代品 - GNU MathProg.另一方面,GAMS曾经拥有比AMPL更高级的IDE,尽管它随着新AMPL IDE的引入而改变了.

您可以在他们的维基百科文章:AMPLGAMS中找到AMPL和GAMS中制定的George Dantzig的相同运输问题的示例.


小智 6

这篇博客有以下内容:

这两个系统都非常擅长它们正在做的事情并且被广泛使用,因此无论选择哪一个都不会出错。我可能会建议为您的同事和合作者使用的建模系统添加额外的分数。这使得交换模型和数据变得更加容易,并且在讨论问题、技巧、问题等时也变得更加容易。

Bob Fourer (AMPL) 回答:

很难找到一个能够就两个竞争系统提供同样专业建议的人,因为一旦您熟悉其中一个系统,您通常就没有太多动力继续了解另一个系统。但这里有一些来自我的不公正观点的评论。

AMPL 的设计理念是更接近数学符号,并且通常比 GAMS 使用起来更自然,而且它在这方面更胜一筹。GAMS 模型通常比 AMPL 模型依赖更多的特殊约定和重新表述;一个典型的例子是经常广泛使用 GAMS $ 运算符来施加各种条件。此外,尽管有 IDE,GAMS 从根本上来说更像是一个批处理系统,而 AMPL 提供了更灵活的交互式探索模型和结果的选项。最后,虽然在某些领域 GAMS 是通过长期使用而建立的,但我仍然看到这些领域的建模者选择 AMPL,特别是当他们正在进行不依赖于现有 GAMS 模型的新项目时。

在我看来,AMPL 和 GAMS 在实践中比这里建议的更接近(例如,在 GAMS 中使用 $ 的地方,在 AMPL 中会使用 : )。实际上,在进行实际工作时,我稍微更喜欢 GAMS 语法,因为它更紧凑,并且求和结束的位置很明显(在 AMPL 中,这是基于运算符优先级的,在 GAMS 中,总和在视觉上用括号括起来)。