python中是否有线性优化模型的实现,它允许显式定义变量的类型。例如,我希望我的变量只是整数。我可以在R中使用lpSolve时定义:
set.type(model, 1:18,type = "integer")
但我需要在python中构建线性优化模型。
有一个scipy的linprog实现,但它不允许定义我的变量类型。
答案 0 :(得分:3)
由于IP(整数规划)和LP(线性规划)是用非常不同的算法解决的,因此某些求解器不允许混合使用(IMO)是合法的:IP具有指数复杂性和LP多项式复杂度。你的问题是MILP(混合整数线性规划)因此具有指数复杂性,所以你需要一个MILP solver for Python。但请注意,如果引入许多整数变量,即使是小问题实例也可能变得很难解决。根据文档,Scipy的linprog只是一个LP求解器。
顺便说一下,它还有python interface to lpsolve和另一个看起来更新的界面pylpsolve。我尝试了pylpsolve,并且能够从github repo中克隆并安装它,你可以看一下这个函数(根据我之前说的,你会注意到这些名字令人困惑......)
>>> from pylpsolve import LP
>>> help(LP.setInteger)