資源簡介
模擬清掃機器人搜尋垃圾,以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);??%計算子代目標函
評論
共有 條評論