【机会约束】【N-1故障】使用随机方法进行最佳PMU位置确定(Matlab代码实现)

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

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

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

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

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

文献来源:

摘要:相量测量单元(PMUs)收集高精度的电压和电流数据,以监测电力系统的性能。然而,在电力系统的每个母线上实施PMUs是昂贵的。最佳PMU位置确定(OPP)变得必要,以最小化实施的PMUs数量,同时保持网络的完全可观测性。本文考虑在优化PMU位置时节点连接的弹性。首先,开发了一个图形化和数学模型。接下来,将机会约束规划技术应用于创建一个考虑N-1故障情况的随机模型。最后,通过应用随机规划技术,使用IEEE 1996可靠性测试系统对模型进行了测试。

电网是一个互联的广域网,将电力从生产者输送到消费者。过去十年由于相量测量单元(PMUs)的实施,电网的智能监控已经成为可能。

PMUs是时间同步设备,不断地测量电信号的同步相量(幅度和相位角)。这些同步相量用于计算安装了PMU的变电站的电压和电流。当在电网上安装多个PMUs时,可以收集关于整个网络状态的信息。

不幸的是,一个PMU的总成本(包括采购、安装和投运)在40,000至180,000美元之间。这一成本阻止了工程师在系统的每个母线上安装PMU。成本效益设计方法变得必要。

本文旨在优化PMUs在电力传输网络中的布置,以最小化实施的PMUs数量,降低成本,同时保持对网络的完全可观测性。

📚2 运行结果

 部分代码:

tb = 73;    %total number of buses
tzib = 40;  %total number of zero-injection buses
tbc = 107;  %total number of bus connections (120, considering the 12 doubles)
tzibc = 99; %total number of zero-injection bus connections

%load probability of branch failures
%duration data [2] has been divided by 8760 to get a percentage of annual time offline
Eta_Failure = zeros(tb); %number of entries: tbc

beq = ones(1,tzib); %because all zero-injection buses have to equal 1

f = [ones(1,tb) zeros(1,tzibc)]; %optimizing f for cost only
intcon = 1:(tb+tzibc);      %all must be integers
lb = zeros(1,(tb+tzibc));   %enforces binary
ub = ones(1,(tb+tzibc));    %enforces binary

[x,fval] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub);

disp(x) %displays a PMU configuration which maintains full observability with optimal cost
disp(sum(x)); %total number of PMUs in setup

%%  OPTIMIZATION:   WITH MONTE CARLO TESTING

[row3, col3] = size(Eta_Success_Gaussian);
[row4, col4] = size(Eta_Success);
pmu = [];

