clear;
%异质网络的生成
% n_S = 5;
% n_D = 1;
% n_I = 3;
% n_T = 1;
n_S = 20;
n_D = 10;
n_I = 15;
n_T = 15;
N = n_S + n_T + n_I + n_D;
P_SS = 0.2;
P_SD = 0.6;
%P_DS = 0.5;
P_DS = 0.1;
P_DD = 0.2;
P_DI = 0.5;
% P_IT = 0.8;
P_IT = 0.5;
P_TS = 0.5;
% n_S = 20;
% n_D = 10;
% n_I = 15;
% n_T = 15;
% N = n_S + n_T + n_I + n_D;
% P_SS = 0.2;
% P_SD = 0.6;
% P_DS = 0.1;
% P_DD = 0.2;
% P_DI = 0.5;
% P_IT = 0.5;
% P_TS = 0.5;
times = 30;
RA_Connection_Ave = zeros(n_S+n_D+n_I+n_T+1,1);
DA_Connection_Ave = zeros(n_S+n_D+n_I+n_T+1,1);
RA_LoopNum_Ave = zeros(n_S+n_D+n_I+n_T+1,1);
FA_LoopNum_Ave = zeros(n_S+n_D+n_I+n_T+1,1);
for i=1:times
A_node = ProduceRandomTotalMatrix( n_T,n_S,n_D,n_I,P_SS,P_SD,P_DS,P_DD,P_DI,P_IT,P_TS );
%随机攻击
[RA_Connection RA_Order ] = RandomAttract(A_node );
RA_Connection_Ave = RA_Connection + RA_Connection_Ave;
%度大的优先攻击
[DA_Connection DA_Order] = DegreeAttract(A_node);
DA_Connection_Ave = DA_Connection_Ave + DA_Connection;
%异质网络随机攻击
[RA_LoopNum RA_LoopOrder] = RandomAttract_loop( A_node,n_T,n_S,n_D,n_I );
RA_LoopNum_Ave = RA_LoopNum_Ave + RA_LoopNum;
%异质网络中作战环数量最多的优先攻击
[FA_LoopNum FA_LoopOrder] = FirstAttractLoop( A_node,n_T,n_S,n_D,n_I );
FA_LoopNum_Ave = FA_LoopNum + FA_LoopNum_Ave;
end
RA_Connection_Ave = RA_Connection_Ave/times;
DA_Connection_Ave = DA_Connection_Ave/times;
RA_LoopNum_Ave = RA_LoopNum_Ave/times;
FA_LoopNum_Ave = FA_LoopNum_Ave/times;
%画图
x_zhou=[];
for i=1:N+1
x_zhou(i)=i-1;
end
%%
% figure(1)
% plot(x_zhou,RA_Connection_Ave,'r:*','LineWidth',2)
% xlabel('减少的节点数量','FontSize',12)
% ylabel('自然连通度','FontSize',12)
% hold on;
% plot(x_zhou,DA_Connection_Ave,'b-.v','LineWidth',2)
% legend('随机攻击模式','度优先攻击模式')
% title('两种攻击策略下的武器装备体系网络的自然连通度','FontSize',12)
%
figure(2)
plot(x_zhou,RA_LoopNum_Ave,'r:*','LineWidth',2)
xlabel('减少的节点数量','FontSize',12)
ylabel('杀伤链数','FontSize',12)
hold on;
plot(x_zhou,FA_LoopNum_Ave,'b-.v','LineWidth',2)
legend('随机攻击模式','链优先攻击模式')
title('两种攻击策略下的武器装备体系网络的杀伤链数','FontSize',12)
%对比
% figure(1)
% plot(x_zhou,RA_Connection_Ave/RA_Connection_Ave(1,1),'r:*','LineWidth',2)
% xlabel('减少的节点数目','FontSize',12)
% ylabel('网络抗毁性指标','FontSize',12)
% hold on;
% plot(x_zhou,DA_Connection_Ave/DA_Connection_Ave(1,1),'r-.v','LineWidth',2)
% hold on;
% plot(x_zhou,RA_LoopNum_Ave/RA_LoopNum_Ave(1,1),'b:*','LineWidth',2)
% xlabel('减少的节点数目','FontSize',12)
% ylabel('网络抗毁性指标','FontSize',12)
% hold on;
% plot(x_zhou,FA_LoopNum_Ave/FA_LoopNum_Ave(1,1),'b-.v','LineWidth',2)
% legend('同质网络中随机攻击策略 ','同质网络中选择攻击策略','异质网络中随机攻击策略','异质网络中选择攻击策略')
% title('同质网络和异质网络中两种攻击策略的比较','FontSize',11)
%将邻接矩阵转换成gephi可读的数据
% node_label = cell(1,N)
% for i=1:n_S
% b = ['S' ,int2str(i)]
% node_label{1,i} = b;
% end
% for j=1:n_D
% b = ['D' ,int2str(j)]
% node_label{1,j+n_S} = b;
% end
% for k=1:n_I
% b = ['I' ,int2str(k)]
% node_label{1,k+n_S+n_D} = b;
% end
% for l=1:n_T
% b = ['T' ,int2str(l)]
% node_label{1,l+n_S+n_D+n_I} = b;
% end
%
% [node1,edglist_final]=matlab_to_gephi(A_node,node_label)
% A_node = ProduceRandomTotalMatrix( n_T,n_S,n_D,n_I,P_SS,P_SD,P_DS,P_DD,P_DI,P_IT,P_TS )
% temp_loop = A_node;
% [NumT,NumS,NumD,NumI] = NodeNumInPath( A_node,n_T,n_S,n_D,n_I );
%
% loop_first_att_order = zeros(size(A_node,1)+1,1);
% loop_first_att_num = zeros(size(A_node,1)+1,1);
% loop_first_att_num(1,1) = OP_num( A_node,n_T,n_S,n_D,n_I)
% i=0;
%
% Total_node_loop_num = [NumS' NumD' NumI' NumT'];
% temp_haha = Total_node_loop_num;
% while OP_num( A_node,n_T,n_S,n_D,n_I)>0
% [MaxValue,position] = max(Total_node_loop_num);
% i = i+1;
% loop_first_att_order(i+1) = position;
% A_node = Attract( A_node, position );
% loop_first_att_num(i+1) = OP_num( A_node,n_T,n_S,n_D,n_I );
% Total_node_loop_num(1,position) = 0;
%
% end
%
% [RA_LoopNum RA_LoopOrder] = RandomAttract_loop( temp_loop,n_T,n_S,n_D,n_I );
% for i=1:size(A_node,1)+1
% x_zhou(i)=i-1;
% end
% plot(x_zhou,loop_first_att_num,'r:*','LineWidth',2);hold on;
% plot(x_zhou,RA_LoopNum,'b-.v','LineWidth',2);
% A_node = ProduceRandomTotalMatrix( n_T,n_S,n_D,n_I,P_SS,P_SD,P_DS,P_DD,P_DI,P_IT,P_TS );
% [RA_LoopNum RA_LoopOrder] = RandomAttract_loop( A_node,n_T,n_S,n_D,n_I );
% [FA_LoopNum FA_LoopOrder] = FirstAttractLoop( A_node,n_T,n_S,n_D,n_I );
% x_zhou=[];
% for i=1:size(A_node,1)+1
% x_zhou(i)=i-1;
% end
% figure(2)
% plot(x_zhou,RA_LoopNum,'r:*','LineWidth',2)
% xlabel('Decreasing node number','FontSize',12)
% ylabel('Natural connectivity','FontSize',12)
% hold on;
% plot(x_zhou,FA_LoopNum,'b-.v','LineWidth',2)
% legend('Random Attract Mode','Selective Attack Mode')
% title('The effectivity of network structure in two attract modes','FontSize',14)
%%
figure(5)
names={'S1' 'S2' 'S3' 'S4' 'S5' 'S6' 'S7' 'S8' 'S9' 'S10' 'S11' 'S12' 'S13' 'S14' 'S15' 'S16' 'S17' 'S18' 'S19' 'S20' 'D1' 'D2' 'D3' 'D4' 'D5' 'D6' 'D7' 'D8' 'D9' 'D10' 'I1' 'I2' 'I3' 'I4' 'I5' 'I6' 'I7' 'I8' 'I9' 'I10' 'I11' 'I12' 'I13' 'I14' 'I15' 'T1' 'T2' 'T3' 'T4' 'T5' 'T6' 'T7' 'T8' 'T9' 'T10' 'T11' 'T12' 'T13' 'T14' 'T15'};
G = digraph(A_node,names,'omitselfloops'); %异质网络矩阵的横坐标指向纵坐标
plot(G);
D=indegree(G)+outdegree(G) %攻击出度
%%
figure(1)
num_nodes_to_remove=10;
G_random_attack=G;
for i=1:num_nodes_to_remove
%随机选择一个节点进行删除
node_to_remove=randi(numnodes(G_random_attack));
G_random_attack=rmnode(G_random_attack,node_to_remove);
end
%可视化攻击后的网络
plot(G_random_attack)
G_random_attacked= full(adjacency(G_random_attack))