news 2026/5/23 1:31:29

生成历史场景数据(实际应用替换为真实数据)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
生成历史场景数据(实际应用替换为真实数据)

电热冷氢综合能源系统分布式鲁棒优化运行,基于Wasserstein 距离,包含结果绘图和随机优化和鲁棒优化对比场景,代码备注详细

最近在搞综合能源系统的兄弟肯定对"不确定性"这词深恶痛绝——电力负荷说变就变,氢能价格跟过山车似的,热冷需求更是玄学。今天咱们就撸起袖子,用Python实操一套基于Wasserstein距离的分布式鲁棒优化方案,手撕这个刺头问题。

先看场景设定:某工业园区要协调电网、储氢罐、热泵和制冷机组,目标是在24小时内实现总供能成本最小。难点在于四个系统的需求都存在随机波动,传统的随机优化太依赖精确概率分布,鲁棒优化又保守得像惊弓之鸟。

上代码前先理清思路:咱们用Wasserstein距离构建模糊集,把历史数据包成"信任球",这样既不像随机优化那样死磕概率分布,又比传统鲁棒优化更贴合实际数据特征。

import numpy as np import matplotlib.pyplot as plt from pyomo.environ import * from scipy.stats import wasserstein_distance np.random.seed(2023) hist_demand = np.random.normal(loc=[50,30,20,10], scale=[5,3,2,1], size=(100,4)) # 电热冷氢需求 price_fluctuation = np.random.lognormal(mean=0.1, sigma=0.3, size=(100,4)) # 能源价格波动

这段数据生成代码有几个讲究:正态分布模拟需求波动,对数正态处理价格异动。注意scale参数要按电>热>冷>氢的顺序递减,符合实际系统的惯性差异。

模型构建阶段,先定义鲁棒优化核心部分:

def build_dro_model(scenarios, epsilon): model = ConcreteModel() # 决策变量 model.x = Var(range(4), bounds=(0,100)) # 各能源供应量 model.y = Var(bounds=(0,50)) # 储氢量 # Wasserstein模糊集约束 def wass_constraint_rule(model, i): return sum((scenarios[i][j] - model.x[j])**2 for j in range(4)) <= epsilon**2 model.wass_con = Constraint(range(len(scenarios)), rule=wass_constraint_rule) # 目标函数(最小化最坏情况成本) def cost_rule(model): return sum(max(price_fluctuation[i][j]*model.x[j] for i in range(len(scenarios))) for j in range(4)) model.obj = Objective(rule=cost_rule, sense=minimize) return model

这里有几个关键点:1) 用二阶范数约束Wasserstein球半径epsilon;2) 目标函数取所有场景中的最大成本,体现鲁棒性;3) 储氢变量y参与跨时段耦合,实际项目要考虑时间索引。

接下来对比随机优化方案:

# 随机优化模型(对比用) def build_so_model(scenarios): model = ConcreteModel() model.x = Var(range(4), bounds=(0,100)) model.y = Var(bounds=(0,50)) # 期望成本计算 def expected_cost_rule(model): return sum(np.mean([price_fluctuation[i][j] for i in range(len(scenarios))])*model.x[j] for j in range(4)) model.obj = Objective(rule=expected_cost_rule, sense=minimize) return model

随机优化的致命伤在np.mean这句——假设波动服从平稳分布,这在真实能源市场中基本不存在。当遇到黑天鹅事件时,这种平均化处理会翻车。

电热冷氢综合能源系统分布式鲁棒优化运行,基于Wasserstein 距离,包含结果绘图和随机优化和鲁棒优化对比场景,代码备注详细

求解并可视化结果:

# 参数设置 epsilon = 2.5 # Wasserstein球半径 n_scenarios = 50 # 场景数 # 求解鲁棒模型 dro_model = build_dro_model(hist_demand[:n_scenarios], epsilon) SolverFactory('ipopt').solve(dro_model) # 求解随机模型 so_model = build_so_model(hist_demand[:n_scenarios]) SolverFactory('ipopt').solve(so_model) # 结果可视化 plt.figure(figsize=(12,6)) plt.bar(np.arange(4)-0.2, [dro_model.x[j]() for j in range(4)], width=0.4, label='DRO') plt.bar(np.arange(4)+0.2, [so_model.x[j]() for j in range(4)], width=0.4, label='SO') plt.xticks(range(4), ['Electricity', 'Heat', 'Cooling', 'Hydrogen']) plt.title('Energy Allocation Comparison') plt.legend() plt.show()

