如何迭代目标函数



我想在我的目标函数中增强某些术语。

model.addConstr(KW == quicksum(I[t] *(1.05**(-i)) for t in Tst + Z[t] 
* (1.05**(-j)) for t in T)
model.setObjective(KW,GRB.MAXIMIZE)
model.optimize()

变量 i 应该从 1 运行到 Tst 和 T 中的元素数 分别。 因此,如果 Tst 中的 t 是 [2020,2021,2022],则 I[2020] 乘以 1.05** (-1) I[2021] 1.05**(-2( 和 I[2022] 1.05**(-3(。 与 Z[t] 相同,只是 T 的列表大于 Tst。

for i in range(1,len(Tst)+1):
model.addConstr(KW == quicksum(I[t] * (1.05**(-i)))

但是,KW 始终为 0,这不应该是。我错过了什么?

我刚刚创建了第二本字典

Expo = {}
i=1
for t in T:
Expo[t] = i
i = i + 1

如果我这样做:

model.addConstr(KW == quicksum(I[t] *(1.05**(Expo[t])) for t in Tst + Z[t] 
* (1.05**(Expo[t])) for t in T)
model.setObjective(KW,GRB.MAXIMIZE)
model.optimize()

它做我想做的事。但我不认为这是一个很好的解决方案:P

最新更新