【优化部署】改进的花朵授粉算法求解带障碍物的异构无线传感器网络优化部署问题【含Matlab源码 3645期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、粒子群算法简介

1 粒子群算法的概念
粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来寻找最优解.
PSO的优势:在于简单容易实现并且没有许多参数的调节。目前已被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法的应用领域。

2 粒子群算法分析
2.1基本思想
粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解,粒子群中的所有粒子根据自己找到的当前个体极值和整个粒子群共享的当前全局最优解来调整自己的速度和位置。下面的动图很形象地展示了PSO算法的过程:
在这里插入图片描述
2 更新规则
PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。
在这里插入图片描述
公式(1)的第一部分称为【记忆项】,表示上次速度大小和方向的影响;公式(1)的第二部分称为【自身认知项】,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自己经验的部分;公式(1)的第三部分称为【群体认知项】,是一个从当前点指向种群最好点的矢量,反映了粒子间的协同合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。以上面两个公式为基础,形成了PSO的标准形式。
在这里插入图片描述
公式(2)和 公式(3)被视为标准PSO算法。
3 PSO算法的流程和伪代码
在这里插入图片描述

⛄二、部分源代码

clear all;
clc;
tic
format long;
%------给定初始化条件
XMAX=1000;%区域总长度
XMIN=0;%区域总长度
YMAX=1000;%区域总宽度
YMIN=0;%区域总宽度
deta=2;
x1=XMIN:deta:XMAX;%指从100开始,步长为2,终值为900的数组。
y1=YMIN:deta:YMAX;
[xx,yy]=meshgrid(x1,y1);%生成一个矩阵,用于绘制矩形区域
[m,n]=size(xx);%m是矩阵的行数,n是矩阵的列数
K=mn; %总的网格点数目
xx1=reshape(xx,K,1);%网格点的横坐标,reshape返回一个K
1(即K行1列)的矩阵xx1
yy1=reshape(yy,K,1);%网格点的纵坐标
r=120;%探测半径
c1=2.0;%学习因子1(局部搜索能力)
c2=2.0;%学习因子2(全局搜索能力)
w=0.9437;%惯性权重
lamda=0.5;
MaxDT=50;%最大迭代次数
vmax=2.5;
N=40;%初始化群体个体数目,传感器的个数
num=20;%粒子数目,每40个传感器构成一个粒子
%初始化种群的个体
for i=1:num
for j=1:N
x(i,j,1)=(XMAX-XMIN)rand(1,1)+XMIN;%随机初始化位置
x(i,j,2)=(YMAX-YMIN)rand(1,1)+YMIN;%随机初始化位置
v(i,j,1)=randn;%随机初始化速度
v(i,j,2)=randn;%随机初始化速度
end
end
%计算各个粒子的适应度,并初始化Pi和Pg
for i=1:num
p(i)=fitness(x(i,:😅);
y(i,:,:)=x(i,:😅;
end
pg=x(1,:😅;%Pg为全局最优
for i=2:num
if fitness(x(i,:😅)>fitness(pg)
pg=x(i,:😅;
end
end
%把最优的粒子所代表的传感器分布方案用图形表示
figure,
hold on
plot(pg(1,:,1),pg(1,:,2),‘b.’,‘linewidth’,2);
o=0:pi/50:2
pi;
for i=1:N
x1=pg(1,i,1)+r
cos(o);
y1=pg(1,i,2)+r*sin(o);%表示圆每一个角度对应一个点,然后把这些点连接起来构成圆
hold on
plot(x1,y1,‘b’);%画出各个传感器节点的感知范围
text(pg(1,i,1)+3,pg(1,i,2),[‘\fontsize{8}\rm’,num2str(i)]);
hold on
end
axis([0 1000 0 1000]);%设定坐标范围
xlabel(‘X/m’);ylabel(‘Y/m’);
%legend(‘要监测的区域’,[‘传感器节点(’,‘\fontsize{12}\bf’,num2str(N),‘\fontsize{10}\rm个)的位置’],’ 传感器节点的感知范围’);
hold on
plot([XMIN XMAX],[YMIN YMIN],‘k’,‘linewidth’,1.5);
hold on
plot([XMIN XMIN],[YMIN YMAX],‘k’,‘linewidth’,1.5);
hold on
plot([XMAX XMAX],[YMIN YMAX],‘k’,‘linewidth’,1.5);
hold on
plot([XMIN XMAX],[YMAX YMAX],‘k’,‘linewidth’,1.5);%把四个顶点连接起来组成一个监测区域

%进入主循环,依次迭代,直到满足精度要求
for t=1:MaxDT
l=t
for i=1:num
%对节点坐标进行更新
v(i,:,:)=wv(i,:,:)+c1rand*(y(i,:😅-x(i,:😅)+c2rand(pg(1,:😅-x(i,:😅);%速度更新
x(i,:,:)=x(i,:,:)+v(i,:😅;%位置更新
%对粒子中节点的状态进行调整
[a,b,D]=juli(x(i,:😅);
v(i,a,:)=lamda*(y(i,a,:)-x(i,a,:));%速度更新
v(i,b,:)=lamda*(y(i,b,:)-x(i,b,:));%速度更新
x(i,a,:)=x(i,a,:)+v(i,a,:);%位置更新
x(i,b,:)=x(i,b,:)+v(i,b,:);%位置更新
%不能出界
for j=1:40
if abs(v(i,j,1))>vmax
v(i,j,1)=v(i,j,1)/abs(v(i,j,1))vmax;
end
if abs(v(i,j,2))>vmax
v(i,j,2)=v(i,j,2)/abs(v(i,j,2))vmax;
end
if x(i,j,1)<XMIN
x(i,j,1)=XMIN;
end
if x(i,j,1)>XMAX
x(i,j,1)=XMAX;
end
if x(i,j,2)<YMIN
x(i,j,2)=YMIN;
end
if x(i,j,2)>YMAX
x(i,j,2)=YMAX;
end
end
%对公告板的内容进行更新
if fitness(x(i,:😅)>p(i)
p(i)=fitness(x(i,:😅);
y(i,:,:)=x(i,:😅;%粒子的最好位置
end
if p(i)>fitness(pg)
pg=y(i,:😅;%全局的最好位置
end
end
Pbest(t)=fitness(pg);
end
figure
plot(Pbest)
%最后结果
figure,
xm=[XMIN YMIN;XMIN YMAX;XMAX YMAX;XMAX YMIN];%区域的四个顶点
hold on
plot(pg(1,:,1),pg(1,:,2),‘b.’,‘linewidth’,2);
o=0:pi/50:2
pi;
for i=1:N
x1=pg(1,i,1)+r
cos(o);
y1=pg(1,i,2)+r*sin(o);%表示圆每一个角度对应一个点,然后把这些点连接起来构成圆
hold on
plot(x1,y1,‘b’); %画出各个传感器节点的感知范围
text(pg(1,i,1)+3,pg(1,i,2),[‘\fontsize{8}\rm’,num2str(i)]);
hold on
end

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值