【优化部署】基于matlab遗传算法求解移动传感器部署优化问题【含Matlab源码 1197期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞💞💞💞💞💞💥💥💥💥💥💥
在这里插入图片描述
✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进;
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式

⛳️座右铭:行百里者,半于九十。
更多Matlab优化求解仿真内容点击👇
Matlab优化求解 (进阶版)
付费专栏Matlab优化求解(初级版)

⛳️关注优快云海神之光,更多资源等你来!!

⛄一、遗传算法简介

1 引言
在这里插入图片描述
在这里插入图片描述
2 遗传算法理论
2.1 遗传算法的生物学基础
在这里插入图片描述
在这里插入图片描述
2.2 遗传算法的理论基础
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.3 遗传算法的基本概念
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.4 标准的遗传算法
在这里插入图片描述
在这里插入图片描述
2.5 遗传算法的特点
在这里插入图片描述
在这里插入图片描述
2.6 遗传算法的改进方向
在这里插入图片描述
3 遗传算法流程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4 关键参数说明
在这里插入图片描述

⛄二、部分源代码

function mutation(pop_size, chromo_size, mutate_rate)
global pop;
global aim;
global q;

for i=1:pop_size
if rand < mutate_rate
mutate_pos = round(rand*chromo_size);
if mutate_pos == 0
continue;
end

pop_tem = pop;
vaild = 1;

pop_tem(i,mutate_pos) = round(rand()*50); %变异

if ( pop_tem(i,1)>=aim(1,1)&&pop_tem(i,4)>=aim(1,1)&&pop_tem(i,7)>=aim(1,1) ) || ( pop_tem(i,2)>=aim(1,2)&&pop_tem(i,5)>=aim(1,2)&&pop_tem(i,8)>=aim(1,2) ) || ( pop_tem(i,3)>=aim(1,3)&&pop_tem(i,6)>=aim(1,3)&&pop_tem(i,9)>=aim(1,3) )
vaild = 0;
elseif ( pop_tem(i,1)<=aim(1,1)&&pop_tem(i,4)<=aim(1,1)&&pop_tem(i,7)<=aim(1,1) ) || ( pop_tem(i,2)<=aim(1,2)&&pop_tem(i,5)<=aim(1,2)&&pop_tem(i,8)<=aim(1,2) ) || ( pop_tem(i,3)<=aim(1,3)&&pop_tem(i,6)<=aim(1,3)&&pop_tem(i,9)<=aim(1,3) )
vaild = 0;
elseif (sqrt((pop_tem(i,1)-aim(1,1))2+(pop_tem(i,2)-aim(1,2))2+(pop_tem(i,3)-aim(1,3))2)+sqrt((pop_tem(i,4)-aim(1,1))2+(pop_tem(i,5)-aim(1,2))2+(pop_tem(i,6)-aim(1,3))2)+sqrt((pop_tem(i,7)-aim(1,1))2+(pop_tem(i,8)-aim(1,2))2+(pop_tem(i,9)-aim(1,3))^2))/3 > q
vaild = 0;
end

if(vaild == 1)
pop = pop_tem;
end

end
end

clear i;
clear mutate_pos;
clear pop_tem;
function crossover(pop_size, chromo_size, cross_rate)
global pop;
global aim;
global q;

for i=2:2:pop_size
if(rand < cross_rate)
cross_pos = round(rand * chromo_size); %随机交叉位置

if or (cross_pos == 0, cross_pos == 1)
continue;
end

pop_tem = pop;

for j=cross_pos:chromo_size %进行交叉,对象是相邻两个个体
temp = pop_tem(i,j);
pop_tem(i,j) = pop_tem(i+1,j);
pop_tem(i+1,j) = temp;
end

