我的模型里面有这样一个约束
其中y和u是变量,每个i对应着一个t的范围,每个t又会在求和中产生不同的k的范围,我该如何在pyomo中写这个约束了?
下面是我的想法:
tRange = []
for i in self.unitSet:
tRange.append([j for j in range(self.G[i] + 1, self.T + 1)])
def start_time_rule(model, i, t):
return sum(model.y[i, k] for k in range(max(t - self.unitData.loc[i, "MinOnTime"] + 1, 1), t)) <= model.u[i, t]
self.model.startTime = pe.Constraint(self.model.i, tRange[], rule=start_time_rule)
我先把和每个i对应的t的范围求出来,但是我再最后创建约束的时候,不能通过i来选择对应的t的范围,所以最后一行代码有问题,想了很久,不知道如何解决,请高人指点一下,十分的感谢!!!