请求协助将Pulp优化约束代码转换为数学方程
约束代码转数学公式
符号定义
- ( T ): 仿真总时长(对应代码中的
time_span) - ( t ): 当前仿真时刻,取值为 ( 1, 2, ..., T )(对应代码中的
hour_of_sim) - ( E_{\text{init}} ): 初始电量水平(对应代码中的
initial_level) - ( P^{\text{charge}}_i ): 第 ( i ) 时段的充电功率(对应代码中的
P_Charge['C_' + str(i)]) - ( P^{\text{discharge}}_i ): 第 ( i ) 时段的放电功率(对应代码中的
P_Discharge['D_' + str(i)]) - ( E_{\text{min}} ): 电量下限阈值(对应代码中的
E_Min) - 系数
0.25: 单个时段的时长(单位:小时,比如15分钟),用于将功率转换为电量变化量
数学约束表达式
对于每一个时刻 ( t = 1, 2, ..., T ),需满足以下不等式约束:
[
E_{\text{init}} + 0.25 \sum_{i=0}^{t-1} P^{\text{charge}}i - \sum{i=0}^{t-1} P^{\text{discharge}}i \geq E{\text{min}}
]
代码对应说明
- 代码中的循环
for hour_of_sim in range(1, time_span+1)对应遍历所有时刻 ( t ) initial_level直接对应 ( E_{\text{init}} )pulp.LpAffineExpression([(P_Charge['C_' + str(i)], 0.25) for i in range(0,hour_of_sim)])等价于 ( 0.25 \sum_{i=0}^{t-1} P^{\text{charge}}_i ),即各时段充电量之和(功率×时长)pulp.lpSum(P_Discharge[index] for index in('D_' + str(i) for i in range(0,hour_of_sim)))等价于 ( \sum_{i=0}^{t-1} P^{\text{discharge}}_i ),即各时段放电功率之和(这里假设放电功率直接对应电量消耗,或已隐含时长系数)
内容的提问来源于stack exchange,提问作者BingoBongo
相关产品推荐
相关产品推荐

