You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docplex添加多时间序列首尾相等约束时出现KeyError: (-1, 0)求助

解决Docplex多时间序列首尾值相等约束的KeyError问题

错误原因

你遇到的KeyError: (-1, 0)是因为var_1是通过continuous_var_dict创建的字典,它的键是(i,j)元组,其中i来自你定义的timesteps列表。负索引-1并不是timesteps中的元素,因此字典中不存在(-1, j)这样的键,自然无法访问。

而单个时间序列时你用var_1[-1]能生效,是因为当时的var_1是支持负索引的序列结构(比如列表),和字典的键访问逻辑完全不同。

解决方案

  1. 先获取timesteps中的最后一个时间步(即实际的最终时刻索引):
last_timestep = timesteps[-1]
  1. 用这个实际的时间步索引替换代码中的-1,修改约束添加逻辑:
var_1 = m.continuous_var_dict([(i, j) for i in timesteps for j in timeseries], name='var_1')
last_timestep = timesteps[-1]
m.add_constraints(var_1[last_timestep, j] == var_1[0, j] for j in timeseries)

验证建议

  • 可以先打印timesteps确认其中的元素,确保last_timestep是列表中的最后一个有效值;
  • 也可以通过print(var_1.keys())查看字典的所有键,确认(last_timestep, j)确实存在于键集合中。

内容的提问来源于stack exchange,提问作者Trev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 14:50:57