Python I';我试图用gekko解决一个非线性混合整数问题,我陷入了一个循环
我得到的错误如下“@error:不等式定义”。我想我陷入了一个循环。我对自己设置参数的方式也不是很有信心。我是gekko的新手,在代码上找不到我的错误。错误发生在“m.solve()”行中Python I';我试图用gekko解决一个非线性混合整数问题,我陷入了一个循环,python,loops,gekko,Python,Loops,Gekko,我得到的错误如下“@error:不等式定义”。我想我陷入了一个循环。我对自己设置参数的方式也不是很有信心。我是gekko的新手,在代码上找不到我的错误。错误发生在“m.solve()”行中 m=GEKKO() #创建变量 demand=m.Array(m.Param,5) t=0 对于[11502320041005400]中的v: 需求[t]。价值=v t=t+1 A=m.Array(m.Param,(2,5)) t=0 g=0 对于[2,2,4,6,2.3,1,1.55,3.85,2,5.5]
m=GEKKO()
#创建变量
demand=m.Array(m.Param,5)
t=0
对于[11502320041005400]中的v:
需求[t]。价值=v
t=t+1
A=m.Array(m.Param,(2,5))
t=0
g=0
对于[2,2,4,6,2.3,1,1.55,3.85,2,5.5]中的v:
A[g][t]。值=v
t=t+1
如果t==5:
t=0
g=1
t=0
g=0
开始=m.Array(m.Param,(2,5))
对于[180220300,70150100120150,20200]中的v:
开始[g][t]。值=v
t=t+1
如果t==5:
t=0
g=1
t=0
g=0
C=m.Array(m.Param,(2,5))
对于[15,25,45,40,25,3,16.2,42,3,60]中的v:
C[g][t]。值=v
t=t+1
如果t==5:
t=0
g=1
#创建变量
ni=2;nj=5;
y=m.Array(m.Var,(ni,nj),lb=0,ub=1,integer=True)
x=m.Array(m.Var,(ni,nj),lb=0,integer=True)
#为模型添加限制
m、 方程(y[i][j]*开始[i][j]-x[i][j]尝试使用m.Equations()
并生成一个带方括号的方程列表。我重新编写了您的目标,以便更容易理解。您可以有多个目标,Gekko将它们相加,这样它就已经在进行求和了
从gekko导入gekko
m=GEKKO()
#创建变量
需求=m.Array(m.Param,5)
对于枚举中的i,v([11502320041005400]):
需求[i]。价值=v
A=m.Array(m.Param,(2,5))
t=0;g=0
对于[2,2,4,6,2.3,1,1.55,3.85,2,5.5]中的v:
A[g][t]。值=v
t=t+1
如果t==5:
t=0;g=1
t=0;g=0
开始=m.Array(m.Param,(2,5))
对于[180220300,70150100120150,20200]中的v:
开始[g][t]。值=v
t=t+1
如果t==5:
t=0;g=1
t=0;g=0
C=m.Array(m.Param,(2,5))
对于[15,25,45,40,25,3,16.2,42,3,60]中的v:
C[g][t]。值=v
t=t+1
如果t==5:
t=0;g=1
#创建变量
ni=2;nj=5;
y=m.Array(m.Var,(ni,nj),lb=0,ub=1,integer=True)
x=m.Array(m.Var,(ni,nj),lb=0,integer=True)
#为模型添加限制
m、 方程式([[y[i][j]*开始[i][j]-x[i][j]错误发生在哪一行?请在问题中包含完整的回溯谢谢John的帮助,我为我写得不好的问题感到抱歉。我知道这对社区没有帮助。(我的第一个问题)我很感谢你的提问。以下是写一个非常有效的问题的一些技巧:这需要一些练习,我希望你能继续使用这个平台来获得支持。
m=GEKKO()
#create variables
demand = m.Array(m.Param,5)
t=0
for v in [1150,2320,3200,4100,5400]:
demand[t].value = v
t=t+1
A=m.Array(m.Param,(2,5))
t=0
g=0
for v in [2,2,4,6,2.3,1,1.55,3.85,2,5.5]:
A[g][t].value = v
t=t+1
if t==5:
t=0
g=1
t=0
g=0
Start=m.Array(m.Param,(2,5))
for v in [180,220,300,70,150,100,120,150,20,200]:
Start[g][t].value = v
t=t+1
if t==5:
t=0
g=1
t=0
g=0
C=m.Array(m.Param,(2,5))
for v in [15,25,45,40,25,3,16.2,42,3,60]:
C[g][t].value = v
t=t+1
if t==5:
t=0
g=1
#create variables
ni = 2; nj = 5;
y = m.Array(m.Var,(ni,nj),lb=0,ub=1, integer=True)
x = m.Array(m.Var,(ni,nj),lb=0,integer=True)
# add limitations to model
m.Equation(y[i][j] * Start[i][j] - x[i][j] <= 0 for i in range(ni) for j in range(nj))
m.Equation(demand[j] <=m.sum([m.sum([x[i][j] for i in range(ni) ])])for j in range(nj))
#add optimization equation
m.Minimize(m.sum([m.sum([A[i][j] * x[i][j] - C[i][j] * y[i][j] * x[i][j]**0.5 for i in range(ni)]) for j in range(nj)]))
m.options.IMODE=3
m.options.Solver=1
m.solve()
print(x)
print(y)
print(m.options.OBJFCNVAL)
--------- APM Model Size ------------
Each time step contains
Objects : 10
Constants : 0
Variables : 80
Intermediates: 0
Connections : 25
Equations : 25
Residuals : 25
Number of state variables: 45
Number of total equations: - 25
Number of slack variables: - 15
---------------------------------------
Degrees of freedom : 5
----------------------------------------------
Steady State Optimization with APOPT Solver
----------------------------------------------
Iter: 1 I: 0 Tm: 0.00 NLPi: 2 Dpth: 0 Lvs: 0 Obj: 5.68E+04 Gap: 0.00E+00
Successful solution
---------------------------------------------------
Solver : APOPT (v1.0)
Solution time : 1.529999999911524E-002 sec
Objective : 56760.0000000000
Successful solution
---------------------------------------------------
[[[1150.0] [2320.0] [3200.0] [4100.0] [5400.0]]
[[0.0] [0.0] [0.0] [0.0] [0.0]]]
[[[0.0] [0.0] [0.0] [0.0] [0.0]]
[[0.0] [0.0] [0.0] [0.0] [0.0]]]