如何迭代 objective 函数
How to iterate over objective function
我想在我的 objective 功能中加强某些术语。
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
我想在我的 objective 功能中加强某些术语。
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