• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: Matlab
  • 标签: MATLAB  

资源简介

模拟清扫机器人搜寻垃圾,以MATLAB作为仿真环境,实现算法设计

资源截图

代码片段和文件信息

clear all
close all
clc
global Minesweeper Mine Input maxTicks innum midnum outnum
maxTicks=2000;
K_No=30;
Minesweeper=0+(100-0)*rand(K_No2); %初始化K_No个清扫机器人的位置,位置坐标为0-100之间的随机数
Mine=0+(100-0)*rand(402);           %初始化40个垃圾的位置,位置坐标为0-100之间的随机数
for i=1:K_No
    for j=1:40
     dist(ij)=sqrt((Minesweeper(i1)-Mine(j1)).^2+(Minesweeper(i2)-Mine(j2)).^2);  %求30个清扫机器人与40个垃圾之间的距离
    end
end
[OrderIndex]=min(dist[]2);  %求每个清扫机器人与最近的地雷的距离和最近垃圾的位置的标号
ClosestMine=Mine(Index:);   %找出与清扫机器人最接近的垃圾的位置
m_vLookAt=rands(K_No2);  %将清扫机器人初始视线方向,未归一化
Input=normalized_ch(m_vLookAtClosestMineMinesweeper);%归一化
innum=4;     %输入层、隐含层、输出层的各神经元个数
midnum=8;
outnum=2;
CodeL=innum*midnum+midnum*1+midnum*outnum+outnum*1;   %总的神经元的个数
MAXGEN=20;%迭代次数
Size=K_No; %群体大小    即为小车设置30个不同的运动轨迹
FieldDD=rep([-1;1][1CodeL]);
Chrom=crtrp(SizeFieldDD);     %创建初始权值阈值
%% 遗传算法适应性分数计算部分,适应性分数即目标函数值
ObjV=zeros(Size1);   %小车初始适应性分数为0
ObjV=fun_ch(Chrom);
%%  
gen=0;
while gen    FitnV=ranking(ObjV);  
    SelCh=select(‘rws‘ChromFitnV1);    %选择
    SelCh=recombin(‘recdis‘SelCh0.7);  %交叉
    SelCh=mutate(‘mutbga‘SelChFieldDD);  %变异
    ObjVOff=fun_ch(SelCh);  %计算子代目标函

评论

共有 条评论