【路径规划】基于改进粒子群实现机器人栅格地图路径规划
1 研究背景
粒子群算法的發(fā)展過程。粒子群優(yōu)化算法(Partical Swarm Optimization PSO),粒子群中的每一個粒子都代表一個問題的可能解,通過粒子個體的簡單行為,群體內(nèi)的信息交互實現(xiàn)問題求解的智能性。由于PSO操作簡單、收斂速度快,因此在函數(shù)優(yōu)化、 圖像處理、大地測量等眾多領(lǐng)域都得到了廣泛的應(yīng)用。 隨著應(yīng)用范圍的擴(kuò)大,PSO算法存在早熟收斂、維數(shù)災(zāi)難、易于陷入局部極值等問題需要解決,主要有以下幾種發(fā)展方向。
1、基本思想
??粒子群算法通過設(shè)計一種無質(zhì)量的粒子來模擬鳥群中的鳥,粒子僅具有兩個屬性:速度和位置,速度代表移動的快慢,位置代表移動的方向。每個粒子在搜索空間中單獨的搜尋最優(yōu)解,并將其記為當(dāng)前個體極值,并將個體極值與整個粒子群里的其他粒子共享,找到最優(yōu)的那個個體極值作為整個粒子群的當(dāng)前全局最優(yōu)解,粒子群中的所有粒子根據(jù)自己找到的當(dāng)前個體極值和整個粒子群共享的當(dāng)前全局最優(yōu)解來調(diào)整自己的速度和位置。下面的動圖很形象地展示了PSO算法的過程:
2、更新規(guī)則
??PSO初始化為一群隨機(jī)粒子(隨機(jī)解)。然后通過迭代找到最優(yōu)解。在每一次的迭代中,粒子通過跟蹤兩個“極值”(pbest,gbest)來更新自己。在找到這兩個最優(yōu)值后,粒子通過下面的公式來更新自己的速度和位置。 公式(1)的第一部分稱為【記憶項】,表示上次速度大小和方向的影響;公式(1)的第二部分稱為【自身認(rèn)知項】,是從當(dāng)前點指向粒子自身最好點的一個矢量,表示粒子的動作來源于自己經(jīng)驗的部分;公式(1)的第三部分稱為【群體認(rèn)知項】,是一個從當(dāng)前點指向種群最好點的矢量,反映了粒子間的協(xié)同合作和知識共享。粒子就是通過自己的經(jīng)驗和同伴中最好的經(jīng)驗來決定下一步的運動。以上面兩個公式為基礎(chǔ),形成了PSO的標(biāo)準(zhǔn)形式。 公式(2)和 公式(3)被視為標(biāo)準(zhǔn)PSO算法。
3、PSO算法的流程和偽代
clc; close all clear load('data4.mat') S=(S_coo(2)-0.5)*num_shange+(S_coo(1)+0.5);%起點對應(yīng)的編號 E=(E_coo(2)-0.5)*num_shange+(E_coo(1)+0.5);%終點對應(yīng)的編號PopSize=20;%種群大小 OldBestFitness=0;%舊的最優(yōu)適應(yīng)度值 gen=0;%迭代次數(shù) maxgen =200;%最大迭代次數(shù)c1=0.5;%認(rèn)知系數(shù) c2=0.7;%社會學(xué)習(xí)系數(shù) c3=0.2;%反向因子 w=0.96;%慣性系數(shù) %% %初始化路徑 w_min=0.5; w_max=1; Group=ones(num_point,PopSize); %種群初始化 flag=1;%最優(yōu)解 figure(3) hold on for i=1:num_shangefor j=1:num_shangeif sign(i,j)==1y=[i-1,i-1,i,i];x=[j-1,j,j,j-1];h=fill(x,y,'k');set(h,'facealpha',0.5)ends=(num2str((i-1)*num_shange+j));text(j-0.95,i-0.5,s,'fontsize',6)end end axis([0 num_shange 0 num_shange])%限制圖的邊界 plot(S_coo(2),S_coo(1), 'p','markersize', 10,'markerfacecolor','b','MarkerEdgeColor', 'm')%畫起點 plot(E_coo(2),E_coo(1),'o','markersize', 10,'markerfacecolor','g','MarkerEdgeColor', 'c')%畫終點 set(gca,'YDir','reverse');%圖像翻轉(zhuǎn) for i=1:num_shangeplot([0 num_shange],[i-1 i-1],'k-');plot([i i],[0 num_shange],'k-');%畫網(wǎng)格線 end for i=2:index1Q1=[mod(route_lin(i-1)-1,num_shange)+1-0.5,ceil(route_lin(i-1)/num_shange)-0.5];Q2=[mod(route_lin(i)-1,num_shange)+1-0.5,ceil(route_lin(i)/num_shange)-0.5];plot([Q1(1),Q2(1)],[Q1(2),Q2(2)],'r','LineWidth',3) end title('改進(jìn)后的粒子群算法-最優(yōu)路線');%進(jìn)化曲線 figure(4); plot(BestFitness); xlabel('迭代次數(shù)') ylabel('適應(yīng)度值') grid on; title('改進(jìn)后的進(jìn)化曲線'); disp('改進(jìn)后的粒子群算法-最優(yōu)路線方案:') disp(num2str(route_lin)) disp(['起點到終點的距離:',num2str(BestFitness(end))]); figure(5); plot(BestFitness*100); xlabel('迭代次數(shù)') ylabel('適應(yīng)度值') grid on; title('改進(jìn)后的最佳個體適應(yīng)度值變化趨勢');?
總結(jié)
以上是生活随笔為你收集整理的【路径规划】基于改进粒子群实现机器人栅格地图路径规划的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cocos2d-Html5--打怪升级之
- 下一篇: 河北工业大学c语言寻宝游戏,计算机技术基