2017-04-21 127 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