for c3 = 1:col3 %run user2 times
    r3 = 1;
    for r4 = 1:row4
        for c4 = 1:col4
            if Eta_Success(r4, c4) ~= 0 %if there's a connection...
                Eta_Success(r4, c4) = Eta_Success_Gaussian(r3, c3); %...replace with monte carlo...
                r3 = r3+1; %...and move onto the next
            end
        end
    end

    A1 = -Eta_Success+-eye(size(Eta_Success));
    A2 = zeros(tb, tzibc);
    A2(3,1)   = A1(3,3); %bus 3
    A2(24,2)  = A1(24,3);
    A2(9,3)   = A1(9,3);
    A2(4,4)   = A1(4,4); %bus 4
    A2(9,5)   = A1(9,4);
    A2(5,6)   = A1(5,5); %bus 5
    A2(10,7)  = A1(10,5); 
    A2(6,8)   = A1(6,6); %bus 6
    A2(10,9)  = A1(10,6); 
    A2(8,10)  = A1(8,8); %bus 8
    A2(9,11)  = A1(9,8); 
    A2(10,12) = A1(10,8); 
    A2(9,13)  = A1(9,9); %bus 9
    A2(11,14) = A1(11,9); 
    A2(12,15) = A1(12,9); 
    A2(10,16) = A1(10,10); %bus 10
    A2(11,17) = A1(11,10); 
    A2(12,18) = A1(12,10); 
    A2(11,19) = A1(11,11); %bus 11
    A2(13,20) = A1(13,11); 
    A2(14,21) = A1(14,11); 
    A2(12,22) = A1(12,12); %bus 12
    A2(13,23) = A1(13,12); 
    A2(23,24) = A1(23,12); 
    A2(17,25) = A1(17,17); %bus 17
    A2(18,26) = A1(18,17); 
    A2(22,27) = A1(22,17); 
    A2(19,28) = A1(19,19); %bus 19
    A2(20,29) = A1(20,19); %double
    A2(20,30) = A1(20,20); %bus 20
    A2(23,31) = A1(23,20); %double 
    A2(24,32) = A1(24,24); %bus 24
    A2(27,33) = A1(27,27); %bus 27
    A2(33,34) = A1(33,27); 
    A2(48,35) = A1(48,27); 
    A2(28,36) = A1(28,28); %bus 28
    A2(33,37) = A1(33,28); 
    A2(29,38) = A1(29,29); %bus 29
    A2(34,39) = A1(34,29); 
    A2(30,40) = A1(30,30); %bus 30
    A2(34,41) = A1(34,30); 
    A2(32,42) = A1(32,32); %bus 32
    A2(33,43) = A1(33,32); 
    A2(34,44) = A1(34,32); 
    A2(33,45) = A1(33,33); %bus 33
    A2(35,46) = A1(35,33); 
    A2(36,47) = A1(36,33); 
    A2(34,48) = A1(34,34); %bus 34
    A2(35,49) = A1(35,34); 
    A2(36,50) = A1(36,34); 
    A2(35,51) = A1(35,35); %bus 35
    A2(37,52) = A1(37,35); 
    A2(38,53) = A1(38,35); 
    A2(36,54) = A1(36,36); %bus 36
    A2(37,55) = A1(37,36); 
    A2(47,56) = A1(47,36); 
    A2(41,57) = A1(41,41); %bus 41
    A2(42,58) = A1(42,41); 
    A2(46,59) = A1(46,41); 
    A2(43,60) = A1(43,43); %bus 43
    A2(44,61) = A1(44,43); %double 
    A2(44,62) = A1(44,44); %bus 44 
    A2(47,63) = A1(47,44); %double
    A2(48,64) = A1(48,48); %bus 48
    A2(51,65) = A1(51,51); %bus 51
    A2(57,66) = A1(57,51); 
    A2(72,67) = A1(72,51); 
    A2(52,68) = A1(52,52); %bus 52
    A2(57,69) = A1(57,52); 
    A2(53,70) = A1(53,53); %bus 53
    A2(58,71) = A1(58,53); 
    A2(54,72) = A1(54,54); %bus 54
    A2(58,73) = A1(58,54); 
    A2(56,74) = A1(56,56); %bus 56
    A2(57,75) = A1(57,56); 
    A2(58,76) = A1(58,56); 
    A2(57,77) = A1(57,57); %bus 57
    A2(59,78) = A1(59,57); 
    A2(60,79) = A1(60,57); 
    A2(58,80) = A1(58,58); %bus 58
    A2(59,81) = A1(59,58); 
    A2(60,82) = A1(60,58); 
    A2(59,83) = A1(59,59); %bus 59
    A2(61,84) = A1(61,59); 
    A2(62,85) = A1(62,59); 
    A2(60,86) = A1(60,60); %bus 60
    A2(61,87) = A1(61,60); 
    A2(71,88) = A1(71,60); 
    A2(65,89) = A1(65,65); %bus 65
    A2(66,90) = A1(66,65); 
    A2(70,91) = A1(70,65); 
    A2(67,92) = A1(67,67); %bus 67
    A2(68,93) = A1(68,67); %double
    A2(68,94) = A1(68,68); %bus 68
    A2(71,95) = A1(71,68); %double
    A2(72,96) = A1(72,72); %bus 72
    A2(73,97) = A1(73,73); %bus 73
    A2(21,98) = A1(21,73); 
    A2(71,99) = A1(71,73); 
    A = [A1 A2];

    [x,fval] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub);
    
    disp(x); %displays a PMU configuration which maintains full observability with optimal cost
    pmu = [pmu, sum(x)];
end

%%        OUTPUT:

%print results (the number of PMUs determined for each configuration)
disp(pmu);

%graph results
figure();
bar(1:user2, pmu, 'FaceColor', [0.8 0.9 0.8], 'EdgeColor', [0.5 0.9 0.5]);
xlabel(['Results of ' num2str(user2) ' Simulations']);
ylabel('Total PMUs Required');
grid on;
title({'Optimal PMU Placement for IEEE RTS-96';['Confidence Interval: ' num2str(user) ' | Average PMUs Required: ' num2str(ceil(mean(pmu)))]});
hold on;
plot(xlim,[mean(pmu) mean(pmu)], 'r');
axis([0 user2+1 ceil(mean(pmu))-5 ceil(mean(pmu))+4]);

%print results summary
disp(['PMUs needed, on average = ' num2str(mean(pmu))]);

🎉3 参考文献

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

🌈4 Matlab代码、数据、文章

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值