首先在matlab里面找了一下上次找的IEEE算例,试了半天发现是runpf casex,用的matpower工具箱,首先用9节点的试一试,IEEE9节点网络的连接以及有功如下:
现在知道了节点的连接方式,怎么将他们连接起来呢?
好的,万能的百度,用这个回答解决了我的问题,无敌。
做出来的一对一耦合网络,还挺好看的。
然后考虑将网络的度数求出来,攻击度数最高的节点,假设节点失效后,与其连接的所有节点都会失效,但是还不会使再后面的节点继续失效,先做这么多。结果如下:
再接着删除度数最高的三个节点,结果如下:
再来就是随机删除五个节点,结果如下:
接着删除介数最高的三个节点,结果如下:
10-20
今天看看师姐的程序,看得有点头大,啥注释都没有。。。她算节点度的方法好像跟我有些不一样,类似于这样:
a = [0,0,1,0,1,0,1,0,1,1];
b = [1,0,1,0,1,1,0,0,0,0];
N = size(a0,1);
for i=1:1
ka(i) = sum(a(i,:));
kb(i) = sum(b(i,:));
end
disp(ka)
disp(kb)
我是这样:
%求节点度
for i = 1:30
degree(i) = sum(complex(i,:));
end
a = degree;
%30个节点的电力网和信息网,complex为耦合网络的邻接矩阵
(嗷嗷,再反过头来看,看懂了,发现是一样的,像个呆瓜)
可能因为是网络生成方式不同吧,上面那个有点看不懂,聚类系数函数如下:
%matrix为邻接矩阵
function [Cc,Cc_avg]=func_Cluster_Coeff(matrix)
Num = size(matrix,2);
Cc = zeros(1,Num);
for i=1:Num
Index1 = find(matrix(i,:)==1);
if isempty(Index1) == 1
Cc(i)=0;
else
m = length(Index1);
if m == 1
Cc(i)=0;
else
B = matrix(Index1,Index1);
Cc(i) = length(find(B==1))/(m*(m-1));
end
end
end
Cc_avg=mean(Cc);
end
10-21
进阶118节点,照着文章做,做到一半发现有点麻烦,可是118个节点又不想手打。。。。暂时的网络是这样的,后面还要考虑的东西还有很多。。。有点麻。。
这个是考虑了核心层与汇聚层,核心层与接入层以及汇聚层与电力层分区中的最高度数节点连接的情况,还剩下与发电机节点连接的情况,发电机节点有点多,后面再弄弄。
10-22
把发电机节点连完了,然后发现有几个点之间连了两次,想到高度数节点可能和发电机节点重合,故筛选了一遍,取出了高度数节点中的发电机节点
10-29
前阵子忙着汇报和一大堆的课,一直没写,所做的工作如下:
1,将电力网和,信息网接入层、核心层、汇聚层进行耦合,有点丑,然后把网络布局方式改变了一下,更丑了。。。
网络分为三层,最上层为通信网的两个调度节点,最下层为通信层的九个汇聚节点,中间为电力节点和通信网中的通信节点
2,编写四种攻击方式(随机,高度数攻击,高介数攻击,DB攻击),但是由于没有考虑级联故障的情况,导致攻击结果的节点存活度与论文中不一致。
3,组会时的高度数攻击和DB攻击图像中途直接和x轴垂直了,当时以为是没有去除孤立节点,下来以后仔细想了想为什么随机攻击和度攻击没有出现这种情况,现在结合介数的基本概念,虽然网络中有些节点的介数为0,但是它们并不是没有连边,当两个节点相互耦合,没有其他节点连接的情况下,会导致介数为0,但是这种连接在现实中并不会存在,过于理想化。于是在循环中加入了检测一一耦合的两个节点,并删除,得到上图。
接着往下做,加入级联故障的所有情况,文章中将故障分为电力网和信息网故障,其中电力网又分发电机节点、负荷节点以及传输节点故障,信息网又分为调度中心节点故障、汇聚节点失效和通信节点故障,但是由于文章并不是直接说明某类型的节点失效会牵涉其他节点失效的情况,而是分情况说明此类型节点可以运行的必要条件,感觉好麻烦。。。。
改了一点点,,当故障点为电力网节点时,判断与其相连的点是否为负荷节点,balabala。。。结果如下:
搞不出来,再见。
好的我又回来了,这几天把各种节点失效情况考虑上了,在此基础上的级联失效结果图如下
重写了几次之后和论文结果还是不一样,好的,我开始怀疑论文的结果是不是正确的了。