改进花朵授粉算法的无线传感器网络部署优化(Matlab代码实现)
👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
针对监测区域内含有障碍物的无线传感器网络(Wireless Sensor Networks,WSNs)异构节点部署优化问题,在花朵授粉算法(Flower Pollination Algorithm,FPA)的基础之上,提出了一种改进的 花朵授粉算法(Improved Flower Pollination Algorithm,IFPA)用于改善原有算法收敛速度慢、精度不够高的不足。设计非线性收敛因子以约束原有的缩放因子,采用 Tent 映射以维持迭代后期种群的多样性,而贪心交叉策略则是以较优的个体辅助较差个体搜索。基准函数实验验证了 IFPA 具有较好的收敛性能,而 WSN 部署的仿真实验表明 IFPA 可得到较高的覆盖率,可节约网络部署成本。
📚2 运行结果
2.1 无障碍物
2.2 有障碍物
部分代码:
p=0.8;%判断是否是全局优化还是局部优化
L = 50;%长
W = 50;%宽
%假设1平方米一个网格
M = 2500;%网格总数
r_max = 7;%感知半径为5
r_mid = 6;
r_min = 5;
energy_max = 100;%最大的能量
energy_mid = 90;
energy_min = 80;
per_sersons_radius_type = [r_max,r_mid,r_min];
%假设大、中为5,剩下为小
N = 25;%30个传感器节点
sizepop = 50;%种群规模
dimension = 2;% 空间维数 前行放x、y,第三行放半径
ger = 10;% 最大迭代次数
pos_limit = [0, 50]; % 设置位置参数限制
%个数限制
r_max_num = 1;%序号为1-5
r_mid_num = 2;%序号为6-10
r_min_num = N - r_max_num - r_mid_num; %序号为11-N
struct_pop_per = struct('per',[],'radius',[],'energy_init',[],'energy_end',[],'sersons_num',[]);%结构体类型
struct_pops_temp = repmat(struct_pop_per,[1 sizepop]);%临时的一个种群
energy_init_arr = zeros(1,N);
energy_end_arr = zeros(1,N);
radius_arr = zeros(1,N);
%求出梯形的四个点
syms x y;%先定义一个变量
%左上角
k1 = 1;
b1 = 35;
x1_up = solve(k1*x+b1==50,x);%左上角的斜线的上个交点
y1_down = solve(k1*0+b1==y,y);
%左下角
k2 = -1;
b2 = 15;
y2_up = solve(k2*0+b2==y,y);
x2_down = solve(k2*x+b2==0,x);
%右上角
k3 = -1;
b3 = 85;
x3_up = solve(k3*x+b3==50,x);
y3_down = solve(k3*50+b3==y,y);
%右下角
k4 = 1;
b4 = -35;
y4_up = solve(k4*50+b4==y,y);
x4_down = solve(k4*x+b4==0,x);
%以下数据验证完毕,完全正确
point = zeros(8,2);%存储这些点 从左 从上往下
point(1,:) = [x1_up,50];
point(2,:) = [0,y1_down];
point(3,:) = [0,y2_up];
point(4,:) = [x2_down,0];
point(5,:) = [x3_up,50];
point(6,:) = [50,y3_down];
point(7,:) = [50,y4_up];
point(8,:) = [x4_down,0];
%菱形的计算
point_diamond = zeros(2,4);%菱形的四个点,方位是顺时针 第一列为上 二列为右
%求出新菱形形的四个点
syms x y;%先定义一个变量
%左上角
k5 = 1;
b5 = 10;
%别搞什么计算了 直接可以看出来
point_diamond(1,1) = 25;
point_diamond(2,1) = 35;
%右上角
k6 = -1;
b6 = 60;
point_diamond(1,2) = 35;
point_diamond(2,2) = 25;
%右下角
k7 = 1;
b7 = -10;
point_diamond(1,3) = 25;
point_diamond(2,3) = 15;
%左下角
k8 = 1;
b8 = 40;
point_diamond(1,4) = 15;
point_diamond(2,4) = 25;
load struct_pop_public.mat;%加载该种群
struct_pops = struct_pop_public;%得到种群数据
load struct_first_init_public.mat%加载最开始的一个个体数据
struct_first_init = struct_first_init_public;%得到初始化个体数据
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]王振东,谢华茂,胡中栋,李大海,王俊岭.改进花朵授粉算法的无线传感器网络部署优化[J].系统仿真学报,2021,33(03):645-656.DOI:10.16182/j.issn1004731x.joss.19-0580.
🌈4 Matlab代码实现
相关文章
- 手眼标定 matlab源码,经典手眼标定算法matlab
- Matlab GUI上位机界面实现串口通信
- lasso回归matlab,机器学习Lasso回归重要论文和Matlab代码「建议收藏」
- nsga2 matlab,NSGA2算法特征选择MATLAB实现(多目标)
- matlab下的AIC和SIC准则,求助:AIC准则和SC准则不一致情况下如何判断滞后期?
- matlab逆变器仿真程序,PWM逆变器Matlab仿真「建议收藏」
- matlab中错误使用fmincon,MATLAB中fmincon 函数问题
- matlab之griddata函数
- MATLAB语音信号处理「建议收藏」
- matlab 画折线图并美化
- matlab矩阵拼接
- 如何用matlab画函数图_matlab常用画图函数
- matlab改变图片分辨率_matlab导出600dpi
- 遗传算法经典实例matlab代码_退火算法与遗传算法
- matlab解析int8数据为double_matlab把double转成int
- 遗传算法优化bp神经网络matlab代码_神经网络进化算法
- javacv学习之实现matlab中imfill算法(孔洞填充)
- matlab保存所有图,Matlab中图片保存的5种方法
- MATLAB的循环_matlab循环输出
- matlab循环语句for_MATLAB以下选择语句错误的是
- 指派问题匈牙利算法例题_匈牙利算法matlab代码
- 图像去色算法_matlab去雾算法
- 用matlab画三维图实例_cad绘制3d图形的教程
- matlab 汽车振动,基于MatLab的车辆振动响应幅频特性分析
- 灰度直方图及直方图均衡化的MATLAB实现
- 人工智能算法:基于Matlab遗传算法的实现示例
- 【MATLAB】进阶绘图 ( Boxplot 箱线图 | boxplot 函数 | Error Bar 误差条线图 | errorbar 函数 )
- 【数学数据处理软件】MATLAB最新版2023a下载安装
- MATLAB简介
- Linux下使用Matlab玩转编程世界。(linux下matlab)