资源简介
基于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算法实现源码
- 下一篇:基于边缘的图像配准程序
相关资源
- PSO 算法在VRP中的应用
- matlab粒子群算法工具箱
- PSO-optimize-RBF matlab实现
- LEACH分簇算法
- HEED、LEACH以及一种基于地理位置的非
- 离散粒子群算法DPSOMatlab代码
- leach分簇算法仿真基于matlab
- 小生境PSO算法matlab程序
- psola.m
- 粒子群优化算法解决背包问题
- LEACH算法相关代码
- 无线传感器网络中LEACH路由协议的MA
- matlab粒子群算法PSO程序,算法优化效
- pegasis+leachvsdeec
- 标准粒子群优化算法-用Griewank函数测
- PSO标准函数测试
- matlab利用复化梯形公式,复化simpson公
- PSO工具箱使用简介\\test_func.mmatlab程序
- Matlab写的粒子群优化算法,很好用!
- pso_lssvm回归预测
- 粒子群算法源代码
- 基于pso的测试函数Griewank得MATLAB算法代
- 基于粒子群PSO算法系统辨识matlab程序
- leach协议源代码matlab
- 优化算法——粒子群算法(PSO)原理
- 粒子群算法求解BP神经网络参数
- PSO优化PID参数的matlab程序
- 粒子群算法PSOmatlab工具箱toolbox
- matlab——PSO算法以及两种适应度函数
- MATLAB智能算法超级学习手册
评论
共有 条评论