配电网可靠性评估(二)—序贯蒙特卡洛模拟法的matlab实现

        之前的文章简单介绍了配电网可靠性评估解析法和模拟法的基本原理,分别以最小路法和非序贯蒙特卡洛模拟法为例进行介绍:配电网可靠性评估方法的matlab实现(一)

一、序贯和非序贯蒙特卡罗模拟法的区别

        发出来之后很多朋友私信我有没有序贯蒙特卡洛模拟法的程序,以及非序贯蒙特卡洛模拟法和序贯蒙特卡洛模拟法的区别,闲下来就写了这篇博客,跟大家一起交流学习。其实非序贯和序贯蒙特卡洛模拟法原理和步骤比较相似,主要的区别有下面这些:

        (1)顾名思义,序贯蒙特卡洛模拟法是基于时序进行模拟的,而非序贯模拟法是基于事件进行模拟的,不考虑时序关系。近年来配电网的研究基本都离不开分布式电源、储能这些时序特性非常明显的设备,因此现在基本上文章都是采用序贯蒙特卡洛模拟法。

        (2)在故障场景抽样时,非序贯蒙特卡洛模拟法的每次模拟对应的时间都是一整年,序贯蒙特卡洛模拟法每次模拟的时间不等,是基于设备的TTR和TTF变化的。另外,统计负荷可靠性指标时,两种算法的计算公式也存在明显区别。

        具体来说,非序贯每次仿真时,要对每个设备产生一个随机数,如果这个随机数小于设备的故障率,就假定本次模拟中该设备发生故障,也就是在一年内设备会发生故障,这是重点,非序贯蒙特卡罗模拟法每次模拟对应的是时间是一年!!!最后统计负荷可靠性指标时,用累计的停电次数除以总仿真次数就可以得到年平均停电次数(因为一次仿真其实就对应一年),停电时间、失负荷量之类的指标也是同理。

        而采用序贯抽样时,每次仿真的时间是不确定的,取决于设备的TTF。对故障场景进行抽样时,故障设备的确定是基于自己设定的规则。一般的文章中都假设抽样时TTF最小的设备为故障元件,这是只考虑了一阶故障。也可以认为TTF最小的前n个设备为故障元件,这样考虑的就是n阶故障。最后统计负荷可靠性指标时,负荷的故障率=仿真中总停电次数/负荷的总正常工作时间,负荷的平均故障持续时间=仿真中总停电时间/仿真中总停电次数。

二、序贯蒙特卡洛模拟法的基本步骤

        用序贯蒙特卡洛模拟法进行配电网可靠性评估的步骤如下:

        (1)初始化负荷可靠性指标和仿真参数;

        (2)计算每个设备的正常工作时间TTF,利用一定规则确定故障的设备;

        (3)确定故障设备的修复时间或者上级开关设备的切换时间;

        (4)确定因设备故障而停运的负荷,以及因开关设备切换而受影响的负荷,累加负荷的正常工作时间,停运次数、停运时间等。

        (5)仿真时间加上TTF和故障持续时间,判断是否达到仿真阈值,若是则进行下一步,否则返回步骤(2);

        (6)统计负荷可靠性指标和系统可靠性指标。

matlab代码:

clc
clear
close all
%% 读取数据
[line_num,line,load_num,load] = IEEE_RBTS_BUS6_F4;
%生成图
g=digraph(line(:,1),line(:,2),line(:,3));
%% 利用节点网络分析法确定影响负荷的元件
node_analyse;
%% 序贯蒙特卡洛法
load_users=load(:,5);
load_fault=zeros(1,load_num);%故障次数
load_fault_time=zeros(1,load_num);%故障时间
load_power=zeros(1,load_num);%失负荷量
Lambda=(line(:,3).*line(:,4))';
Gamma1=line(:,5);
Gamma2=line(:,8);
power=load(:,3);
N=500;%仿真的年数
time=0;%初始化仿真时间
load_normal=zeros(1,load_num);%正常工作时间
while time<N*8760
    进行故障抽样
    %累加仿真时间
    time=time+min_TTF+max([TTR1,TTR2]);
end
%负荷停电次数
Lambda_load=load_fault./load_normal;
%负荷停电时间
Gamma_load=load_fault_time./load_fault;
U_load=Lambda_load.*Gamma_load;
disp('**************系统可靠性指标**************')
SAIFI=Lambda_load*load_users/(sum(load_users));
disp(['SAIFI=',num2str(SAIFI),'次/(年·户)'])
SAIDI=U_load*load_users/(sum(load_users));
CAIDI=SAIDI/SAIFI;
disp(['SAIDI=',num2str(SAIDI),'小时/(年·户)'])
EENS=load_power*load_users/(sum(load_users))/N;
disp(['EENS=',num2str(EENS),'MW/(年·户)'])
ASAI=1-U_load*load_users/(sum(load_users*8760));
disp(['ASAI=',num2str(ASAI*100),'%'])
figure(1)
bar(Lambda_load,'stack')
title('负荷可靠性评估结果')
xlabel('负荷节点');ylabel('年平均停电次数/次');
figure(2)
bar(U_load,'stack')
title('负荷可靠性评估结果')
xlabel('负荷节点');ylabel('年平均停电时间/h');
Z=[SAIFI SAIDI CAIDI ASAI];
figure(3)
bar(Z,0.2)
title('系统可靠性评估结果')
set(gca,'XTickLabel',{'SAIFI','SAIDI','CAIDI','ASAI'});
Lambda_load0=[1.6725 	1.6725 	1.6725 	1.6725 	1.6725 	1.7115 	1.7213 	2.5370 	2.5890 	2.5370 	2.5370 	2.5370 	1.6725 	1.7115 	1.6725 	2.5110 	2.5598 	2.5110 	2.5110 	2.5110 	2.2250 	2.2250 	2.2250 ];
U_load0=[8.4015 	8.4015 	8.4015 	8.4015 	8.4015 	8.5965 	8.6453 	12.7240 	12.9840 	12.7240 	12.7240 	12.7240 	11.2875 	11.4825 	11.2875 	15.4800 	15.7238 	15.4800 	15.4800 	15.4800 	14.0500 	14.0500 	14.0500 ];
SAIFI0=1.97781318681319;
SAIDI0=11.074659340659341;
CAIDI0=5.599446608253094;
ASAI0=0.998735769481660;
figure(4)
bar(Lambda_load-Lambda_load0,'stack')
title('模拟法误差分析-负荷年平均停电次数')
xlabel('负荷节点');ylabel('年平均停电次数的误差');
figure(5)
bar(U_load-U_load0,'stack')
title('模拟法误差分析-负荷年平均停电时间')
xlabel('负荷节点');ylabel('年平均停电时间的误差');
figure(6)
Z0=[SAIFI0 SAIDI0 CAIDI0 ASAI0];
bar(Z-Z0,0.4)
title('系统可靠性评估误差')
set(gca,'XTickLabel',{'SAIFI误差','SAIDI误差','CAIDI误差','ASAI误差'});

三、运行结果

 

 

 四、完整代码 

         完整代码可以戳这里获取:

基于序贯蒙特卡洛模拟法的配电网可靠性评估的matlab实现

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

配电网和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值