2017-04-21 90 views
0

我一直在使用GAMS很长一段时间,但我无法在GAMS下使用CPLEX的所有功能。你能用Pyomo来做到吗?或者直接在Python中使用CPLEX?谢谢!pyomo与Python中的cplex的优点

回答

0

使用Pyomo的优点是它是一种独立于用于解决问题的底层求解器的建模语言。例如,你可以编写你的模型,然后用glpk解决它。通过更改命令行选项,可以使用CPLEX,Gurobi等解决相同的模型。它提供许多功能,如支持分布式优化,并允许您根据需要使用自定义解算器(请参阅文档)。

CPLEX Python API位于光谱的另一端。它不是一种建模语言。它是一个相对轻量级的层,包含底层的CPLEX Callable Library(C API)。变量,约束等由索引或名称引用。它使您可以在Callable Library中完成几乎所有可以完成的任务。从这个意义上讲,它为您提供了最多的CPLEX功能访问权限(即使是回调等高级功能)。

位于中间某处的选项是DOCplex。 DOCplex是IBM提供的开源建模语言,它允许您在云上或本地解决问题。它支持用于数学编程的CPLEX,还支持用于约束编程的CP Optimizer。

+0

谢谢rkersh!您知道pyomo与访问CPLEX功能方面的比较吗?例如,在gams下,每当发现新的现任解决方案时,您可以停止brach and bound算法。这也可以在pyomo下完成吗? – Salva

+0

我怀疑这一点。 [这里有一些说明](https://groups.google.com/forum/#!topic/pyomo-forum/lJTUjlAjw3s),虽然它正在谈论其他大型商业解决方案。这也是高级优化语言中不常见的东西,尤其是开源语言。我唯一知道的是[JuMP](https://jump.readthedocs.io/en/latest/)。但这显然不是python。 – sascha