我开始学习GEKKO。现在,我正在解决一个 knapsak 问题来学习,但是这次我收到错误“int 'object is not subscriptable”。你能看一下这段代码吗?问题的根源是什么 我应该如何定义 1.10 矩阵?
from gekko import GEKKO
import numpy as np
m = GEKKO(remote=False)
x = m.Var((10),lb=0,ub=1,integer=True)
#x = m.Array(m.Var,(1,10),lb=0,ub=1,integer=True)
v=np.array([2, 2, 7, 8, 2, 1, 7, 9, 4, 10])
w=np.array([2, 2, 2, 2, 2, 1, 6, 7, 3, 3])
capacity=16
for j in range(10):
m.Maximize(v[j]*x[j])
for i in range(10):
m.Equation(m.sum(x[i]*w[i])<=capacity)
m.options.solver = 1
m.solve()
#print('Objective Function: ' + str(m.options.objfcnval))
print(x)
我的第二个问题是MATLAB中有一个名为“showproblem()”的函数。 GEKKO有这个功能吗?
感谢帮助。
根据答案的新问题。
我可以在这里写这种风格吗(不行,如果我能做到,请写工作风格)(我想写这种风格,因为我认为这种风格更容易理解。),
for i in range(10):
xw = x[i]*w[i]
m.Equation(m.sum(xw)<=capacity)
而不是这个。
xw = [x[i]*w[i] for i in range(10)]
m.Equation(m.sum(xw)<=capacity)