我正在尝试使用Gurobi为优化模型添加约束。我在约束中有一些术语引用当前小时(正在循环),' next'小时(小时+1),以及一些固定的约束(即max_power_ramp)。
代码示例如下
for hour in hours:
if hour > hours[0]:
for i in num_gen:
model.addConstr((p_upper[hour, i] <= p[hours[hours.index(hour) - 1], i] +
max_ramp_up[i] * v[hours[hours.index(hour) - 1], i] +
startup_ramp[v[hour, i]] - v[hours[hours.index(hour)-1], i]
+ max_power[i] * (1 - v[hour,i])), name="power ramp up")
num_gen和hours变量都是范围变量。这个问题似乎与我引用v[hours[hours.index(hour) - 1], i]
当我调试代码时,就单个单元格引用而言,一切似乎都很好,但是当我尝试完成max_ramp_up[i] * v[hours[hours.index(hour) - 1], i]
&amp; max_power[i] * (1 - v[hour,i])
- 它返回的错误如:
ipdb> max_ramp_up[i] * v[hours[hours.index(hour) - 1], i]
*** gurobipy.GurobiError: Index out of range for attribute 'VarName'