资源简介
基于matlab的PSO版leach,一种改进,智能优化算法 粒子群算法的leach算法协议,仅供大家参考
代码片段和文件信息
clear;
xm=100; %X轴 Y轴
ym=100; %%
sink.x=0.5*xm; %传输目的地(基站)
sink.y=0.5*ym; %
n=100;%节点总数
p=0.1;%簇头节点的概率
a=0.5;%%%%%%%%%%%%%%适应值函数归一化比例
E0=0.05;%初始能量
ETX=50*0.000000001;%传输能量/bit
ERX=50*0.000000001;%接收能量/bit
EFS=10*0.000000000001;%耗散能量/bit
EMP=0.0013*0.000000000001;
EDA=5*0.000000001;%融合能量/bit
rmax=300;%总轮数
do=sqrt(EFS/EMP); %???
figure(1);%图
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%~~~~~~~初始化,随机选节点坐标、节点标准
for i=1:1:n
S(i).xd=rand(11)*xm;%X
S(i).yd=rand(11)*ym;%Y
S(i).G=0;%每一周期结束此变量为0
S(i).E=E0; %能量
S(i).F=0;%???
S(i).type=‘N‘;%节点类型为普通
S(i).cluster=0;%第i个节点所属簇的id,初始为0
S(i).AVG=0;
temp_rnd=i; %??
plot(S(i).xdS(i).yd‘o‘);
hold on;
end
%~~~~~~~~~~
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
S(n+1).xd=sink.x; %例如100节点, 基站为101
S(n+1).yd=sink.y;
plot(S(n+1).xdS(n+1).yd‘x‘);
figure(1);
countCHs=0;
rcountCHs=0;
cluster=1; %族头
countCHs;
rcountCHs=rcountCHs+countCHs;
flag_first_dead=0; %第一个死亡节点
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%~~~~~~~~~~~~~~~~~
for r=0:1:rmax
r %输出第几轮
if(mod(rround(1/p))==0) % 判断T(n) by 31/52
for i=1:1:n;
S(i).G=0;
S(i).cl=0;
end
end
%初始为0
hold off;
dead=0;
packets_TO_BS=0;
packets_TO_CH=0;
PACKETS_TO_BS(r+1)=0;
PACKETS_TO_CH(r+1)=0;
figure(1);
%%%%%%%%%%%%%%%%%%%%%%%
%~~~~将死亡节点判为红色,未死亡的为黑色
for i=1:1:n
if(S(i).E<=0) %能量为0时 节点死亡
plot(S(i).xdS(i).yd‘red .‘);
dead=dead+1;
hold on;
end
if(S(i).E>0)
S(i).type=‘N‘;
plot(S(i).xdS(i).yd‘o‘);
hold on;
end
end
%~~~~~~~~~
%%%%%%%%%%%%%%%%%%%%%%
plot(S(n+1).xdS(n+1).yd‘x‘);
STATISTICS(r+1).DEAD=dead; %统计死亡数
DEAD(r+1)=dead; %
%%%%%%%%%%%%%%%%%%%%%%%%%%
%~~~~~~~~~~~~~~~~~死亡数等于1时, 记第一个死亡
if (dead==1)
if(flag_first_dead==0)
first_dead=r;
flag_first_dead=1;
end
end
%~~~~~~
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
countCHs=0;
cluster=1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~begin选临时簇头,已去除临时簇头传输消息!!
for i=1:1:n
if(S(i).E>0) %能量大于0
if(S(i).G<=0) %???
temp_rand1=rand; %随机数
if(temp_rand1<=(p/(1-p*mod(rround(1/p))))) %随机数与T(n)判断,小成为簇头节点
S(i).type=‘D‘; %类型变换,第一轮为临时簇头
D(cluster).xd=S(i).xd; %簇头节点X轴
D(cluster).yd=S(i).yd; %簇头节点Y轴
S(i).cluster=cluster; %记入簇头数
cluster=cluster+1; %簇头加1
countCHs=countCHs+1; %簇头节点数目?????
packets_TO_BS=packets_TO_BS+1;%数据包+1
end
end
end
end
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~end选临时簇头
%%%%%%%%%%%%%%%%%%%%%%%%
- 上一篇:在matlab中ica算法实现源码
- 下一篇:基于边缘的图像配准程序
相关资源
- 粒子群算法优化pid源码 matlab仿真.ra
- pso解决单目标优化问题
- 基本粒子群算法,MATLAB文件的M文件编
- matlab粒子群算法PSO实现函数极值优化
- PSO负载均衡算法-matlab实现
- l粒子群算法工具箱psot
- PSO_LSSVM程序代码及LSSVM工具箱
- libsvm-3.1-[FarutoUltimate3.1
- PSO优化模糊控制器进行电动汽车能量
- 多目标粒子群社团检测算法MODPSO
- PSO优化SVM参数matlab
- 蜂群SVMABC-SVM遗传算法SVMGA-SVM粒子群
- 遗传粒子群优化算法-GAPSO.rar
- pso优化bp神经网络代码
- MATLAB 多目标粒子群算法源代码
- 粒子群算法应用在路径规划matlab
- MOPSO+
- 粒子群算法matlab含注释
- pso-bp代码
- LEACH多跳传输协议matlab实现
- 基于MATLAB仿真的LEACH协议代码
- 基于权重改进的PSO
- PSO优化PID参数
- 经典的Leach算法在matlab中的实现
- leach 关于节点剩余能量的性能仿真
- pso工具箱 matlab
- DEEC VS LEACH比较
- 智能优化算法及其MATLAB第2版-书中的
- leach经典算法matlab代码
- MOPSO多目标优化程序MATLAB代码.zip
评论
共有 条评论