我已经使用GAMS很长时间了,但我不能在GAMS下使用CPLEX的所有功能。你能用Pyomo做到吗?或直接在Python中使用CPLEX?谢谢!
答案 0 :(得分:2)
使用Pyomo的优点是它是一种独立于用于解决问题的底层求解器的建模语言。例如,您可以编写模型,然后使用glpk解决它。通过更改命令行选项,您可以使用CPLEX,Gurobi等解决相同的模型。它提供了许多功能,例如支持分布式优化,并允许您根据需要使用自己的自定义求解器(参见文档)。
CPLEX Python API位于频谱的另一端。它不是一种建模语言。它是一个相对轻量级的层,它包裹着底层的CPLEX Callable Library(C API)。变量,约束等由索引或名称引用。它允许您几乎完成可在Callable Library中完成的任何操作。从这个意义上讲,它为您提供了对CPLEX功能的最大访问权限(甚至是回调等高级功能)。
位于中间位置的选项是DOCplex。 DOCplex是IBM提供的一种开源建模语言,它允许您在云上或本地解决。它支持CPLEX进行数学编程,还支持CP Optimizer进行约束编程。