编程语言建议-动态和多维数组-cplex或gurobi

Programming language suggestion - Dynamic and multidimensional array - cplex or gurobi

目前我一直在使用MATLAB来解决我一直在处理的问题。在我的 MATLAB 代码中,我调用 CPlex 或 GUROBI 解算器来解决大型线性规划问题。在我的 MATLAB 代码的每次调用中,CPlex 或 GUROBI 被调用超过 10^5 次。这会导致高计算负荷,并且解决更大的问题需要太多时间。但是,我想切换到另一种编程语言,

至此我找到了三个选项

  1. Fortran:看起来还不错,但我担心它是否可以有效地多次调用求解器。看来我只能将 Fortran 与 Cplex 一起使用。我用谷歌搜索了 Fortran+GUROBI,但结果并不令人鼓舞。

  2. Visual Basic.NET : 似乎可以使用 Visual Basic 调用 Cplex 和 GUROBI,但我不确定性能如何。

  3. Python:均可与 CPlex 和 GUROBI 集成。

总而言之,我请求您的建议以继续前进。我的偏好是从一种可以同时使用 GUROBI 和 CPlex 的编程语言开始。

我的建议是使用 Python 表母。

Pyomo (www.pyomo.org) "... 是一个基于 Python 的开源软件包,支持用于制定和分析优化模型的多种优化功能。 “因此,您可以使用 Python 构造来帮助构建模型。构建模型后,您可以 运行 在 gurobi、cplex 等平台上使用它。由于求解器只是 solve 函数中的一个参数,因此 运行 在两者中使用它只是一个词的区别。下面是一个简单的例子。

# model.py
from __future__ import division
from pyomo.environ import *

model = ConcreteModel()

model.x = Var([1,2], domain=NonNegativeReals)

model.OBJ = Objective(expr = 2 * model.x[1] + 3 * model.x[2])

model.Constraint1 = Constraint(expr=3 * model.x[1] + 4 * model.x[2] >= 1)

然后您可以从命令行解决

pyomo solve model.py --solver=gurobi

pyomo solve model.py --solver=cplex

您也可以使用脚本来解决它。天空是极限,support group 很棒。