主要内容
该模型主要做的是电热综合能源系统的动态定价问题,采用是主从博弈方法,上层领导者问题上,以综合能源系统整体的收益作为目标函数,考虑电价以及热价等相关约束,在下层跟随者模型上,以用户用能满意度最高为目标函数,构建了领导者-跟随者Stackelberg博弈模型,同时还考虑了系统的功率平衡条件以及热能平衡条件等约束,模型的上层求解采用粒子群算法,下层求解采用混合整数规划算法,采用的求解器为CPLEX,也可自行替换成gurobi进行求解。
部分程序
%% 决策变量定义
P_buy=sdpvar(N,T); %%%向配电网购电功率
P_sell=sdpvar(N,T); %%%向配电网售电功率
U_buy=binvar(N,T); %%%向配电网购电变量
U_sell=binvar(N,T); %%%向配电网售电变量
P_cut=sdpvar(N,T); %%%可削减电负荷功率
U_cut=binvar(N,T); %%%可削减电负荷变量
P_dis=sdpvar(N,T); %%%储能向各园区放电功率
P_ch=sdpvar(N,T); %%%储能向各园区充电功率
u_dis=binvar(N,T); %%%储能放电状态
u_ch=binvar(N,T); %%%储能充电状态
E_ess=sdpvar(1,T); %%%储能电量
P_chwind=sdpvar(1,T); %%%储能从风场充电功率
P_chgrid=sdpvar(1,T); %%%储能从配电网充电功率
P_wind=sdpvar(N,T); %%%风场向各园区售电功率
P_windgrid=sdpvar(1,T); %%%风场向配电网售电功率
G_gas=sdpvar(2,T); %%%各园区购气功率
G_gaschp=sdpvar(2,T);
G_gasgb=sdpvar(2,T);
P_12=sdpvar(1,T); %%%园区12间功率交换
P_21=sdpvar(1,T); %%%园区21间功率交换
P_23=sdpvar(1,T); %%%园区23间功率交换
P_32=sdpvar(1,T); %%%园区32间功率交换
P_13=sdpvar(1,T); %%%园区13间功率交换
P_31=sdpvar(1,T); %%%园区31间功率交换
U_jsell=binvar(N,T); %%%园区间售电变量
U_jbuy=binvar(N,T); %%%园区间购电变量
P_CHP=sdpvar(2,T); %%%园区2和3的CHP发电功率
Q_WHB=sdpvar(N,T); %%%余热锅炉功率
Q_GB=sdpvar(2,T); %%%燃气锅炉功率
Q_CHP=sdpvar(2,T); %%%园区2和3的CHP发热功率
C_CHP=sdpvar(1,T); %%%园区3的CHP冷功率
T_in=sdpvar(1,T); %%%室内温度
H_in=sdpvar(2,T); %%%园区2和3的转入热负荷
H_out=sdpvar(2,T); %%%园区2和3的转出热负荷
U_hin=binvar(2,T); %%%园区2和3的转入热负荷状态变量
U_hout=binvar(2,T); %%%园区2和3的转出热负荷状态变量
H_cut=binvar(2,T); %%%园区2和3的削减热负荷
P_in=sdpvar(N,T); %%%园区的转入电负荷
P_out=sdpvar(N,T); %%%园区的转出电负荷
U_pin=binvar(N,T); %%%园区的转入电负荷状态变量
U_pout=binvar(N,T); %%%园区的转出电负荷状态变量
P_air=sdpvar(1,T); %%%园区3耗电功率
C_air=sdpvar(1,T); %%%园区3空调冷出力
Pload_dr=sdpvar(N,T);
Hload_dr=sdpvar(2,T);
%% 约束条件
C=[];
%%%电需求响应约束
C=[C,Pload_dr==Pload+P_in-P_out-P_cut];
C=[C,Pload_dr>=0];
for i=1:1:N
C=[C,sum(P_in(i,:)-P_out(i,:))==0];
C=[C,sum(U_pin(i,:)+U_pout(i,:))<=8];
C=[C,sum(U_cut(i,:))<=6];
end
C=[C,U_pin+U_pout<=1];
C=[C,0<=P_in<=U_pin*300];
C=[C,0<=P_out<=U_pout*300];
C=[C,0<=P_cut<=U_cut*0.2.*Pload];
%%%电功率平衡
C=[C,P_CHP==0.35*10*G_gaschp];
%园区1
C=[C,P_buy(1,:)-P_sell(1,:)-P_12+P_21-P_13+P_31+P_dis(1,:)-P_ch(1,:)+P_wind(1,:)+sum(P_pv)==Pload_dr(1,:)];
%园区2
C=[C,P_buy(2,:)-P_sell(2,:)+P_12-P_21-P_23+P_32+P_dis(2,:)-P_ch(2,:)+P_wind(2,:)+P_CHP(1,:)==Pload_dr(2,:)];
%园区3
C=[C,P_buy(3,:)-P_sell(3,:)+P_13-P_31+P_23-P_32+P_dis(3,:)-P_ch(3,:)+P_wind(3,:)+P_CHP(2,:)-P_air==Pload_dr(3,:)];
%%%热功率平衡
C=[C,U_hin+U_hout<=1];
C=[C,0<=H_in<=U_hin*300];
C=[C,0<=H_out<=U_hout*300];
C=[C,0<=H_cut<=H_cut*0.2.*Hload];
C=[C,Hload_dr==Hload+H_in-H_out-H_cut];
%余热锅炉热量收集模型
C=[C,Q_CHP==2.58*P_CHP];
C=[C,Q_GB==1.06*G_gasgb*8.6];
C=[C,G_gas==G_gasgb+G_gaschp];
%园区2
C=[C,Q_GB(1,:)+Q_CHP(1,:)==Hload_dr(1,:)];
%园区3
C=[C,Q_GB(2,:)+Q_CHP(2,:)==Hload_dr(2,:)];
%%%冷功率平衡
%冷负荷需求响应负荷
%园区3
C=[C,C_air+C_CHP==Cload];
%%%园区间传输功率约束
C=[C,P_12-P_21+P_13-P_31+P_23-P_32==0];
C=[C,0<=P_12<=500];
C=[C,0<=P_13<=500];
C=[C,0<=P_23<=500];
C=[C,0<=P_21<=500];
C=[C,0<=P_31<=500];
C=[C,0<=P_32<=500];
%%%园区与配电网传输功率
C=[C,U_buy+U_sell<=1];
C=[C,0<=P_buy<=800*U_buy];
C=[C,0<=P_sell<=800*U_sell];
%%%设备出力
C=[C,0<=P_CHP<=500];
C=[C,0<=Q_CHP<=1500];
C=[C,0<=Q_GB<=3000];
C=[C,C_CHP==0.72*(Q_CHP(2,:)+P_CHP(2,:))];
C=[C,0<=C_CHP<=1000];
C=[C,C_air==P_air*3];
C=[C,0<=C_air<=6000];
%%% 储能装置(ESS)约束
%充放电状态约束
C = [C, u_dis + u_ch <= 1];%表示充电,放电,不充不放三种状态
%功率约束
C = [C, 0 <= P_dis <= u_dis*1500];
C = [C, 0 <= P_ch<= u_ch*1500];
%容量约束
for t = 1:23
C = [C, E_ess(t+1) == E_ess(t) + 0.9*(sum(P_ch(:,t))+P_chwind(t)+P_chgrid(t)) - 0.9*sum(P_dis(:,t))];
end
结果一览
上述6图为部分运行结果,程序总出图为15个。
“阅读原文”获取程序源码
注:程序标价即是原价,不存在二次消费,保证运行成功,放心下单!