我参加了“智能决策”课程(主要是问题优化课程)。在课堂上,我们了解了 AMPL 以及如何扩展求解器。我最近没有听到太多关于它的消息,也没有看到它的工作列表。
我的问题是:AMPL 还在使用吗?如果是这样,它是用来做什么的?
是的,我确实知道 AMPL 可以用 Matlab 代替,但是 AMPL 是免费的,而 Matlab 甚至不接近。
你很困惑。
AMPL 和 Matlab 是两个完全不同的东西,它们可能在某些应用领域相交,但它们旨在解决完全不同类型的问题。
AMPL 是一种描述优化问题的语言。它本身不做任何事情:它只是为用户提供与求解器交互的方法。求解器可以用于线性规划 (CPLEX)、非线性规划 (Ipopt) 或其他更深奥的变体。
Matlab 是一种用于技术计算的语言:线性代数、微分方程、统计和-确定-一些优化-Matlab 的优化能力与 AMPL 相比相形见绌。
AMPL 通过自动微分提供精确的一阶和二阶导数,这是一个只有 GAMS 才能达到的关键功能,您可能不知道这有多重要和困难,但是 - 相信我 - 它是。
没有人会为“AMPL 编码器”提供工作,因为没有这样的东西。该工作提供给知道什么是优化以及最前沿的工具的人。同样,没有人为“Matlab 编码器”提供工作,他们将工作提供给了解 Matlab 的工程师。
最后,AMPL 不是免费的。您可以免费使用学生版,仅用于学习目的。这样的版本将您限制为 100 个变量和约束(我想您知道这意味着什么)。如果你想要一个成熟的 AMPL,你需要为许可证和求解器的许可证付费,每一个!Ipopt 是开源的,但 Cplex 相当昂贵。
是的,AMPL 仍在使用,而且非常多。我用它来计算最佳的航天器轨迹,相信我,没有什么比这更接近了。我喜欢Matlab,但是使用Matlab进行认真的优化就像用勺子打开一罐食物——你可能会成功,但会有血和泪。
AMPL 和 Matlab 有一个共同点:它们都是由处于各自领域前沿的杰出科学家(Moler->Matlab,Gay->AMPL)创建的。
一个名为 YALMIP 的 matlab 工具箱允许您在 Matlab 中进行公式化。这反过来又使得与其他预处理或后处理要求集成变得非常容易。
我以前是 AMPL 用户,但是在找到 YALMIP 后,我不再使用 AMPL。因为这节省了我编写代码以准备输入 AMPL 的数据并处理输出的时间。