【代码分享】基于分时电价响应和差异化需求侧资源标准建模的优化运行策略

本文介绍了一种利用Matlab、YALMIP和CPLEX/Gurobi平台实现的优化运行策略,针对用户侧柔性负荷的可移动、转移和削减特性,构建了分时电价下的需求响应模型,以购电成本最小为目标进行日前调度。文中详细讨论了各类负荷的特点,并提供了部分代码示例,适用于电力系统优化调度新手入门。
摘要由CSDN通过智能技术生成

程序名称:基于分时电价响应和差异化需求侧资源标准建模的优化运行策略

实现平台:matlab-yalmip-cplex/gurobi

代码简介:综合考虑用户侧柔性负荷的可平移、可转移、可削减的负荷特性,进行差异性需求响应的标准建模,基于分时电价以购电最小为目标进行日前优化调度。

按负荷参与需求响应的方式,将用户负荷分为4类:1)基础负荷:属于不可控负荷,对用户的需求完全响应,系统不能改变其用能方式和用能时间;2)可平移负荷:负荷供电时间可按计划变动,负荷需整体平移,用电时间跨越多个调度时段;3)可削减负荷:可承受一定中断或降功率、减少时间运行的负荷,根据供需情况对其进行部分或全部削减;4)可转移负荷:各时间段用电量可灵活调节,但要满足转移后整个周期负荷总量与转移前保持不变。可平移负荷和可转移负荷都具有负荷供电时间按计划变动的特性,但二者也有区别:可平移负荷需整体平移,其用电时间不能中断且持续时间固定,用电时段所需的功率不可改变,如洗衣机、消毒柜等;可转移负荷比可平移负荷更灵活,用电时段的用电量可灵活调节,用电时段允许中断且持续时间不固定,只需满足转移前后的负荷需求总量不变,电动汽车是典型的可转移负荷,有序充电模式下电动汽车的充电时间、充电功率均可调整,但所需的总充电量不变。

附带参考文献,注释详细。代码非常极品!适合电力系统优化调度需求响应新手入门!!

参考文献:《考虑用户侧柔性负荷的社区综合能源系统日前优化调度_刘蓉晖》《考虑需求响应的社区综合能源系统两阶段优化调度_刘蓉晖》《考虑需求侧协同响应的社区综合能源系统低碳经济调度_刘蓉晖》《考虑需求侧响应的含储能区域综合能源系统运行优化_李子林》《考虑含多种可控负荷的社区冷热电联供系统协同优化调度_刘蓉晖》《计及综合需求响应的社区综合能源系统优化调度_刘蓉晖》等,一个模型发十几篇论文!!

代码获取方式:【代码分享】基于分时电价响应和差异化需求侧资源标准建模的优化运行策略

部分代码和运行结果展示

%%%%%可转移负荷%%%%%
%可转移负荷1
P_tr_max=20;%最大转移量  
T_tr_min=3;%转移最小连续时间
tr1=5;%转移起时间
tr2=12;%转移止时间
P_tr=sdpvar(1,24);  %转移负荷量
U_tr=binvar(1,24); %转移标识

%可转移负荷2
P_tr_max_2=15;%最大转移量  
T_tr_min_2=2;%转移最小连续时间
tr1_2=10;%转移起时间
tr2_2=22;%转移止时间
P_tr_2=sdpvar(1,24);  %转移负荷量
U_tr_2=binvar(1,24); %转移标识

%可转移负荷3
P_tr_max_3=25;%最大转移量  
T_tr_min_3=3;%转移最小连续时间
tr1_3=14;%转移起时间
tr2_3=21;%转移止时间
P_tr_3=sdpvar(1,24);  %转移负荷量
U_tr_3=binvar(1,24); %转移标识

%可转移负荷4
P_tr_max_4=15;%最大转移量  
T_tr_min_4=3;%转移最小连续时间
tr1_4=4;%转移起时间
tr2_4=17;%转移止时间
P_tr_4=sdpvar(1,24);  %转移负荷量
U_tr_4=binvar(1,24); %转移标识

%%%%%可削减负荷%%%%%
%可削减负荷1
P_cut_max=15;%最大削减量
T_cut_max=6;%最长连续削减时间
T_cut_min=2;%最短连续削减时间
N_cut_max=7;%最大削减次数
cut1=3;%削减起时间
cut2=15;%削减止时间
P_cut=sdpvar(1,24);  
U_cut=binvar(1,24);

