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

时间:2010-01-21 20:14:37

标签: modeling ampl gams-math

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

3 个答案:

答案 0 :(得分:15)

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

你可以在他们的维基百科文章中找到AMPL和GAMS中制定的George Dantzig相同的交通问题的例子:AMPLGAMS

答案 1 :(得分:2)

This blog有以下说法:

  

这两个系统在他们正在做和广泛使用的方面非常好,所以你做不到   两种选择都真的出错了。我可能会建议添加额外的积分   适用于您的同事和协作者使用的建模系统。那   使交换模型和数据更容易,讨论时也更容易   问题,技巧,问题等。

     

Bob Fourer(AMPL)回答:

     

很难找到能够就两场比赛提供同样专业建议的人   系统,一旦你熟悉其中一个,你通常不会   继续学习另一个的动力很大。但这里有一些评论   从我几乎没有偏见的观点来看。

     

AMPL的设计理念是更接近数学符号   并且通常比GAMS更自然地使用,并且它在这方面更优越   得分了。 GAMS模型通常依赖于更特殊的约定和   改革比AMPL对应;一个典型的例子就是广泛的   使用GAMS $运算符来强加各种条件。另外,IDE   尽管如此,GAMS基本上更像是批量系统,而AMPL   提供更灵活的交互式探索模型和结果选项。   最后,在某些地区,GAMS是通过长期使用建立的,但我仍然看到   这些领域的建模者选择AMPL,特别是在他们进行时   不依赖于现有GAMS模型的新项目。

     

在我看来,AMPL和GAMS在实践中比在此建议更接近(例如   在GAMS中使用$的地方,可以使用:在AMPL中。我其实略显偏爱   做实际工作时的GAMS语法,因为它更紧凑一点   在求和结束的地方很明显(在AMPL中这取决于运算符的优先级,   在GAMS中,一个总和在视觉上用括号括起来。)

答案 2 :(得分:0)

在我看来,所有语法考虑都是一个品味问题; AMPL和GAMS语言都很容易学习,并且在可以考虑的模型类型方面可以提供相同的范围。

在写这篇文章的那一刻,GAMS提供了更多的求解器。话虽这么说,AMPL的求解器列表不是GAMS求解器列表的子集。对于特定应用,我建议在购买AMPL或GAMS之前对基准解算器进行基准测试(例如,通过NEOS服务器进行优化)。

就个人而言,我更喜欢AMPL的语法,因为它更接近数学符号。但是,我更喜欢GAMS用于工业应用,主要是因为求解器的可用性以及它在许多行业中的嵌入/验证。这通常简化了与已使用GAMS的工业合作伙伴/客户的对话。