基于双层优化的微电网系统规划容量配置方法 摘要:与目前大部分的微网优化调度代码不同
摘要:与目前大部分的微网优化调度代码不同,本代码主要做的是微网的多电源容量优化配置,规划出最佳的微电网光伏、风电、储能等多电源的容量配置方案,此外,代码采用双层模型,上层以周期内运维成本以及投资成本之和最低为目标函数,下层则以调度周期内购售电成本以及燃料成本最低为目标函数,上层得出最佳容量配置方案,下层得出最佳运行策略。不过真要落地应用的话,可能得在风机出力预测模型里加些机器学习的花活——毕竟靠历
基于双层优化的微电网系统规划容量配置方法 摘要:与目前大部分的微网优化调度代码不同,本代码主要做的是微网的多电源容量优化配置,规划出最佳的微电网光伏、风电、储能等多电源的容量配置方案,此外,代码采用双层模型,上层以周期内运维成本以及投资成本之和最低为目标函数,下层则以调度周期内购售电成本以及燃料成本最低为目标函数,上层得出最佳容量配置方案,下层得出最佳运行策略。 出图效果也非常清楚,具体可以看下图。 代码非常精品,注释几乎一行一注释;实现效果见下图,结果合理。

微电网规划这事儿听起来像在玩策略游戏——既要考虑光伏板铺多少、风机装几台,还得琢磨储能电池的容量够不够撑过阴雨天。传统优化方案往往只盯着调度策略,但真到了要掏钱建电站的时候,才发现设备容量配置才是成本大头。最近扒到个双层优化代码,直接把容量规划和运行调度两个层面打通了,像极了游戏里先布局防御塔再实时调整战术的操作。

先看上层模型的暴力美学——这里用遗传算法搞组合优化。代码里初始化种群那段特别有意思:
def initialize_population():
pop = np.random.randint(low=[50,100,200], high=[500,800,1000], size=(POP_SIZE,3))
return pop * 0.01 # 转换成兆瓦单位
简单粗暴地生成几百组随机配置方案,光伏容量在0.5-5MW之间波动。注意这里的单位转换细节,工程场景里这种量纲处理不当分分钟让成本计算翻车。

下层的调度模型才是真正的算力黑洞。看这段购电成本计算:
def calculate_operation_cost(config):
# config是上层传入的容量配置
model = gp.Model() # Gurobi真香警告
power_grid = model.addVars(24, lb=-config['storage']) # 允许反向卖电
# 典型的时间电价机制
buy_price = [0.35 if 8<=h<22 else 0.2 for h in range(24)]
model.setObjective(gp.quicksum(power_grid[h]*buy_price[h] for h in range(24)))
# 这里省略了风机出力约束和储能循环逻辑...
return model.optimize()
这段代码把分时电价机制玩得很溜,早上8点到晚10点按高峰电价计算。注意power_grid变量的lb参数设为负的储能容量,意味着允许储能系统反向卖电给电网——这个负号要是漏了,整个经济性模型直接崩盘。

基于双层优化的微电网系统规划容量配置方法 摘要:与目前大部分的微网优化调度代码不同,本代码主要做的是微网的多电源容量优化配置,规划出最佳的微电网光伏、风电、储能等多电源的容量配置方案,此外,代码采用双层模型,上层以周期内运维成本以及投资成本之和最低为目标函数,下层则以调度周期内购售电成本以及燃料成本最低为目标函数,上层得出最佳容量配置方案,下层得出最佳运行策略。 出图效果也非常清楚,具体可以看下图。 代码非常精品,注释几乎一行一注释;实现效果见下图,结果合理。

最带劲的是双层模型的数据传递方式。上层在评估每个个体适应度时,会触发下层模型的完整求解:
def fitness_function(config):
op_cost = lower_layer_schedule(config) # 下层求解
invest_cost = config.sum() * UNIT_PRICE # 单位容量造价
return invest_cost + op_cost * 365 # 年化成本
这种嵌套调用在代码结构上看着简单,实际运行时计算量爆炸。好在用了Gurobi的快速求解器,不然普通规划软件估计得卡成PPT。

可视化部分藏着个骚操作——用桑基图展示能量流动:
plt.stackplot(time, pv_output, wind_output, grid_power,
labels=['PV','Wind','Grid'], colors=['gold','cyan','gray'])
plt.fill_between(time, storage_soc, alpha=0.3) # 储能荷电状态
金色代表光伏出力,青色是风机发电,灰色部分显示电网交互。储能SOC的透明度填充让充放电过程一目了然,比单纯折线图更有层次感。
折腾完这套代码最大的感悟是:好的优化模型得像洋葱一样有层次。上层负责战略布局,下层处理战术执行,两者用成本核算这根线串起来。不过真要落地应用的话,可能得在风机出力预测模型里加些机器学习的花活——毕竟靠历史数据生成的典型日曲线,在风光波动剧烈的场景下还是有点虚。
更多推荐
所有评论(0)