I try to solve an optimization problem with Gekko in google Collab and this error is shown (in line 91 m.Obj(m.sum(m.sum(((xl[i](D_input[i] + D_output[i])/0.5)+ (xf[i][j]((D_input[i] / ru[i][j]) + (D_output[i] / rd[i][j]) +((D_input[i] + D_output[i]) / rf[i][j])))+ (xc*((D_input[i] / ru[i][j]) + (D_output[i] / rd...): TypeError: x must be a python list of GEKKO parameters, variables, or expressions
!pip install gekko
from gekko import GEKKO
m = GEKKO()
MU = 5
FN = 3
Cloud = 1
D_input = m.Param(value=[2, 4, 7, 6, 9])
D_output = m.Param(value=[0.2, 0.25, 0.6, 0.35, 0.81])
RF_total = m.Param(value=[10, 10, 10])
RU_total = m.Param(value=[72, 72, 72])
RD_total = m.Param(value=[72, 72, 72])
c = m.Param(value=[0.2, 0.4, 0.7, 0.6, 0.9])
tr = m.Param(value=[10, 10, 10, 10, 10])
fl = m.Param(value=[0.5, 0.5, 0.5, 0.5, 0.5])
nu = m.Const(1.37)
fc = m.Const(10)
wc = m.Const(5)
eu = m.Const(0.142)
ed = m.Const(0.142)
euc = m.Const(0.658)
edc = m.Const(0.278)
el = m.Param(value=[0.0, 0.0, 0.0, 0.0, 0.0])
eed = m.Param(value=[[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]])
eeu = m.Param(value=[[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]])
eedc = m.Param(value=[0.0, 0.0, 0.0, 0.0, 0.0])
eeuc = m.Param(value=[0.0, 0.0, 0.0, 0.0, 0.0])
eef = m.Param(value=[[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]])
eec = m.Param(value=[0.0, 0.0, 0.0, 0.0, 0.0])
for i in range(MU) :
el[i] = nu * c[i]
for i in range(MU) :
for j in range(FN) :
eed[i][j] = D_output[i] * ed
eeu[i][j] = D_input[i] * eu
for i in range(MU) :
for j in range(FN) :
eef[i][j] = eeu[i][j] + eed[i][j]
for i in range(MU) :
eedc[i] = edc * D_output[i]
eeuc[i] = euc * D_input[i]
for i in range(MU) :
eec[i] = eeuc[i] + eedc[i]
xf = [[m.Var(value=0,lb=0,ub=1,integer=True) for j in range(FN)] for i in range(MU)]
xc = m.Var(value=0,lb=0,ub=1,integer=True)
xl = [m.Var(value=0,lb=0,ub=1,integer=True) for i in range(MU)]
ru = [[m.Var(value=0.01, lb=0.01, ub=72.0) for j in range(FN)] for i in range(MU)]
rd = [[m.Var(value=0.01, lb=0.01, ub=72.0) for j in range(FN)] for i in range(MU)]
rf = [[m.Var(value=0.01, lb=0.01, ub=10.0) for j in range(FN)] for i in range(MU)]
for j in range(FN):
m.Equation(sum(rf[i][j] for i in range(MU)) <= 10)
for j in range(FN):
m.Equation(sum(ru[i][j] for i in range(MU)) <= 72)
for j in range(FN):
m.Equation(sum(rd[i][j] for i in range(MU)) <= 72)
for i in range(MU):
m.Equation(xc + xl[i] + sum(xf[i][j] for j in range(FN)) == 1)
for i in range(MU):
m.Equation(xl[i]*(( D_input[i] + D_output[i])/0.5) <= 7)
for j in range(FN):
for i in range(MU):
m.Equation(((xf[i][j]*((D_input[i] / ru[i][j]) + (D_output[i] / rd[i][j]) + ((D_input[i] +
D_output[i]) / rf[i][j])))) <= 7)
for i in range(MU):
m.Equation(((xc*((D_input[i] / ru[i][j]) + (D_output[i] / rd[i][j]) + (3*(D_input[i] +
D_output[i]) / 10)))) <= 7)
for i in range(MU):
m.Equation(((D_input[i] + D_output[i])/0.5) <= tr[i])
for j in range(FN):
for i in range(MU):
m.Equation(((((D_input[i] / ru[i][j]) + (D_output[i] / rd[i][j]) + ((D_input[i] + D_output[i])
/ rf[i][j])))) <= tr[i])
for i in range(MU):
m.Equation(((((D_input[i] / ru[i][j]) + (D_output[i] / rd[i][j]) + (3*(D_input[i] + D_output[i]) / 10)))) <= tr[i])
m.Obj(m.sum(m.sum(((xl[i]*(D_input[i] + D_output[i])/0.5)+\
(xf[i][j]*((D_input[i] / ru[i][j]) + (D_output[i] / rd[i][j]) +((D_input[i] + D_output[i]) /
rf[i][j])))+\
(xc*((D_input[i] / ru[i][j]) + (D_output[i] / rd[i][j]) + (3*(D_input[i] + D_output[i]) /
10))))+\
(xf[i][j]*eef[i][j]) + (xc*eec[i]) + (xl[i]*el[i]) for i in range(MU)) for j in range(FN)))
m.options.SOLVER=1
m.solver_options = ['minlp_maximum_iterations 500', \
# minlp iterations with integer solution
'minlp_max_iter_with_int_sol 10', \
# treat minlp as nlp
'minlp_as_nlp 0', \
# nlp sub-problem max iterations
'nlp_maximum_iterations 50', \
# 1 = depth first, 2 = breadth first
'minlp_branch_method 1', \
# maximum deviation from whole number
'minlp_integer_tol 0.05', \
# covergence tolerance
'minlp_gap_tol 0.01']
m.solve()
print('Results')
print('Objective: ' + str(m.options.objfcnval))
please help me Thanks.