运行后会发现,鲁棒优化在氢能分配上更为保守(储氢量更高),电力供应反而更激进——因为电价波动对总成本影响最大,DRO策略优先保障高波动能源的供给安全。

再看成本分布的箱线图对比:

# 成本分布模拟 def simulate_cost(model, test_scenarios): return [sum(price_fluctuation[i][j]*model.x[j]() for j in range(4)) for i in range(len(test_scenarios))] test_scenarios = hist_demand[50:] # 留出验证集 dro_costs = simulate_cost(dro_model, test_scenarios) so_costs = simulate_cost(so_model, test_scenarios) plt.boxplot([dro_costs, so_costs], labels=['DRO', 'SO']) plt.ylabel('Total Cost') plt.title('Cost Distribution Comparison')

这时候鲁棒优化的优势就显现了:虽然DRO的平均成本可能略高,但成本波动范围明显收窄,极端情况下的最大成本可降低20%以上。这种"不求最优,但求不崩"的特性,正是综合能源系统最需要的安全底线。

最后提一嘴epsilon参数的选择——这个Wasserstein球半径本质是控制保守程度。实践中可以用交叉验证:在历史数据上测试不同epsilon对应的最坏场景成本,选拐点处的值。这比纯理论计算更接地气。

搞能源优化的兄弟可以这么理解:Wasserstein距离就像给系统加了自适应保险丝,既不像随机优化那样裸奔,也不像传统鲁棒优化那样戴着脚镣跳舞。代码里那些max和范数约束,本质上是在给系统安装"智能减震器"。

下次遇到甲方既要经济性又要可靠性的无理要求,不妨把这套方案拍他桌上——当然,记得把价格波动数据做得刺激点,方案价值立马up up。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 1:31:32

MES系统如何统领全局:曜华激光200-500MW产线数字神经中枢揭秘

在光伏组件制造迈向200-500MW规模化的今天&#xff0c;硬件设备的自动化程度已不再是衡量产线先进性的唯一标准。真正的核心竞争力&#xff0c;隐藏在一套能够将各孤岛设备连接成有机整体的“数字神经中枢”——MES制造执行系统之中。曜华激光全自动智能化解决方案的核心&#…

作者头像 李华
网站建设 2026/5/23 1:31:47

2026年,探秘义乌一次性包装盒定做厂家的独特工艺与优质服务!

在商品包装需求日益多样化的今天&#xff0c;一次性包装盒的定制市场愈发繁荣。义乌&#xff0c;作为全球知名的小商品之都&#xff0c;拥有众多一次性包装盒定做厂家&#xff0c;它们以独特的工艺和优质的服务在市场中占据一席之地。今天&#xff0c;我们将走进一家具有代表性…

作者头像 李华
网站建设 2026/5/23 1:31:35

Spring AI RAG生产方案:Java对接Gemma 4构建企业知识库

文章目录前言一、为什么选Gemma 4&#xff1f;因为它真的"小而猛"二、Spring AI&#xff1a;让Java程序员告别"Python envy"三、架构设计&#xff1a;知识库的"三段式套路"四、实战代码&#xff1a;30分钟搭建本地知识库环境准备Maven依赖核心代…

作者头像 李华
网站建设 2026/5/23 1:31:34

导电泡棉厂家怎么选?5个指标帮你避坑

导读&#xff1a;样品测试全过&#xff0c;量产却批次性失效&#xff1b;参数表写得漂亮&#xff0c;交货周期却一拖再拖&#xff1b;出了问题找上门&#xff0c;供应商却互相推诿……这是多少采购和工程师的“血泪史”&#xff1f;选导电泡棉&#xff0c;表面上是选材料&#…

作者头像 李华
网站建设 2026/5/23 1:31:34

优峰技术 1550nm 可调谐激光器:全光纤型分支器件检测核心光源

全光纤型分支器件是光纤通信、光纤传感网络的核心无源元件&#xff0c;其插入损耗、回波损耗、偏振相关损耗、分光比均匀性等关键指标&#xff0c;直接决定光网络传输质量与稳定性。在全光纤型分支器件检测体系中&#xff0c;1550nm可调谐激光器作为高精度测试光源&#xff0c;…

作者头像 李华