我即将利用我的硕士论文工作进行优化,我对AMPL的局限性有一些疑问。
我的导师似乎相信,当使用Gurobi求解器的完整许可证(我的大学有)时,AMPL将主要处理所有情况。
然而,在大多数当前的论文作品中,我看到大多数人仍然在其他语言中使用遗传算法和启发式算法,例如C,C#,Python等。是否优先在其他语言中实现您自己的启发式或者是否有设置提供如果您拥有某些解算器的完整许可证,那么在AMPL中为您提供此服务吗?
到目前为止,我的大学在你必须使用自己的启发式方法时没有任何实际问题,所以这意味着我必须在我的上一期课程中学习这些课程,直到论文工作即将开始。
提前致谢! Cenderze
答案 0 :(得分:3)
可以使用AMPL实现启发式方法,许多人使用AMPL的脚本功能或将其嵌入到其他语言中。这允许在比解算器API提供的更高级别上工作,并允许实现与求解器无关的方法(AMPL提供对许多解算器的访问)。
另一种可能性是将您的方法实现为AMPL求解器,它也有其优点,因为您不必担心编写自己的输入方法或MPS等传统格式的限制。 SSDSolver就是这种方法的一个例子。它实现了一种切割平面算法,用于解决二阶随机优势约束问题,并使用另一个AMPL求解器(例如cplex
)来解决子问题。