vaild = 1;
if ( pop_tem(i,1)>=aim(1,1)&&pop_tem(i,4)>=aim(1,1)&&pop_tem(i,7)>=aim(1,1) ) || ( pop_tem(i,2)>=aim(1,2)&&pop_tem(i,5)>=aim(1,2)&&pop_tem(i,8)>=aim(1,2) ) || ( pop_tem(i,3)>=aim(1,3)&&pop_tem(i,6)>=aim(1,3)&&pop_tem(i,9)>=aim(1,3) )
vaild = 0;
elseif ( pop_tem(i,1)<=aim(1,1)&&pop_tem(i,4)<=aim(1,1)&&pop_tem(i,7)<=aim(1,1) ) || ( pop_tem(i,2)<=aim(1,2)&&pop_tem(i,5)<=aim(1,2)&&pop_tem(i,8)<=aim(1,2) ) || ( pop_tem(i,3)<=aim(1,3)&&pop_tem(i,6)<=aim(1,3)&&pop_tem(i,9)<=aim(1,3) )
vaild = 0;
elseif (sqrt((pop_tem(i,1)-aim(1,1))2+(pop_tem(i,2)-aim(1,2))2+(pop_tem(i,3)-aim(1,3))2)+sqrt((pop_tem(i,4)-aim(1,1))2+(pop_tem(i,5)-aim(1,2))2+(pop_tem(i,6)-aim(1,3))2)+sqrt((pop_tem(i,7)-aim(1,1))2+(pop_tem(i,8)-aim(1,2))2+(pop_tem(i,9)-aim(1,3))^2))/3 > q
vaild = 0;
elseif( pop_tem(i+1,1)>=aim(1,1)&&pop_tem(i+1,4)>=aim(1,1)&&pop_tem(i+1,7)>=aim(1,1) ) || ( pop_tem(i+1,2)>=aim(1,2)&&pop_tem(i+1,5)>=aim(1,2)&&pop_tem(i+1,8)>=aim(1,2) ) || ( pop_tem(i+1,3)>=aim(1,3)&&pop_tem(i+1,6)>=aim(1,3)&&pop_tem(i+1,9)>=aim(1,3) )
vaild = 0;
elseif ( pop_tem(i+1,1)<=aim(1,1)&&pop_tem(i+1,4)<=aim(1,1)&&pop_tem(i+1,7)<=aim(1,1) ) || ( pop_tem(i+1,2)<=aim(1,2)&&pop_tem(i+1,5)<=aim(1,2)&&pop_tem(i+1,8)<=aim(1,2) ) || ( pop_tem(i+1,3)<=aim(1,3)&&pop_tem(i+1,6)<=aim(1,3)&&pop_tem(i+1,9)<=aim(1,3) )
vaild = 0;
elseif (sqrt((pop_tem(i+1,1)-aim(1,1))2+(pop_tem(i+1,2)-aim(1,2))2+(pop_tem(i+1,3)-aim(1,3))2)+sqrt((pop_tem(i+1,4)-aim(1,1))2+(pop_tem(i+1,5)-aim(1,2))2+(pop_tem(i+1,6)-aim(1,3))2)+sqrt((pop_tem(i+1,7)-aim(1,1))2+(pop_tem(i+1,8)-aim(1,2))2+(pop_tem(i+1,9)-aim(1,3))^2))/3 > q
vaild = 0;
end

if(vaild == 1)
pop = pop_tem;
end

end
end

clear i;
clear j;
clear temp;
clear vaild;
clear cross_pos;
clear pop_temp;
function initilize(pop_size, chromo_size)
global pop;
global aim; %目标点坐标
global q;
vaild = 0;
for i=1:pop_size
for l = 1:10000000;
vaild = 1;
for j=1:chromo_size
pop(i,j) = round(rand()*50);
end
if ( pop(i,1)>=aim(1,1)&&pop(i,4)>=aim(1,1)&&pop(i,7)>=aim(1,1) ) || ( pop(i,2)>=aim(1,2)&&pop(i,5)>=aim(1,2)&&pop(i,8)>=aim(1,2) ) || ( pop(i,3)>=aim(1,3)&&pop(i,6)>=aim(1,3)&&pop(i,9)>=aim(1,3) )
vaild = 0;
elseif ( pop(i,1)<=aim(1,1)&&pop(i,4)<=aim(1,1)&&pop(i,7)<=aim(1,1) ) || ( pop(i,2)<=aim(1,2)&&pop(i,5)<=aim(1,2)&&pop(i,8)<=aim(1,2) ) || ( pop(i,3)<=aim(1,3)&&pop(i,6)<=aim(1,3)&&pop(i,9)<=aim(1,3) )
vaild = 0;
elseif (sqrt((pop(i,1)-aim(1,1))2+(pop(i,2)-aim(1,2))2+(pop(i,3)-aim(1,3))2)+sqrt((pop(i,4)-aim(1,1))2+(pop(i,5)-aim(1,2))2+(pop(i,6)-aim(1,3))2)+sqrt((pop(i,7)-aim(1,1))2+(pop(i,8)-aim(1,2))2+(pop(i,9)-aim(1,3))^2))/3 > q
vaild = 0;
end
if vaild == 1
break;
end;
end
end
clear i;
clear j;
clear l;
clear vaild;
function rank(pop_size, chromo_size)
global fitness_value;
global fitness_table;
global fitness_avg;
global best_fitness;
global best_individual;
global best_generation;
global pop;
global G;

for i=1:pop_size
fitness_table(i) = 0.;
end

min = 1;
temp = 1;
temp1(chromo_size)=0;
for i=1:pop_size
min = i;
for j = i+1:pop_size
if fitness_value(j)<fitness_value(min);
min = j;
end
end
if min~=i
temp = fitness_value(i);
fitness_value(i) = fitness_value(min);
fitness_value(min) = temp;
for k = 1:chromo_size
temp1(k) = pop(i,k);
pop(i,k) = pop(min,k);
pop(min,k) = temp1(k);
end
end

end

for i=1:pop_size
if i==1
fitness_table(i) = fitness_table(i) + fitness_value(i);
else
fitness_table(i) = fitness_table(i-1) + fitness_value(i);
end
end

fitness_avg(G) = fitness_table(pop_size)/pop_size;

if fitness_value(pop_size) > best_fitness
best_fitness = fitness_value(pop_size);
best_generation = G;
for j=1:chromo_size
best_individual(j) = pop(pop_size,j);
end
end

clear i;
clear j;
clear k;
clear min;
clear temp;
clear temp1;

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]刘军.一种混合异构传感网的覆盖洞修补算法[J].控制与决策,2015.

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 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海神之光

有机会获得赠送范围1份代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值