我有一个决策变量,它由能源设施的电力使用矩阵组成。矩阵中的每一列对应于不同的能量消耗(例如灯泡或加热),每一行是时间步长t的能量使用
我希望CVXPY告诉我每个时间步的能量使用情况。 然而,该设施对灯泡的接收功率有限制。特别是,一些灯泡连接到同一个插座,该插座不能向所有连接到它的灯泡组合输出超过一定量的功率
因此,我想对数组的不同列组合施加约束。例如,如果列1是Lightbull 1,列2是Lightbull 2,我希望遍历数组并放置如下约束:
[Column Lightbulb 1 Power at time step T] + [Column Lightbulb 2 Power at time step T] <= [Limit]
然而,子集的数量是动态的,因为不同的设施具有不同的灯泡方向。例如,一个设施可能有3个灯泡插在一个插座上,另一个可能有7个灯泡插在一个插座上,我想对这些子组的总能耗进行限制
因此,我使用了:
cvx.sum(cvx.vstack(k for k in [lightbulbs])) <= [Limit]
然而,当我以上述代码段的方式实现此功能时(其中,[Lightbulls]是连接到同一插座的灯泡的单个子集),CVXPY不遵守约束,即使它接受约束,也就是说,在一个时间步长上灯泡的总功率超过了我想要对其施加的限制。我做错了什么
目前没有回答
相关问题 更多 >
编程相关推荐