我上了一堂关于“智能决策”(主要是问题优化课程)的课程。在课堂上我们学习了AMPL以及如何扩展求解器。我最近没有听到太多关于它的消息,也没有看到它的工作清单。
我的问题是:AMPL是否仍在使用?如果是这样,它用于什么?
是的,我确实知道可以用Matlab替换AMPL,但是AMPL是免费的,Matlab甚至不是很接近。
答案 0 :(得分:19)
你很困惑。
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)在他们领域的最前沿创造的。
答案 1 :(得分:0)
一个名为YALMIP的matlab工具箱允许您在Matlab中进行配方。这反过来又很容易与其他预处理或后处理要求集成。
我之前是AMPL用户但是在找到YALMIP后我不再使用AMPL了。这样可以节省我编写代码的时间,以准备输入AMPL的数据并处理输出。
答案 2 :(得分:0)