我想在我的目标函数中增强某些术语。
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