如何重塑CVXPY变量用于约束计算?线性规划问题咨询
问题梳理与遗漏要点总结
一、流量转换与时段映射的核心问题
- 时段对应关系缺失:你只提到
running_times的每个索引对应24小时内的时段,但未明确这7个时段和48个30分钟区间的映射规则(比如哪几个30分钟区间属于running_times[0]对应的时段)。没有这个明确的映射,将running_times转成(48,)向量的操作完全没有业务逻辑支撑。 - 流量计算精度问题:按每秒流速9.6计算,单个30分钟满流量应为
9.6 * 60 * 30 = 17280,但你给出的示例值是17200。如果这不是笔误,必须明确是否存在未说明的损耗系数、流量修正项,这在规划模型里是不可缺失的参数。
二、线性规划模型的约束遗漏
- 最大运行时间的约束未明确:给出的
[480 360 120 180 90 120 90]最大运行时间,需要转化为LP模型的约束方程,比如running_times[i] ≤ max_running_times[i](每个时段运行时长不超过对应最大值),或者明确是否是全局累计上限。没有约束的最大值参数毫无意义。 - 运行连续性约束未考虑:如果设备运行要求连续(不能在单个30分钟区间内仅运行部分时间),需添加约束:每个30分钟区间的流量要么为满值、要么为0;若允许部分运行,必须明确
running_times的分钟数如何拆分到对应30分钟区间(比如231分钟对应7个完整30分钟+1个21分钟区间)。 - 24小时总时长约束:48个30分钟区间总时长为1440分钟,需添加全局约束确保
running_times的总和不超过1440,同时符合业务层面的运行时长限制,这是LP模型的基础约束之一。
三、向量生成的合理性问题
- 重复规则无依据:你提到要重复示例数组得到
(48,)形状,但未说明重复的逻辑(示例数组长度16,48是其3倍,对应什么时间划分?)。重复规则必须和running_times的时段划分匹配,否则会出现时间错位,导致后续对比完全失效。 - 零值时段的处理规则缺失:
running_times中的0值对应哪些30分钟区间?是直接设为0,还是存在设备待机流量?这会直接影响目标函数的计算结果。
内容的提问来源于stack exchange,提问作者Aidan Donnelly
相关产品推荐
相关产品推荐

