📄 clustering.txt
字号:
nodey=[5;1;3;2;4;2;4;3;1;5;5;1;4;3;2;1;5;2;3;4;10;7;9;6;8;7;9;8;6;10;6;7;9;10;8;8;6;10;7;9];
nodex=[1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;
19;20];
fid = fopen('AliveNodes.txt','w');
nodeEN=[];
for i=1:length(nodey)
nodeEN(i) = 200;
end
length(nodey);
length(nodex);
length(nodeEN);
%hold
%figure(2)
%plot(nodex,nodey,'b*')
%title('Homogeneous Sensor Network')
%xlabel('X coordinates')
%ylabel('Y coordinates')
%grid on
%hold off
%axis([0 20 0 10])
62
%%%%%%%%%%%%%%%finding the cluster members for each cluster and details of each node in the
cluster%%%%%%%%%%%%%%%%%%
%c=1;
%%%%%%%%%%%%%% MATRIX of node information%%%%%%%%%%%%%%%%%%%%
node=[];
for i=1:40
node(i,1) = nodeEN(i); %node energy
node(i,2) = nodex(i); %node x_coordinate
node(i,3) = nodey(i); %node y_coordinate
node(i,5) = 0;
%node(i,4) = c;
if (node(i,3)<=6) & (node(i,2)<=10)
node(i,4) = 1;
end
if (node(i,3)<=7) & (node(i,2)>=11) & (node(i,2)<=16)
node(i,4) = 2;
end
if (node(i,3)<=6) & (node(i,2)>=17)
node(i,4) = 3;
end
if (node(i,3)>=7) & (node(i,2)<=10)
node(i,4) = 4;
end
if (node(i,3)>=7) & (node(i,2)>=11) & (node(i,2)<=16)
node(i,4) = 5;
end
if (node(i,3)>=7) & (node(i,2)>=18)
node(i,4) = 6;
end
%if (rem(i,5) == 0)
% c = c+1;
%end
end
node;
max1 = 0;
max2 = 0;
max3 = 0;
max4 = 0;
max5 = 0;
max6 = 0;
%max7 = 0;
%max8 = 0;
63
r = [];
an = [];
dead_nodes = [];
alive_nodes = 40;
count=0;
round = 0;
while (count < 5) %& (round<100)
round=round +1;
%%%%%%%%%%%%%%%%% assigning cluster heads according to the maximum
energy%%%%%%%%%%%%%5
for i=1:40
if (node(i,1)>max1) & (node(i,4)==1)
max1 = node(i,1);
%node(i,5) = 1;
CH1=i;
end
if (node(i,1)>max2) & (node(i,4)==2)
max2 = node(i,1);
%node(i,5) = 1;
CH2=i;
end
if (node(i,1)>max3) & (node(i,4)==3)
max3 = node(i,1);
%node(i,5) = 1;
CH3=i;
end
if (node(i,1)>max4) & (node(i,4)==4)
max4 = node(i,1);
%node(i,5) = 1;
CH4=i;
end
if (node(i,1)>max5) & (node(i,4)==5)
max5 = node(i,1);
%node(i,5) = 1;
CH5=i;
end
if (node(i,1)>max6) & (node(i,4)==6)
max6 = node(i,1);
%node(i,5) = 1;
CH6=i;
end
64
end
CH1;
CH2;
CH3;
CH4;
CH5;
CH6;
CH1x = node(CH1,2);
CH1y = node(CH1,3);
CH2x = node(CH2,2);
CH2y = node(CH2,3);
CH3x = node(CH3,2);
CH3y = node(CH3,3);
CH4x = node(CH4,2);
CH4y = node(CH4,3);
CH5x = node(CH5,2);
CH5y = node(CH5,3);
CH6x = node(CH6,2);
CH6y = node(CH6,3);
pos1=1;
pos2=1;
pos3=1;
pos4=1;
pos5=1;
pos6=1;
NN1=[];
NN2=[];
NN3=[];
NN4=[];
NN5=[];
NN6=[];
for i = 1:40
%%%%%%%%%%%%%Vector of normal nodes for each
cluster%%%%%%%%%%%%%%%%%%%%%
if node(i,4)==1
NN1(pos1) = i;
pos1 = pos1+1;
end
if node(i,4)==2
NN2(pos2) = i;
pos2 = pos2+1;
end
65
if node(i,4)==3
NN3(pos3) = i;
pos3 = pos3+1;
end
if node(i,4)==4
NN4(pos4) = i;
pos4 = pos4+1;
end
if node(i,4)==5
NN5(pos5) = i;
pos5 = pos5+1;
end
if node(i,4)==6
NN6(pos6) = i;
pos6 = pos6+1;
end
end
NN1;
NN2;
NN3;
NN4;
NN5;
NN6;
%%%%%%%%%%%%%%%%%%%DISTANCE BETWEEN
ch's%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555
D62=sqrt((abs(CH2x-CH6x))^2+(abs(CH2y-CH6y))^2);
D63=sqrt((abs(CH3x-CH6x))^2+(abs(CH3y-CH6y))^2);
D65=sqrt((abs(CH5x-CH6x))^2+(abs(CH5y-CH6y))^2);
D56=D65;
D36=D63;
D26=D62;
D51=sqrt((abs(CH5x-CH1x))^2+(abs(CH5y-CH1y))^2);
D52=sqrt((abs(CH5x-CH2x))^2+(abs(CH5y-CH2y))^2);
D54=sqrt((abs(CH5x-CH4x))^2+(abs(CH5y-CH4y))^2);
D15=D51;
D25=D52;
D45=D54;
D41=sqrt((abs(CH1x-CH4x))^2+(abs(CH1y-CH4y))^2);
D14=D41;
D32=sqrt((abs(CH2x-CH3x))^2+(abs(CH2y-CH3y))^2);
D23=D32;
D21=sqrt((abs(CH1x-CH2x))^2+(abs(CH1y-CH2y))^2);
66
D12=D21;
D01=sqrt((abs(CH1y))^2+(abs(CH1y))^2);
D10=D01;
%%%%%%%%%% Initial parameters for Energy consumption
ENelec=50e-9;
EEfris=10e-12;
kNNs = 100 * 1024 *8;
kCHs = 500 * 1024 *8;
%%%%%%%% Cluster 6 energy consumption %%%%%%%%%%%%%%%%5
for i = 1:length(NN6)
NNx = node(NN6(i),2);
NNy = node(NN6(i),3);
n = NN6(i);
dist = sqrt((abs(CH6x-NNx))^2+(abs(CH6y-NNy))^2);
node(n,1) = node(n,1) - (ENelec*kNNs + (EEfris*kNNs*dist^2));
end
EnTX6 = 0.9*(ENelec*kCHs + (EEfris*kCHs*D56^2));
EnRX6 = ENelec * 4 * kNNs ;
node(CH6,1) = node(CH6,1) - EnTX6 - EnRX6;
%%%%%%%% Cluster 5 energy consumption %%%%%%%%%%%%%%%%
for i = 1:length(NN5)
NNx = node(NN5(i),2);
NNy = node(NN5(i),3);
n = NN5(i);
dist = sqrt((abs(CH5x-NNx))^2+(abs(CH5y-NNy))^2);
node(n,1) = node(n,1) - (ENelec*kNNs + (EEfris*kNNs*dist^2));
end
EnTX5 = 0.9*(ENelec*kCHs + (EEfris*kCHs*D54^2)) + (ENelec*1*0.9*kCHs + (EEfris*0.9*1*kCHs
*D54^2)) ;
EnRX5 = ENelec * 4 * kNNs + ENelec * 5 * 0.9 * kNNs;
node(CH5,1) = node(CH5,1) - EnTX5 - EnRX5;
%%%%%%%% Cluster 4 energy consumption %%%%%%%%%%%%%%%%
67
for i = 1:length(NN4)
NNx = node(NN4(i),2);
NNy = node(NN4(i),3);
n = NN4(i);
dist = sqrt((abs(CH4x-NNx))^2+(abs(CH4y-NNy))^2);
node(n,1) = node(n,1) - (ENelec*kNNs + (EEfris*kNNs*dist^2));
end
EnTX4 = 0.9*(ENelec*kCHs + (EEfris*kCHs*D41^2)) + (ENelec*2*0.9*kCHs + (EEfris*0.9*2*kCHs
*D41^2)) ;
EnRX4 = ENelec * 4 * kNNs + ENelec * 10 * 0.9 * kNNs;
node(CH4,1) = node(CH4,1) - EnTX4 - EnRX4;
%%%%%%%% Cluster 3 energy consumption %%%%%%%%%%%%%%%%5
for i = 1:length(NN3)
NNx = node(NN3(i),2);
NNy = node(NN3(i),3);
n = NN3(i);
dist = sqrt((abs(CH3x-NNx))^2+(abs(CH3y-NNy))^2);
node(n,1) = node(n,1) - (ENelec*kNNs + (EEfris*kNNs*dist^2));
end
EnTX3 = 0.9*(ENelec*kCHs + (EEfris*kCHs*D32^2));
EnRX3 = ENelec * 4 * kNNs ;
node(CH3,1) = node(CH3,1) - EnTX3 - EnRX3;
%%%%%%%% Cluster 2 energy consumption %%%%%%%%%%%%%%%%
for i = 1:length(NN2)
NNx = node(NN2(i),2);
NNy = node(NN2(i),3);
n = NN2(i);
dist = sqrt((abs(CH2x-NNx))^2+(abs(CH2y-NNy))^2);
node(n,1) = node(n,1) - (ENelec*kNNs + (EEfris*kNNs*dist^2));
end
EnTX2 = 0.9*(ENelec*kCHs + (EEfris*kCHs*D21^2)) + (ENelec*1*0.9*kCHs + (EEfris*0.9*1*kCHs
*D21^2)) ;
EnRX2 = ENelec * 4 * kNNs + ENelec * 5 * 0.9 * kNNs;
node(CH2,1) = node(CH2,1) - EnTX2 - EnRX2;
%%%%%%%% Cluster 1 energy consumption %%%%%%%%%%%%%%%%
68
for i = 1:length(NN1)
NNx = node(NN1(i),2);
NNy = node(NN1(i),3);
n = NN1(i);
dist = sqrt((abs(CH1x-NNx))^2+(abs(CH1y-NNy))^2);
node(n,1) = node(n,1) - (ENelec*kNNs + (EEfris*kNNs*dist^2))
end
EnTX1 = 0.9*(ENelec*kCHs + (EEfris*kCHs*D10^2)) + (ENelec*5*0.9*kCHs + (EEfris*0.9*5*kCHs
*D10^2)) ;
EnRX1 = ENelec * 4 * kNNs + ENelec * 20 * 0.9 * kNNs;
node(CH1,1) = node(CH1,1) - EnTX1 - EnRX1;
max1 = node(CH1,1);
max2 = node(CH2,1);
max3 = node(CH3,1);
max4 = node(CH4,1);
max5 = node(CH5,1);
max6 = node(CH6,1);
for i=1:40
if (node(i,1)<=0) & (node(i,5)==0)
count = count +1;
node(i,5) = 1;
dead_nodes(count) = i;
alive_nodes = alive_nodes - 1;
end
end
an(round) = alive_nodes;
r(round) = round;
fprintf(fid,'%6.2f %8.1f\n',alive_nodes)
%hold
%figure(1);
%plot(node(1:40))
%title('Graph of Energy vs Node Distance from the Base Station')
%xlabel('Node Distance from Base Station')
%ylabel('Energy in J')
%axis([0 41 0 500])
%pause(0.0)
end
69
hold
figure(1)
title('Graph of number of alive nodes VS the number of rounds')
xlabel('Number of rounds of communication')
ylabel('Number of alive nodes')
plot(r,an,'b');
axis([500 1000 32 41])
hold
%hold
%figure(1);
%plot(node(1:40),'r')
%title('Graph of Residual Energy at each node VS Node ID ')
%xlabel('Node ID of nodes in the network')
%ylabel('Residual Energy of eahc node in J')
%axis([0 41 0 250])
%pause(0.0)
%hold
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -