我有兴趣获得GAMS和AMPL用户关于每种语言的优缺点的意见。
答案 0 :(得分:15)
就功能而言,它们几乎相同,允许表达大多数类型的优化问题。就个人而言,我更喜欢AMPL,因为它具有直观和富有表现力的语法,并且在book中有很好的记录。 AMPL的另一个重要优势是,尽管它是商业广告,但您可以避免供应商锁定,因为有一个开源替代方案 - GNU MathProg。另一方面,GAMS曾经拥有比AMPL更高级的IDE,尽管它随着新AMPL IDE的引入而改变。
你可以在他们的维基百科文章中找到AMPL和GAMS中制定的George Dantzig相同的交通问题的例子:AMPL和GAMS。
答案 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的工业合作伙伴/客户的对话。