【发布时间】:2010-01-21 20:14:37
【问题描述】:
我很想从 GAMS 和 AMPL 的用户那里获得关于这两种语言的优缺点的意见。
【问题讨论】:
-
Canoehead,看来您现在有足够的声望给这个问题添加一个 gams 标签。你介意这样做吗? (另见stackoverflow.com/q/22666921/1470262.)谢谢!
我很想从 GAMS 和 AMPL 的用户那里获得关于这两种语言的优缺点的意见。
【问题讨论】:
就功能而言,它们几乎相同,可以表达大多数类型的优化问题。就个人而言,我更喜欢 AMPL,因为它具有直观和富有表现力的语法,并且在 book 中有很好的记录。 AMPL 的另一个重要优势是,尽管它是商业的,但您可以避免供应商锁定,因为有一个开源替代方案 - GNU MathProg。另一方面,GAMS 曾经拥有比 AMPL 更先进的 IDE,尽管它随着新 AMPL IDE 的引入而改变。
您可以在其 Wikipedia 文章中找到来自 George Dantzig 在 AMPL 和 GAMS 中提出的相同运输问题的示例:AMPL 和 GAMS。
【讨论】:
This blog 有话要说:
这两个系统在他们正在做的事情和广泛使用方面都非常出色,所以你不能 这两种选择都真的出错了。我可能会建议加分 用于您的同事和合作者使用的建模系统。那 使模型和数据的交换更容易,在讨论时也更容易 问题、技巧、问题等。
Bob Fourer (AMPL) 回答:
很难找到可以在两个竞争中提供同样专家建议的人 系统,因为一旦您熟悉其中一个,您通常不会 有很大的动力继续了解对方。但是这里有一些cmets 从我几乎不带偏见的观点来看。
AMPL 的设计理念是更接近数学符号 并且通常比 GAMS 使用起来更自然,而且它更胜一筹 分数。 GAMS 模型通常依赖于更特殊的约定和 比其 AMPL 对应物重新制定;一个典型的例子是通常广泛的 使用 GAMS $ 运算符来施加各种条件。此外,IDE 尽管如此,GAMS 基本上更像是一个批处理系统,而 AMPL 提供更灵活的交互式探索模型和结果的选项。 最后,虽然在某些领域 GAMS 是通过长期使用建立起来的,但我仍然看到 这些领域的建模者选择 AMPL,尤其是在他们从事 不依赖于现有 GAMS 模型的新项目。
在我看来,AMPL 和 GAMS 在实践中比这里建议的更接近(例如 在 GAMS 中使用 $,在 AMPL 中使用 :)。我其实有点喜欢 做实际工作时的 GAMS 语法,因为它更紧凑一点,而且 求和结束的地方很明显(在 AMPL 中,这是基于运算符的优先级, 在 GAMS 中,总和用括号括起来)。
【讨论】:
在我看来,所有语法方面的考虑都只是个人喜好问题; AMPL 和 GAMS 语言都易于学习,并且在可以考虑的模型类型方面提供了可以说是相同的范围。
在撰写本文时,GAMS 提供了更多的求解器。话虽如此,AMPL 的求解器列表并不是 GAMS 求解器列表的子集。对于特定应用程序,我建议在购买 AMPL 或 GAMS 之前对求解器进行基准测试(例如,通过 NEOS 服务器进行优化)。
就我个人而言,我更喜欢 AMPL 的语法,因为它更接近数学符号。但是,我更喜欢将 GAMS 用于工业应用,主要是因为求解器的可用性以及它在许多行业中的嵌入/验证。这通常简化了与已经使用 GAMS 的行业合作伙伴/客户的对话。
【讨论】: