gpt4 book ai didi

java - 将 gurobi 与 java 结合使用 vs gurobi 与 ampl

转载 作者:行者123 更新时间:2023-11-29 07:00:36 33 4
gpt4 key购买 nike

将 Gurobi 与 AMPL 结合使用而不是使用 Gurobi 直接 API(java、C#、C++ 等)来解决大型 MIP 问题有哪些优势?使用 Gurobi 的 API 而不是 AMPL 是否有性能优势?

最佳答案

直到 90 年代中期,使用 MIP 求解器解决大规模问题(因此不包括电子表格)的唯一实用选择是

当时,对于非常复杂的 MIP 模型,AMPL 模型会更加简洁、可读且更易于维护。即使在今天,AMPL 模型看起来更像是一个数学公式。

AMPL 的一个优势是它的数据结构,然而如今 C#、Java 和 C++ 的标准库都具有出色的数据结构。 AMPL的另一个优点是它的语法看起来非常直观

subject to {j in J} sum {i in I} x[i,j] <= b[j]

但新的 C++0x 和最新版本的 Java 的语法更接近于此。

AMPL 可在解算器之间移植,但解算器之间的接口(interface)差别不大。虽然将应用程序从一个求解器移植到另一个求解器并不是一项微不足道的任务,但对我来说,这并不像尝试切换数据库(比如从 MySQL 到 Postgres)那么重要。

AMPL 有一些特定的缺点。对于大多数业务应用程序,将 AMPL 引入项目意味着添加另一种编程语言。花在学习 AMPL 上的时间只会对编写数学编程模型有用。与 Java、C# 甚至 C++ 相比,AMPL 的用户群很小,并且对底层技术的改进仅来自一家小公司(充满了非常聪明的人,但仍然是一家小公司)。如果您想使用混合方法来解决您的优化问题(例如,具有启发式生成额外列的列生成策略),您将面临一些麻烦。如果您想执行某些操作(例如运行求解器直到达到最优性的 1%,但至少运行 10 秒),您不能使用 AMPL 执行此操作,但可以使用 Gurobi API 之一通过回调执行此操作。

Python 可以提供两全其美的方法。它是一种通用编程语言,应用领域广泛。 Gurobi 有自己的 Python API , 但也有内部领域特定的语言,如 PuLPPyomo在求解器之间可移植。

关于java - 将 gurobi 与 java 结合使用 vs gurobi 与 ampl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26858236/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com