基于主从博弈的电热综合能源系统动态定价与能量管理(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据


💥1 概述

综合能源系统是由电、热、气、冷多种能源系统耦合而成的,相比于传统能源系统具有更多的能量转换装置和储能设备,其能量流动关系更加复杂,能源的调度分配与能源转换设备特性和能源价格差有很大关系,因此为了更好的对综合能源系统进行协调优化,需要更好的了解各设备的特性,本章介绍了燃气锅炉(Gas Boiler, GB)、余热锅炉(Heat Recovery Boiler, HR)、蒸汽轮机(Steam Turbine, ST)、燃气轮机(GasTurbine, GT)、储能装置等设备的数学模型,并对综合能源需求响应进行概述,为后续工作的开展提供理论基础。

Stackelberg 主从博弈模型中各主体之间的决策过程是有先后顺序的,是一种动态的非合作博弈模型。博弈过程中的领导者率先制定决策,随后参与者根据已知的信息制定策略,因此领导者在博弈过程中具有先动优势。

在主从博弈格局中,当所有博弈主体在一定的条件下,制定的决策使得各主体均达到最优时,则称博弈达到 Stackelberg 均衡,领导者的所有可能策略集记为 X,跟随者的所有可能策略集记为 Y

该模型专注于研究电热综合能源系统的动态定价问题,采用了主从博方法。在领导者问题中,以综合能源系统整体收益为目标函数,考虑了电价和热价等约束。而在跟随者模型中,以用户用能满意度最高为目标函数,构建了领导者-跟随者Stackelberg博弈模型,并考虑了系统的功率平衡和热能平衡条件。该模型的上层求解采用粒子群算法,下层求解采用混合整数规划算法,使用CPLEX作为求解器,也支持替换成gurobi进行求解。

📚2 运行结果

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

可视化代码:

figure(1)
plot(Pload','-x','linewidth',1.8);
hold on
plot(Pload_dr','-.','linewidth',1.8);
axis([0.5,24.5,0,1500]);
xlabel('时刻/h');
ylabel('有功功率/kW');
grid on
legend('园区1电负荷','园区2电负荷','园区3电负荷','园区1需求响应后电负荷','园区2需求响应后电负荷','园区3需求响应后电负荷');
title('园区电负荷');

figure(2)
plot(Hload','-x','linewidth',1.8);
axis([0.5,24.5,0,4000]);
xlabel('时刻/h');
ylabel('热功率/MJ');
grid on
legend('园区2热负荷','园区3热负荷');
title('园区热负荷');

figure(3)
plot(Cload','-x','linewidth',1.8);
axis([0.5,24.5,0,8000]);
xlabel('时刻/h');
ylabel('冷功率/MJ');
grid on
legend('园区3冷负荷');
title('园区冷负荷');

figure(4)
plot(P_pv','-x','linewidth',1.8);
hold on
plot(P_wt','-x','linewidth',1.8);
axis([0.5,24.5,0,1200]);
xlabel('时刻/h');
ylabel('冷功率/MJ');
grid on
legend('园区1光伏','园区1光伏','园区1光伏','风电场出力');
title('园区新能源出力');

figure(5)
F=zeros(3,24);
F(1:3,:)=P_dis;
D=zeros(5,24);
D(1,:)=-P_chwind;
D(2,:)=-P_chgrid;
D(3:5,:)=-P_ch;
c=bar(-D(:,:)','stack');
Color1 = [0.1 0.8 0.2];
Color2 = [0.5 0.1 0.2];
Color3 = [0.6 0.1 0.7];
Color4 = [0.4 0.4 0.5];
Color5 = [0.9 0.6 0.2];
set(c(1), 'FaceColor', Color1);
set(c(2), 'FaceColor', Color2);
set(c(3), 'FaceColor', Color3);
set(c(4), 'FaceColor', Color4);
set(c(5), 'FaceColor', Color5);
hold on
b=bar(-F(:,:)','stack');
color1 = [0.8 0.1 0.1];
color2 = [0.1 0.5 0.5];
color3 = [1 0.6 0.5];
set(b(1), 'FaceColor', color1);
set(b(2), 'FaceColor', color2);
set(b(3), 'FaceColor', color3);
ax = gca;
ax.YColor = 'k';
axis([1,24,-4500,5000]);
xlabel('时刻/h');
ylabel('有功功率/MW'); % 给左y轴添加轴标签
yyaxis right; % 激活右边的轴
hold on
plot(E_ess(:)/3000,'g-^','linewidth',2);
ax = gca;
ax.YColor = 'k';
axis([0.5,24.5,0,1]);
ylabel('储能SOC'); % 给右y轴添加轴标签
legend('储能从风电场充电','储能从配电网充电','储能向园区1充电','储能向园区2充电','储能向园区3充电','储能向园区1放电','储能向园区2放电','储能向园区3放电','储能SOC');
grid on
title('储能电站电功率平衡');

figure(6)
wind=zeros(5,24);
wind(1:3,:)=P_wind;
wind(4,:)=P_chwind;
wind(5,:)=P_windgrid;
w=bar(-wind(:,:)','stack');
color1 = [0.8 0.1 0.1];
color2 = [0.1 0.5 0.5];
color3 = [1 0.6 0.5];
set(w(1), 'FaceColor', color1);
set(w(2), 'FaceColor', color2);
set(w(3), 'FaceColor', color3);
hold on
bar(P_wt);
axis([0.5,24.5,-1500,1500]);
xlabel('时刻/h');
ylabel('有功功率/MW'); % 给左y轴添加轴标签
legend('风场向园区1售电','风场向园区2售电','风场向园区3售电','风场向储能售电','风场向配电网售电','风场出力');
grid on
title('风电场电功率平衡');

figure(7)
grid1=zeros(3,24);
grid2=zeros(3,24);
grid1=P_buy;
grid2=P_sell;
w=bar(grid1(:,:)','stack');
color1 = [0.8 0.1 0.1];
color2 = [0.1 0.5 0.5];
color3 = [1 0.6 0.5];
set(w(1), 'FaceColor', color1);
set(w(2), 'FaceColor', color2);
set(w(3), 'FaceColor', color3);
hold on
ww=bar(-grid2','stack');
axis([0.5,24.5,-3000,3000]);
xlabel('时刻/h');
ylabel('有功功率/MW'); % 给左y轴添加轴标签
legend('配电网向园区1售电','配电网向园区2售电','配电网向园区3售电','配电网从园区1购电','配电网从园区2购电','配电网从园区3购电');
grid on
title('配电网与园区交换功率');

figure(8)
park1=zeros(10,24);
park1(1,:)=P_buy(1,:);
park1(2,:)=P_dis(1,:);
park1(3,:)=P_wind(1,:);
park1(4,:)=sum(P_pv);
park1(5,:)=P_21;
park1(6,:)=P_31;
park1(7,:)=-P_12;
park1(8,:)=-P_13;
park1(9,:)=-P_ch(1,:);
park1(10,:)=-P_sell(1,:);
p1=bar(park1(1:6,:)','stack');
color1 = [0.8 0.1 0.1];
color2 = [0.1 0.5 0.5];
color3 = [1 0.6 0.5];
set(p1(1), 'FaceColor', color1);
set(p1(2), 'FaceColor', color2);
set(p1(3), 'FaceColor', color3);
hold on
bar(park1(7:10,:)','stack');
hold on
plot(Pload_dr(1,:),'g-^','linewidth',2);
axis([0.5,24.5,-2000,2000]);
xlabel('时刻/h');
ylabel('有功功率/MW'); % 给左y轴添加轴标签
legend('园区1从配电网购电','储能电站向园区1放电','风场向园区1售电','光伏出力','园区2向园区1售电','园区3向园区1售电','园区1向园区2售电','园区1向园区3售电','储能电站从园区1充电','园区1向配电网售电','园区1响应后电负荷');
grid on
title('园区1电功率平衡');

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]林泓键.基于主从博弈的电热综合能源系统优化运行[J].青海电力, 2023, 42(2):31-36.

[2]赵帅.基于Stackelberg主从博弈的综合能源系统优化调度研究[J].[2024-01-01].

🌈4 Matlab代码、数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值