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问题一个非常典型的结构。
任何帮助,您可以提供非常感谢。