%可削减负荷2
P_cut_max_2=20;%最大削减量
T_cut_max_2=3;%最长连续削减时间
T_cut_min_2=1;%最短连续削减时间
N_cut_max_2=6;%最大削减次数
cut1_2=9;%削减起时间
cut2_2=21;%削减止时间
P_cut_2=sdpvar(1,24);  
U_cut_2=binvar(1,24);

%可削减负荷3
P_cut_max_3=25;%最大削减量
T_cut_max_3=4;%最长连续削减时间
T_cut_min_3=2;%最短连续削减时间
N_cut_max_3=4;%最大削减次数
cut1_3=8;%削减起时间
cut2_3=20;%削减止时间
P_cut_3=sdpvar(1,24);  
U_cut_3=binvar(1,24);

%%%%%可平移负荷%%%%%
%可平移负荷1
Pshift1=[0 0 0 0 0 0 0 0 0 0 0 25 25 0 0 0 0 0 0 0 0 0 0 0 ];%平移前
Temp_Pshift1=binvar(1,24,'full'); %  平移标志
PPshift1=sdpvar(1,24,'full');%平移电量

%可平移负荷2
Pshift1_2=[0 0 0 0 0 0 0 0 0 0 0 15 15 15 15 0 0 0 0 0 0 0 0 0 ];%平移前
Temp_Pshift1_2=binvar(1,24,'full'); %  平移标志
PPshift1_2=sdpvar(1,24,'full');%平移电量

%可平移负荷3
Pshift1_3=[0 0 0 0 0 0 0 0 0 20 20 20 20 0 0 0 0 0 0 0 0 0 0 0 ];%平移前
Temp_Pshift1_3=binvar(1,24,'full'); %  平移标志
PPshift1_3=sdpvar(1,24,'full');%平移电量

%分时电价从夜里零点开始
C1(1,1:5)=0.42;C1(1,23:24)=0.42;%谷
C1(1,9:11)=1.2;C1(1,19:22)=1.2;%峰
C1(1,12:18)=0.85;C1(1,6:8)=0.85;%平


PL01=PL0+Pshift1_2+Pshift1_3+Pshift1
PL_1=PL01+P_tr+P_tr_2+P_tr_3+P_tr_4
PL_2=PL01+P_tr+P_tr_2+P_tr_3+P_tr_4-P_cut-P_cut_2-P_cut_3
PL_3=PL0+P_tr+P_tr_2+P_tr_3+P_tr_4-P_cut-P_cut_2-P_cut_3+PPshift1+PPshift1_2+PPshift1_3

Fj=sum(PL_3.*C1);
%Fj=sum(abs(PL(2:end)-PL(1:end-1)))

ops = sdpsettings('solver','gurobi');
result = optimize(C,Fj,ops);

PL=value(PL)
P_tr=value(P_tr)
P_tr_2=value(P_tr_2)
P_tr_3=value(P_tr_3)
P_tr_4=value(P_tr_4)
P_cut=value(P_cut)
P_cut_2=value(P_cut_2)
P_cut_3=value(P_cut_3)
PPshift1=value(PPshift1)
PPshift1_2=value(PPshift1_2)
PPshift1_3=value(PPshift1_3)

PL_1=value(PL_1)
PL_2=value(PL_2)
PL_3=value(PL_3)

figure
plot(PL01,'LineWidth',2)
hold on
plot(PL_1,'LineWidth',1)
hold on
plot(PL_2,'LineWidth',1)
hold on
plot(PL_3,'LineWidth',1)
m=legend('需求响应前','只考虑可转移需求响应后','只考虑可转移和可中断需求响应','考虑可转移可终端可平移需求响应')

figure
bar( -[P_cut;P_cut_2;P_cut_3]','stacked')
m=legend('可削减负荷1','可削减负荷2','可削减负荷3')

figure
bar( [P_tr;P_tr_2;P_tr_3;P_tr_4]','stacked')
m=legend('可转移负荷1','可转移负荷2','可转移负荷3','可转移负荷4')

figure
    bar( [PPshift1;PPshift1_2;PPshift1_3]','stacked')
hold on
    bar( [-Pshift1;-Pshift1_2;-Pshift1_3]','stacked')
m=legend('可平移负荷1','可平移负荷2','可平移负荷3','原可平移负荷1','原可平移负荷2','原可平移负荷3')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值