GEKKO -混合整数规划



我正在尝试使用GEKKO解决一个混合整数问题。

p : continuous variable
I : binary indicator

我可以找到一个解决这个问题的例子:

mdl.Equation(p[0][0][0] == 4)

但是,我正在寻找一种基于二进制指标的解决方案:

mdl.Equation(p[0][0][0]* I[0][0][0] == 4)
def testGEKKO():
import numpy as np
from gekko import GEKKO
t = np.linspace(1,6,6)
m = np.linspace(1,3,3)
j = np.linspace(1,2,2)

c = np.array([0.0485, 0.0593, 0.0692, 0.0790, 0.085, 0.0883])

mdl = GEKKO()

p = mdl.Array(mdl.Var, (len(t), len(m), len(j)), lb = 0, ub = 5, integer = False)
I = mdl.Array(mdl.Var, (len(t), len(m), len(j)), lb = 0, ub = 1, integer = True)

mdl.options.SOLVER = 1
for tt in range(len(t)):
for mm in range(len(m)):
for jj in range(len(j)):
mdl.Minimize(c[tt] * p[tt][mm][jj] * I[tt][mm][jj])

mdl.Equation(p[0][0][0]* I[0][0][0] == 4)
mdl.options.SOLVER = 1            
mdl.solve(disp=True)

return p, I

试着用不同的方式写这个方程,这样当二进制指示器为1时,p[0][0][0]=4

mdl.Equation((p[0][0][0]-4)* I[0][0][0] == 0)

对于原始表达式,如果二进制指示符为零,0==4是不可行的。

mdl.Equation(p[0][0][0]* I[0][0][0] == 4)

相关内容

  • 没有找到相关文章

最新更新