请选择 进入手机版 | 继续访问电脑版

Hello Mat

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1125|回复: 3

基于对偶抽样蒙特卡洛法求配电系统可靠性

[复制链接]

754

主题

893

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
29862
发表于 2018-5-12 09:46:26 | 显示全部楼层 |阅读模式
含分布式电源的配电网可靠性评估:

该系统有 23 个负荷点、1 个隔离开关、23 台配电变压器、4 台断路器、23个熔断器(装设在负荷线路首端)。隔离开关操作时间为20 分钟。
  1. % 含分布式电源的配电网可靠性评估_吴颖超,P29-
  2. % 基于对偶抽样蒙特卡洛发求配电系统可靠性
  3. clc,clear,close all
  4. warning off;
  5. tic;
  6. nl=30;         % 线路数
  7. nt=23;         % 变压器及负荷点数
  8. nk=5;          % 开关数
  9. n=nl+nt+nk;    % 总的元件数
  10. % 线路长度
  11. xlcd=[2.8,2.5,1.6,0.9,1.6,2.5,0.6,1.6,0.75,0.9,3.2,2.8,0.6,3.5,1.6,2.8,3.2,2.5,3.2,1.6,0.8,2.8,2.5,3.2,2.8,2.5,0.75,1.6,3.2,2.8];
  12. % 各个负荷点的平均负荷
  13. lppjfh=[0.1659,0.1808,0.2501,0.2633,0.2070,0.1659,0.3057,0.1554,0.2831,0.1585,0.1554,0.1585,0.2501,0.1554,0.1929,0.1585,0.2501,0.2633,0.1554,0.1929,0.2831,0.1585,0.3057];
  14. % 各个负荷点的用户数
  15. lpyhs=[147,126,1,1,132,147,1,79,1,76,79,76,1,79,1,76,1,1,79,1,1,76,1];
  16. xlgzl=0.05;                 % 线路故障率
  17. byqgzl=0.015;               % 变压器故障率
  18. kggzl=0.006;                % 开关故障率
  19. xlxfsj=5;                   % 线路修复时间
  20. byqxfsj=30;                 % 变压器修复时间
  21. kgxfsj=4;                   % 开关修复时间
  22. lpgzcs=zeros(1,nt);         % 初始化各个负荷点的故障次数
  23. lpgzsj=zeros(1,nt);         % 初始化各个负荷点的故障时间
  24. lpgzl=zeros(1,nt);          % 初始化各个负荷点的故障率
  25. lpgzcxsj=zeros(1,nt);       % 初始化各个负荷点的平均故障持续时间
  26. lpngzsj=zeros(1,nt);        % 初始化各个负荷点的年平均故障时间
  27. % 初始化各个元件的故障率和修复时间
  28. for i=1:nl
  29.     yjgzl(i)=xlgzl*xlcd(i);    % 故障率
  30.     yjxfsj(i)=xlxfsj;          % 修复时间
  31. end
  32. for i=nl+1:nl+nt
  33.     yjgzl(i)=byqgzl;
  34.     yjxfsj(i)=byqxfsj;
  35. end
  36. for i=nl+nt+1:n
  37.     yjgzl(i)=kggzl;
  38.     yjxfsj(i)=kgxfsj;
  39. end
  40. % 各个负荷点供电路径的元件组成
  41. lp1=[1,31,54];
  42. lp2=[1,2,32,54];
  43. lp3=[1,2,3,33,54];
  44. lp4=[1,2,3,4,34,54];
  45. lp5=[1,2,3,4,5,35,54];
  46. lp6=[1,2,3,4,5,6,7,36,54];
  47. lp7=[1,2,3,4,5,6,8,9,37,54];
  48. lp8=[1,2,3,4,5,6,8,10,11,38,54,56];
  49. lp9=[1,2,3,4,5,6,8,10,11,12,13,39,54,56];
  50. lp10=[1,2,3,4,5,6,8,10,11,12,14,40,54,56];
  51. lp11=[1,2,3,4,5,6,8,10,11,12,14,15,16,41,54,56,57];
  52. lp12=[1,2,3,4,5,6,8,10,11,12,14,15,16,17,42,54,56,57];
  53. lp13=[1,2,3,4,5,6,8,10,11,12,14,15,16,17,18,43,54,56,57];
  54. lp14=[1,2,3,4,5,6,8,10,19,44,54,55];
  55. lp15=[1,2,3,4,5,6,8,10,19,20,21,45,54,55];
  56. lp16=[1,2,3,4,5,6,8,10,19,20,22,46,54,55];
  57. lp17=[1,2,3,4,5,6,8,10,19,20,22,23,47,54,55];
  58. lp18=[1,2,3,4,5,6,8,10,19,20,22,23,24,48,54,55];
  59. lp19=[1,2,3,4,5,6,8,10,11,12,14,15,25,49,54,56,58];
  60. lp20=[1,2,3,4,5,6,8,10,11,12,14,15,25,26,27,50,54,56,58];
  61. lp21=[1,2,3,4,5,6,8,10,11,12,14,15,25,26,28,51,54,56,58];
  62. lp22=[1,2,3,4,5,6,8,10,11,12,14,15,25,26,28,29,52,54,56,58];
  63. lp23=[1,2,3,4,5,6,8,10,11,12,14,15,25,26,28,29,30,53,54,56,58];
  64. %% loop
  65. SUMTTF=0;    % 初始化仿真时间
  66. while SUMTTF<=20000
  67.     E1=rand(1,n);        % 对每个元件产生一个随机数
  68.     % 计算每个随机数的对偶随机数
  69.     for i=1:n
  70.         E2(i)=1-E1(i);
  71.     end
  72.     % 利用转换公式计算各个元件的TTF
  73.     for i=1:n
  74.         TTF1(i)=-1/yjgzl(i)*log(E1(i));
  75.     end
  76.     for i=1:n
  77.         TTF2(i)=-1/yjgzl(i)*log(E2(i));
  78.     end
  79.     % 确定故障元件
  80.     m1=TTF1(1);
  81.     t1=1;
  82.     for i=1:n
  83.         if TTF1(i)<m1
  84.             m1=TTF1(i);
  85.             t1=i;
  86.         end
  87.     end
  88.     % 利用转换公式计算故障元件的TTR
  89.     TTR1=-yjxfsj(t1)*log(rand(1));
  90.     % 确定故障元件
  91.     m2=TTF2(1);
  92.     t2=1;
  93.     for i=1:n
  94.         if TTF2(i)<m2
  95.             m2=TTF2(i);
  96.             t2=i;
  97.         end
  98.     end
  99.     % 利用转换公式计算故障元件的TTR
  100.     TTR2=-yjxfsj(t2)*log(rand(1));
  101.     % 计算仿真时间
  102.     SUMTTF=SUMTTF+m1+m2;      
  103.    
  104.     % 计算各个负荷点的故障次数与故障时间
  105.     % 计算负荷点1的故障次数与故障时间
  106.     for i=1:3
  107.         if lp1(i)==t1
  108.             lpgzcs(1)=lpgzcs(1)+1;
  109.             lpgzsj(1)=lpgzsj(1)+TTR1;
  110.         end
  111.     end
  112.     for i=1:3
  113.         if lp1(i)==t2
  114.             lpgzcs(1)=lpgzcs(1)+1;
  115.             lpgzsj(1)=lpgzsj(1)+TTR2;
  116.         end
  117.     end
  118.    
  119.     % 计算负荷点2的故障次数与故障时间
  120.     for i=1:4
  121.         if lp2(i)==t1
  122.             lpgzcs(2)=lpgzcs(2)+1;
  123.             lpgzsj(2)=lpgzsj(2)+TTR1;
  124.         end
  125.     end
  126.     for i=1:4
  127.         if lp2(i)==t2
  128.             lpgzcs(2)=lpgzcs(2)+1;
  129.             lpgzsj(2)=lpgzsj(2)+TTR2;
  130.         end
  131.     end
  132.    
  133.     % 计算负荷点3的故障次数与故障时间
  134.     for i=1:5
  135.         if lp3(i)==t1
  136.             lpgzcs(3)=lpgzcs(3)+1;
  137.             lpgzsj(3)=lpgzsj(3)+TTR1;
  138.         end
  139.     end
  140.     for i=1:5
  141.         if lp3(i)==t2
  142.             lpgzcs(3)=lpgzcs(3)+1;
  143.             lpgzsj(3)=lpgzsj(3)+TTR2;
  144.         end
  145.     end
  146.    
  147.     % 计算负荷点4的故障次数与故障时间
  148.     for i=1:6
  149.         if lp4(i)==t1
  150.             lpgzcs(4)=lpgzcs(4)+1;
  151.             lpgzsj(4)=lpgzsj(4)+TTR1;
  152.         end
  153.     end
  154.     for i=1:6
  155.         if lp4(i)==t2
  156.             lpgzcs(4)=lpgzcs(4)+1;
  157.             lpgzsj(4)=lpgzsj(4)+TTR2;
  158.         end
  159.     end
  160.    
  161.     % 计算负荷点5的故障次数与故障时间
  162.     for i=1:7
  163.         if lp5(i)==t1
  164.             lpgzcs(5)=lpgzcs(5)+1;
  165.             lpgzsj(5)=lpgzsj(5)+TTR1;
  166.         end
  167.     end
  168.     for i=1:7
  169.         if lp5(i)==t2
  170.             lpgzcs(5)=lpgzcs(5)+1;
  171.             lpgzsj(5)=lpgzsj(5)+TTR2;
  172.         end
  173.     end
  174.    
  175.     % 计算负荷点6的故障次数与故障时间
  176.     for i=1:9
  177.         if lp6(i)==t1
  178.             lpgzcs(6)=lpgzcs(6)+1;
  179.             lpgzsj(6)=lpgzsj(6)+TTR1;
  180.         end
  181.     end
  182.     for i=1:9
  183.         if lp6(i)==t2
  184.             lpgzcs(6)=lpgzcs(6)+1;
  185.             lpgzsj(6)=lpgzsj(6)+TTR2;
  186.         end
  187.     end
  188.    
  189.     % 计算负荷点7的故障次数与故障时间
  190.     for i=1:10
  191.         if lp7(i)==t1
  192.             lpgzcs(7)=lpgzcs(7)+1;
  193.             lpgzsj(7)=lpgzsj(7)+TTR1;
  194.         end
  195.     end
  196.     for i=1:10
  197.         if lp7(i)==t2
  198.             lpgzcs(7)=lpgzcs(7)+1;
  199.             lpgzsj(7)=lpgzsj(7)+TTR2;
  200.         end
  201.     end
  202.    
  203.     % 计算负荷点8的故障次数与故障时间
  204.     for i=1:12
  205.         if lp8(i)==t1
  206.             lpgzcs(8)=lpgzcs(8)+1;
  207.             lpgzsj(8)=lpgzsj(8)+TTR1;
  208.         end
  209.     end
  210.     for i=1:12
  211.         if lp8(i)==t2
  212.             lpgzcs(8)=lpgzcs(8)+1;
  213.             lpgzsj(8)=lpgzsj(8)+TTR2;
  214.         end
  215.     end
  216.    
  217.     % 计算负荷点9的故障次数与故障时间
  218.     for i=1:14
  219.         if lp9(i)==t1
  220.             lpgzcs(9)=lpgzcs(9)+1;
  221.             lpgzsj(9)=lpgzsj(9)+TTR1;
  222.         end
  223.     end
  224.     for i=1:14
  225.         if lp9(i)==t2
  226.             lpgzcs(9)=lpgzcs(9)+1;
  227.             lpgzsj(9)=lpgzsj(9)+TTR2;
  228.         end
  229.     end
  230.    
  231.     % 计算负荷点10的故障次数与故障时间
  232.     for i=1:14
  233.         if lp10(i)==t1
  234.             lpgzcs(10)=lpgzcs(10)+1;
  235.             lpgzsj(10)=lpgzsj(10)+TTR1;
  236.         end
  237.     end
  238.     for i=1:14
  239.         if lp10(i)==t2
  240.             lpgzcs(10)=lpgzcs(10)+1;
  241.             lpgzsj(10)=lpgzsj(10)+TTR2;
  242.         end
  243.     end
  244.    
  245.     % 计算负荷点11的故障次数与故障时间
  246.     for i=1:17
  247.         if lp11(i)==t1
  248.             lpgzcs(11)=lpgzcs(11)+1;
  249.             lpgzsj(11)=lpgzsj(11)+TTR1;
  250.         end
  251.     end
  252.     for i=1:17
  253.         if lp11(i)==t2
  254.             lpgzcs(11)=lpgzcs(11)+1;
  255.             lpgzsj(11)=lpgzsj(11)+TTR2;
  256.         end
  257.     end
  258.    
  259.     % 计算负荷点12的故障次数与故障时间
  260.     for i=1:18
  261.         if lp12(i)==t1
  262.             lpgzcs(12)=lpgzcs(12)+1;
  263.             lpgzsj(12)=lpgzsj(12)+TTR1;
  264.         end
  265.     end
  266.     for i=1:18
  267.         if lp12(i)==t2
  268.             lpgzcs(12)=lpgzcs(12)+1;
  269.             lpgzsj(12)=lpgzsj(12)+TTR2;
  270.         end
  271.     end
  272.    
  273.     % 计算负荷点13的故障次数与故障时间
  274.     for i=1:19
  275.         if lp13(i)==t1
  276.             lpgzcs(13)=lpgzcs(13)+1;
  277.             lpgzsj(13)=lpgzsj(13)+TTR1;
  278.         end
  279.     end
  280.     for i=1:19
  281.         if lp13(i)==t2
  282.             lpgzcs(13)=lpgzcs(13)+1;
  283.             lpgzsj(13)=lpgzsj(13)+TTR2;
  284.         end
  285.     end
  286.    
  287.     % 计算负荷点14的故障次数与故障时间
  288.     for i=1:12
  289.         if lp14(i)==t1
  290.             lpgzcs(14)=lpgzcs(14)+1;
  291.             lpgzsj(14)=lpgzsj(14)+TTR1;
  292.         end
  293.     end
  294.     for i=1:12
  295.         if lp14(i)==t2
  296.             lpgzcs(14)=lpgzcs(14)+1;
  297.             lpgzsj(14)=lpgzsj(14)+TTR2;
  298.         end
  299.     end
  300.    
  301.     % 计算负荷点15的故障次数与故障时间
  302.     for i=1:14
  303.         if lp15(i)==t1
  304.             lpgzcs(15)=lpgzcs(15)+1;
  305.             lpgzsj(15)=lpgzsj(15)+TTR1;
  306.         end
  307.     end
  308.     for i=1:14
  309.         if lp15(i)==t2
  310.             lpgzcs(15)=lpgzcs(15)+1;
  311.             lpgzsj(15)=lpgzsj(15)+TTR2;
  312.         end
  313.     end
  314.    
  315.     % 计算负荷点16的故障次数与故障时间
  316.     for i=1:14
  317.         if lp16(i)==t1
  318.             lpgzcs(16)=lpgzcs(16)+1;
  319.             lpgzsj(16)=lpgzsj(16)+TTR1;
  320.         end
  321.     end
  322.     for i=1:14
  323.         if lp16(i)==t2
  324.             lpgzcs(16)=lpgzcs(16)+1;
  325.             lpgzsj(16)=lpgzsj(16)+TTR2;
  326.         end
  327.     end
  328.    
  329.     % 计算负荷点17的故障次数与故障时间
  330.     for i=1:15
  331.         if lp17(i)==t1
  332.             lpgzcs(17)=lpgzcs(17)+1;
  333.             lpgzsj(17)=lpgzsj(17)+TTR1;
  334.         end
  335.     end
  336.     for i=1:15
  337.         if lp17(i)==t2
  338.             lpgzcs(17)=lpgzcs(17)+1;
  339.             lpgzsj(17)=lpgzsj(17)+TTR2;
  340.         end
  341.     end
  342.    
  343.     % 计算负荷点18的故障次数与故障时间
  344.     for i=1:16
  345.         if lp18(i)==t1
  346.             lpgzcs(18)=lpgzcs(18)+1;
  347.             lpgzsj(18)=lpgzsj(18)+TTR1;
  348.         end
  349.     end
  350.     for i=1:16
  351.         if lp18(i)==t2
  352.             lpgzcs(18)=lpgzcs(18)+1;
  353.             lpgzsj(18)=lpgzsj(18)+TTR2;
  354.         end
  355.     end
  356.    
  357.     % 计算负荷点19的故障次数与故障时间
  358.     for i=1:17
  359.         if lp19(i)==t1
  360.             lpgzcs(19)=lpgzcs(19)+1;
  361.             lpgzsj(19)=lpgzsj(19)+TTR1;
  362.         end
  363.     end
  364.     for i=1:17
  365.         if lp19(i)==t2
  366.             lpgzcs(19)=lpgzcs(19)+1;
  367.             lpgzsj(19)=lpgzsj(19)+TTR2;
  368.         end
  369.     end
  370.    
  371.     % 计算负荷点20的故障次数与故障时间
  372.     for i=1:19
  373.         if lp20(i)==t1
  374.             lpgzcs(20)=lpgzcs(20)+1;
  375.             lpgzsj(20)=lpgzsj(20)+TTR1;
  376.         end
  377.     end
  378.     for i=1:19
  379.         if lp20(i)==t2
  380.             lpgzcs(20)=lpgzcs(20)+1;
  381.             lpgzsj(20)=lpgzsj(20)+TTR2;
  382.         end
  383.     end
  384.    
  385.     % 计算负荷点21的故障次数与故障时间
  386.     for i=1:19
  387.         if lp21(i)==t1
  388.             lpgzcs(21)=lpgzcs(21)+1;
  389.             lpgzsj(21)=lpgzsj(21)+TTR1;
  390.         end
  391.     end
  392.     for i=1:19
  393.         if lp21(i)==t2
  394.             lpgzcs(21)=lpgzcs(21)+1;
  395.             lpgzsj(21)=lpgzsj(21)+TTR2;
  396.         end
  397.     end
  398.    
  399.     % 计算负荷点22的故障次数与故障时间
  400.     for i=1:20
  401.         if lp22(i)==t1
  402.             lpgzcs(22)=lpgzcs(22)+1;
  403.             lpgzsj(22)=lpgzsj(22)+TTR1;
  404.         end
  405.     end
  406.     for i=1:20
  407.         if lp22(i)==t2
  408.             lpgzcs(22)=lpgzcs(22)+1;
  409.             lpgzsj(22)=lpgzsj(22)+TTR2;
  410.         end
  411.     end
  412.    
  413.     % 计算负荷点23的故障次数与故障时间
  414.     for i=1:21
  415.         if lp23(i)==t1
  416.             lpgzcs(23)=lpgzcs(23)+1;
  417.             lpgzsj(23)=lpgzsj(23)+TTR1;
  418.         end
  419.     end
  420.     for i=1:21
  421.         if lp23(i)==t2
  422.             lpgzcs(23)=lpgzcs(23)+1;
  423.             lpgzsj(23)=lpgzsj(23)+TTR2;
  424.         end
  425.     end
  426.    
  427. end
  428. toc
  429. %% 结果分析
  430. for i=1:nt
  431.     lpgzl(i)=lpgzcs(i)/SUMTTF;                  % 计算各个负荷点的故障率 λ
  432.     lpgzcxsj(i)=lpgzsj(i)/lpgzcs(i);            % 计算各个负荷点的平均故障持续时间 r
  433.     lpngzsj(i)=lpgzl(i)*lpgzcxsj(i);            % 计算各个负荷点的年平均故障时间 U
  434. end
  435. a=0;                                            % 计算系统可靠性指标
  436. b=0;
  437. for i=1:nt
  438.     A(i)=lpgzl(i)*lpyhs(i);                     % 各个负荷点的用户数 lpyhs
  439.     a=a+A(i);
  440.     b=b+lpyhs(i);
  441. end
  442. SAIFI=a/b;                                      % 计算系统平均停电频率指标SAIFI
  443. disp(['计算系统平均停电频率指标SAIFI: ', num2str(SAIFI)])

  444. c=0;
  445. for i=1:nt
  446.     C(i)=lpngzsj(i)*lpyhs(i);
  447.     c=c+C(i);
  448. end
  449. SAIDI=c/b;                                        % 计算系统平均停电持续时间指标SAIDI  
  450. CAIDI=c/a;                                        % 计算用户平均停电持续时间指标CAIDI
  451. disp(['计算系统平均停电持续时间指标SAIDI: ', num2str(SAIDI)])
  452. disp(['计算用户平均停电持续时间指标CAIDI: ', num2str(CAIDI)])

  453. d=0;
  454. for i=1:nt
  455.     D(i)=lpyhs(i)*8760;
  456.     d=d+D(i);
  457. end
  458. ASAI=(d-c)/d;                                     % 计算平均供电可用率指标ASAI
  459. disp(['计算平均供电可用率指标ASAI: ', num2str(ASAI)])

  460. ENS=0;
  461. for i=1:nt
  462.     F(i)=lpngzsj(i)*lppjfh(i);
  463.     ENS=ENS+F(i);
  464. end                                               % 计算电量不足指标ENS
  465. ENS;
  466. disp(['计算电量不足指标ENS: ', num2str(ENS)])

  467. % f=0;
  468. % for i=1:nt
  469. %     F(i)=lpyhs(i)./(lpgzl(i)+eps);
  470. %     f=f+F(i);
  471. % end
  472. % CAIFI=f/a;                                        % 计算用户平均停电频率指标CAIFI
  473. % disp(['计算用户平均停电频率指标CAIFI: ', num2str(CAIFI)])
  474. fprintf('\n')
  475. %% 配网系统指标
  476. [SAIFI, SAIDI, CAIDI, ASAI, CAIFI, ENS] = Index_PeiWang(lpyhs, lpgzl, lpngzsj, lppjfh);
复制代码
计算系统平均停电频率指标SAIFI: 0.88498
计算系统平均停电持续时间指标SAIDI: 4.7817
计算用户平均停电持续时间指标CAIDI: 5.4032
计算平均供电可用率指标ASAI: 0.99945
计算电量不足指标ENS: 28.5165
计算用户平均停电频率指标CAIFI: 6.3135

代码分享:
游客,如果您要查看本帖隐藏内容请回复


参考文献:
含分布式电源的配电网可靠性评估_吴颖超,P29-





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

0

主题

1

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2019-5-7 08:50:21 | 显示全部楼层
你好 有这篇论文的完整程序吗
回复 支持 反对

使用道具 举报

754

主题

893

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
29862
 楼主| 发表于 2019-5-10 22:57:32 | 显示全部楼层
唯美5之恋 发表于 2019-5-7 08:50
你好 有这篇论文的完整程序吗

这个程序算完整了
算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复 支持 反对

使用道具 举报

0

主题

8

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2019-5-14 20:55:42 | 显示全部楼层
感谢LZ分享,谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


Python|Opencv|MATLAB|Halcom.cn  

GMT+8, 2019-10-17 13:06 , Processed in 0.116984 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表