clear all
% result = xlsread('result.xls','B2:BX76');
%β beta = 0.5 可调参数 控制节点初始负载
%α alpha=0.3 负载参数 刻画节点应对额外负载以及抵制干扰的能力
%γ gamma=1.5 为过载参数。该参数的值体现了网络主体成员节点的移除弹性, 也从很大程度决定了系统对过载节点的保护程度
%% 随机生成网络
m0 = 5;%未增长前的网络节点个数m0
mmm = 1;%每次引入的新节点时新生成的边数mmm
LL = 100;%网络规模
ppp = 2;%初始网络的链接方式选择,初始网络m0个节点的连接选择:1节点均孤立;2,节点间构成完全图(任何两点都有连接);3随机连接一些边'
switch ppp
case 1
A=zeros(m0);
case 2
A=ones(m0);
for i=1:m0
A(i,i)=0;
end
case 3
for i=1:m0
for j=i+1:m0
p1=rand(1,1);
if p1>0.5
A(i,j)=1;A(j,i)=1;
else
A(i,j)=0;A(j,i)=0;
end
end
end
otherwise
disp('输入的参数pp不合法');
return;
end
for k=m0+1:LL
M=size(A,1);p=zeros(1,M);
if isempty(find(A==1, 1))%用于算节点i的被连接概率
p(:)=1/M;
else
idx = (A == 1);
p0 = sum(idx, 2);
temp = sum(p0);
p = p0 ./ temp;
end
pp=cumsum(p);%用轮盘赌的方法来实现度越大的节点越可能与新的节点产生连线
for i=1:mmm
random_data=rand(1,1);
aa=find(pp>=random_data); a=aa(1); jj(i,:)=a;
while length(find(a==jj))>1%这个while是为了避免出现重连边的情况(不是这里的问题)
random_data=rand(1,1);
aa=find(pp>=random_data); a=aa(1); jj(i,:)=a;
end
A(k,a)=1;%每次引入新的点时,生成的新边
A(a,k)=1;
end
end
%------------------------------------------------------------------------
%% 开始基于级联失效计算鲁棒性
if isempty(find(A==1, 1))%用于算节点i的被连接概率
p(:)=1/M;
else
idx = (A == 1);
p0 = sum(idx, 2);
temp = sum(p0);
p = p0 ./ temp;
end
subplot(1,2,1)
plot(p0)
net = A;
% del = 46;
alpha=0.3; beta = 0.5;
for i = 1:length(net)
[node M R] = main(net,i,alpha,beta);
RR(i) = R;
end
subplot(1,2,2)
plot(RR)
%%
function [node M R] = main(net,del,alpha,beta)
% 实现给节点设定初始载荷、节点容量。并调用其他函数实现级联失效过程。
% 输出
% node 为剩余节点的编号
% R 借助网络面积评估节点重要度
%系统内某节点失效将被从网络中删除,可能在级联效应下导致其它节点的删除,这些节点称为崩溃节点,剩余有效节点的总数被称为网络面积。
%输入 net为初始邻接矩阵 del为待删除的节点编号
%β beta = 0.5 可调参数 控制节点初始负载
%α alpha=0.3 负载参数 刻画节点应对额外负载以及抵制干扰的能力
%γ gamma=1.5 为过载参数。该参数的值体现了网络主体成员节点的移除弹性, 也从很大程度决定了系统对过载节点的保护程度
%% step1:对初始网络的每个节点计算负载
%首先计算每个节点自己的度 为行矩阵
K=sum(net); %因为邻接矩阵为对称矩阵,所以可以直接sum 求每一列的和
%计算每个节点的负载
for i=1:length(net)
L(i)=power(K(i)*(K*net(i,:)'),beta);
end
%根据负载矩阵L,整体计算每个节点的超载能力 行矩阵
C=(1+alpha)*L;
%% step2:节点i崩溃后,它的负载会分配给其邻居节点,分配给邻居节点j的额外负载与其节点的初始负载成正比,
%计算每个节点额外分配矩阵
addL=zeros(1,length(L)); %额外分配矩阵
node=1:length(net); %为节点一次编号
%% 触发评价函数
%传入 net初始网络(这个时候还没删除任何节点)
%del 为待删除的节点编号 L为Step1的负载矩阵 C为Step2的超载矩阵 node为节点编号
[Nnet del NL NC NaddL node]=assess(net,del,L,C,addL,node);%node为剩余的节点
M=1-sum(sum(Nnet))/(sum(K));
R=length(Nnet)/length(net);
end
function [net del L C addL node] = assess(net,del,L,C,addL,node)
%输入
%传入 net初始网络(这个时候还没删除任何节点)
%del 为待删除的节点编号 L为Step1的负载矩阵 C为Step2的超载矩阵 node为节点编号
%输出
% Nnet为级联之后的新网络 del为Step3中记录被删除的节点 NL为新的负载矩阵 NC为新的超载矩阵 NaddL为新的额外分配矩阵
% node为剩余编号
if length(net)==length(del) %如果初始网络的长度=要删掉的长度,表明全部删掉
net=[];del=[];L=[];C=[];addL=[];node=[]; %则全置为空
else
if length(del)==0 %如果要删掉长度为0,则表明不删任何节点
net=net;del=del;L=L;C=C;addL=addL;node=node; %则全部矩阵保留
else
gamma=1;
%% Step2
%第一次删元素
% net(del,del)=0; %将当前被删除的节点位置在邻接矩阵中置为0
%-----------将故障后的节点载荷分配到邻近节点------------------------
for i=1:length(del); %遍历待删节点
num=del(i); %在del中获取数值
ind=find(net(num,:));%ind是故障节点num的邻居节点集合
for j=1:length(ind) % 计算每个邻居节点应有的额外分配负载
addL(ind(j)) = addL(ind(j)) + L(ind(j))*L(num)/(L*net(num,:)');%这里可以变
end
end
%------------------------------------------------------------
net(del,:)=[];net(:,del)=[]; %在原矩阵中删除故障节点所在的行列
addL(del)=[]; %分配矩阵中也删除 这个点的位置
node(del)=[]; L(del)=[]; C(del)=[]; %节点编号、负载矩阵、超负载矩阵,删除这个节点的位置
%% step 3 节点超负载删除判断
flag=(L+addL)-gamma*C;
L = L + addL; addL=zeros(1,length(addL)); %更新节点负载矩阵和额外分配矩阵
Del=find(flag>=0);%flag中大于0的说明需要被删掉
del=Del;
[net del L C addL node] = assess(net,del,L,C,addL,node); %然后再次递归调用
end
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
无标度网络级联失效(基于载荷容量模型).zip_复杂网络 matlab_无标度网络 matlab_级联失效 matlab_鲁棒性
共1个文件
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 23 下载量 37 浏览量
2022-07-15
08:44:56
上传
评论 19
收藏 3KB ZIP 举报
温馨提示
代码完成了BA网络的负载、容量级联失效,并计算了鲁棒性
资源详情
资源评论
资源推荐
收起资源包目录
无标度网络级联失效(基于载荷容量模型).zip (1个子文件)
cascade.m 5KB
共 1 条
- 1
御道御小黑
- 粉丝: 58
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 信呼OA系统2.1.7版源码
- 3122080306 邹子轩 实验报告二.docx
- 基于STM32 NUCLEO板设计彩色LED照明灯(纯cubeMX开发)(大赛作品,文档完整,可直接运行)
- 发那科工业机器人保养大全
- Sphere.h
- REMD固有时间尺度分解信号分量可视化(Matlab完整源码和数据)
- 嵌入式系统双单片机STC89C52+STC15W104多功能学习板电路图可扩展 适用于单片机初学者和教学
- 基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)大赛作品
- XILINXFPGA源码基于Spartan3火龙刀系列FPGA开发板VGA测试例程
- Java聊天室的设计与实现【尚学堂·百战程序员】
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论18