0
我使用Gurobi 7使用Python 2.7,並希望實現以下線性優化問題:Gurobi與Python字典鍵值錯誤
我曾嘗試使用下面的代碼翻譯上面Python和Gurobi :
T = range(1,17520)
# Create variables - defined as dictionaries
p = {} # power
s = {} # SOC
b = {} # buy
for t in T:
p[t] = m.addVar(vtype = GRB.CONTINUOUS, lb = -R, ub = R, name = "power_{}".format(t))
s[t] = m.addVar(vtype = GRB.CONTINUOUS, lb = 0, ub = E, name = "SOC_{}".format(t))
b[t] = m.addVar(vtype = GRB.CONTINUOUS, lb = 0, name = "Buy_{}".format(t))
# constraints
for t in T:
m.addConstr(b[t] == demand[t] + p[t], name = "balance_{}".format(t))
if t == 0:
m.addConstr(s[t] == p[t], name = "charge_{}".format(t))
else:
m.addConstr(s[t] == s[t-1] + p[t], name = "charge_{}".format(t))
# integrate variables and constraints
m.update()
# Objective function
obj = quicksum(
b[t]*SBP[t]
for t in T
)
m.setObjective(obj,GRB.MINIMIZE)
# start optimization
m.optimize
我得到的錯誤信息(如下所示)可能是由於[t-1]索引;但我不明白爲什麼這不被編譯器接受。我需要以不同的方式定義這個約束嗎?
我還沒有發現被這種結構所定義的gurobi優化問題的任何其它實施例中(變量是前述變量的功能等),但是這是用於LP問題一個非常典型的結構。
任何幫助,您可以提供非常感謝。