Python 我对GEKKO中的循环约束有问题

Python 我对GEKKO中的循环约束有问题,python,gekko,Python,Gekko,我想学习python和gekko,但我有一个问题。我想用gekko再次编写这个matlab代码,用于学习gekko。以下是运行良好的matlab代码: %transporation vizeden sonra slaytısf7。 清楚的 clc adilprob=优化问题; xdeg=optimvar('xdeg',3,3,'LowerBound',0); %合金=最佳值('alloys',3,'LowerBound',0); 成本=[7 9 11; 7 11 11; 4 5 12;]; sp

我想学习python和gekko,但我有一个问题。我想用gekko再次编写这个matlab代码,用于学习gekko。以下是运行良好的matlab代码:

%transporation vizeden sonra slaytısf7。
清楚的
clc
adilprob=优化问题;
xdeg=optimvar('xdeg',3,3,'LowerBound',0);
%合金=最佳值('alloys',3,'LowerBound',0);
成本=[7 9 11;
7 11 11;
4 5 12;];
spp=[300 350 400];
dmx=[100 200];
%cosst=xdeg*成本;
expr=optimexpr;%optimexpr yerine=optimexpr yapsakta calısıyor。
对于i=1:3
对于j=1:3
expr=expr+成本(i,j)*xdeg(i,j);
结束
结束
对于i=1:3
常数1(i)=和(xdeg(i,:);
结束
对于j=1:3
常数2(j)=和(xdeg(:,j))==dmx(j);
结束

adilprob.Constraints.con1=const1(i)这里有一个Python gekko版本,它简化了问题陈述和解决方案

从gekko导入gekko
将numpy作为np导入
m=GEKKO(远程=False)
x=m.Array(m.Var,(3,3),lb=0)
成本=np.数组([[7,9,11],
[7 ,11, 11],
[4 ,5 ,12]])
spp=[300350400]
dmx=[100100200]
对于范围(3)中的i:
对于范围(3)内的j:
m、 最小化(成本[i,j]*x[i,j])
对于范围(3)中的i:

m、 等式(m.sum(x[i,:])谢谢你的帮助,我开始学壁虎了。 现在,我正在解决一个背包问题来学习,但这次我得到了错误“int”对象不可下标。你能看看这段代码吗?问题的根源是什么?我应该如何定义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)
从gekko导入gekko
将numpy作为np导入
m=GEKKO(远程=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.数组([2,2,7,8,2,1,7,9,4,10])
w=np.数组([2,2,2,2,1,6,7,3,3])
容量=16
对于范围(10)内的j:
m、 最大化(v[j]*x[j])
对于范围(10)内的i:

m、 方程(m.sum(x[i]*w[i])问得好!你能把这个作为一个单独的问题发布吗?当然。我已经问过了。谢谢你在这里发布这个问题:你能忘记我的第二个问题吗?谢谢你的帮助。我无法删除这个答案。如果你想删除它,你需要选择底部的“删除”选项。
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)