歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

錯誤的基于遺傳算法的機器人路徑規(guī)劃MATLAB源碼,求高人指點

  • 資源ID:58131873       資源大小:24KB        全文頁數(shù):8頁
  • 資源格式: DOC        下載積分:0積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要0積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付說明:
本站最低充值0.01積分,下載本資源后余額將會存入您的賬戶,您可在我的個人中心查看。
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

錯誤的基于遺傳算法的機器人路徑規(guī)劃MATLAB源碼,求高人指點

基于遺傳算法的機器人路徑規(guī)劃MATLAB源碼算法的思路如下:取各障礙物頂點連線的中點為路徑點,相互連接各路徑點,將機器人移動的起點和終點限制在各路徑點上,利用Dijkstra算法來求網(wǎng)絡圖的最短路徑,找到從起點P1到終點Pn的最短路徑,由于上述算法使用了連接線中點的條件,不是整個規(guī)劃空間的最優(yōu)路徑,然后利用遺傳算法對找到的最短路徑各個路徑點Pi (i=1,2,n)調整,讓各路徑點在相應障礙物端點連線上滑動,利用Pi= Pi1+ti×(Pi2-Pi1)(ti0,1 i=1,2,n)即可確定相應的Pi,即為新的路徑點,連接此路徑點為最優(yōu)路徑。function L1,XY1,L2,XY2=JQRLJGH(XX,YY)% 基于Dijkstra和遺傳算法的機器人路徑規(guī)劃演示程序%輸入?yún)?shù)在函數(shù)體內部定義%輸出參數(shù)為%  L1    由Dijkstra算法得出的最短路徑長度%  XY1   由Dijkstra算法得出的最短路徑經(jīng)過節(jié)點的坐標%  L2    由遺傳算法得出的最短路徑長度%  XY2   由遺傳算法得出的最短路徑經(jīng)過節(jié)點的坐標%程序輸出的圖片有%  Fig1  環(huán)境地圖(包括:邊界、障礙物、障礙物頂點之間的連線、Dijkstra的網(wǎng)絡圖結構)%  Fig2  由Dijkstra算法得到的最短路徑%  Fig3  由遺傳算法得到的最短路徑%  Fig4  遺傳算法的收斂曲線(迄今為止找到的最優(yōu)解、種群平均適應值)% 畫Fig1figure(1);PlotGraph;title('地形圖及網(wǎng)絡拓撲結構')PD=inf*ones(26,26);for i=1:26    for j=1:26        if D(i,j)=1            x1=XY(i,5);            y1=XY(i,6);            x2=XY(j,5);            y2=XY(j,6);            dist=(x1-x2)2+(y1-y2)2)0.5;            PD(i,j)=dist;        end    endend% 調用最短路算法求最短路s=1;%出發(fā)點t=26;%目標點L,R=ZuiDuanLu(PD,s,t);L1=L(end);XY1=XY(R,5:6);% 繪制由最短路算法得到的最短路徑figure(2);PlotGraph;hold onfor i=1:(length(R)-1)    x1=XY1(i,1);    y1=XY1(i,2);    x2=XY1(i+1,1);    y2=XY1(i+1,2);    plot(x1,x2,y1,y2,'k');    hold onendtitle('由Dijkstra算法得到的初始路徑')% 使用遺傳算法進一步尋找最短路%第一步:變量初始化M=50;%進化代數(shù)設置N=20;%種群規(guī)模設置Pm=0.3;%變異概率設置LC1=zeros(1,M);LC2=zeros(1,M);Yp=L1;%第二步:隨機產(chǎn)生初始種群X1=XY(R,1);Y1=XY(R,2);X2=XY(R,3);Y2=XY(R,4);for i=1:N    farmi=rand(1,aaa);end% 以下是進化迭代過程counter=0;%設置迭代計數(shù)器while counter<M%停止條件為達到最大迭代次數(shù)        % 第三步:交叉    %交叉采用雙親雙子單點交叉    newfarm=cell(1,2*N);%用于存儲子代的細胞結構    Ser=randperm(N);%兩兩隨機配對的配對表    A=farmSer(1);%取出父代A    B=farmSer(2);%取出父代B    P0=unidrnd(aaa-1);%隨機選擇交叉點    a=A(:,1:P0),B(:,(P0+1):end);%產(chǎn)生子代a    b=B(:,1:P0),A(:,(P0+1):end);%產(chǎn)生子代b    newfarm2*N-1=a;%加入子代種群    newfarm2*N=b;    for i=1:(N-1)        A=farmSer(i);        B=farmSer(i+1);        newfarm2*i=b;    end    FARM=farm,newfarm;%新舊種群合并        % 第四步:選擇復制    SER=randperm(2*N);    FITNESS=zeros(1,2*N);    fitness=zeros(1,N);    for i=1:(2*N)        PP=FARMi;        FITNESS(i)=MinFun(PP,X1,X2,Y1,Y2);%調用目標函數(shù)    end    for i=1:N        f1=FITNESS(SER(2*i-1);        f2=FITNESS(SER(2*i);        if f1<=f2        else            farmi=FARMSER(2*i);            fitness(i)=FITNESS(SER(2*i);        end    end        %記錄最佳個體和收斂曲線    minfitness=min(fitness);    meanfitness=mean(fitness);    if minfitness<Yp        pos=find(fitness=minfitness);        Xp=farmpos(1);        Yp=minfitness;    end    if counter=10        PPP=0.5,Xp,0.5'        PPPP=1-PPP;        X=PPP.*X1+PPPP.*X2;        Y=PPP.*Y1+PPPP.*Y2;        XY2=X,Y;        figure(3)        PlotGraph;        hold on        for i=1:(length(R)-1)            x1=XY2(i,1);            y1=XY2(i,2);            x2=XY2(i+1,1);            y2=XY2(i+1,2);            plot(x1,x2,y1,y2,'k');            hold on        end        title('遺傳算法第10代')        hold on        for i=1:(length(R)-1)            x1=XY1(i,1);            y1=XY1(i,2);            x2=XY1(i+1,1);            y2=XY1(i+1,2);            plot(x1,x2,y1,y2,'k','LineWidth',1);            hold on        end    end        if counter=20        PPP=0.5,Xp,0.5'        PPPP=1-PPP;        X=PPP.*X1+PPPP.*X2;        Y=PPP.*Y1+PPPP.*Y2;        XY2=X,Y;        figure(4)        PlotGraph;        hold on        for i=1:(length(R)-1)            x1=XY2(i,1);            y2=XY2(i+1,2);            plot(x1,x2,y1,y2,'k');            hold on        end        title('遺傳算法第20代')        hold on        for i=1:(length(R)-1)            x1=XY1(i,1);            y1=XY1(i,2);            x2=XY1(i+1,1);            y2=XY1(i+1,2);            plot(x1,x2,y1,y2,'k','LineWidth',1);            hold on        end    end    if counter=30        PPP=0.5,Xp,0.5'        PPPP=1-PPP;        X=PPP.*X1+PPPP.*X2;        Y=PPP.*Y1+PPPP.*Y2;        XY2=X,Y;        figure(5)        PlotGraph;        hold on        for i=1:(length(R)-1)            x1=XY2(i,1);            y1=XY2(i,2);            x2=XY2(i+1,1);            y2=XY2(i+1,2);            plot(x1,x2,y1,y2,'k');            hold on        end        title('遺傳算法第30代')        hold on        for i=1:(length(R)-1)            x1=XY1(i,1);            y2=XY1(i+1,2);            plot(x1,x2,y1,y2,'k','LineWidth',1);            hold on        end    end    if counter=40        PPP=0.5,Xp,0.5'        PPPP=1-PPP;        X=PPP.*X1+PPPP.*X2;        Y=PPP.*Y1+PPPP.*Y2;        XY2=X,Y;        figure(6)        PlotGraph;        hold on        for i=1:(length(R)-1)            x1=XY2(i,1);            y1=XY2(i,2);            x2=XY2(i+1,1);            y2=XY2(i+1,2);            plot(x1,x2,y1,y2,'k');            hold on        end        title('遺傳算法第40代')        hold on        for i=1:(length(R)-1)            x1=XY1(i,1);            y1=XY1(i,2);            x2=XY1(i+1,1);            y2=XY1(i+1,2);            plot(x1,x2,y1,y2,'k','LineWidth',1);            hold on        end    end    if counter=50        PPP=0.5,Xp,0.5'        PPPP=1-PPP;        X=PPP.*X1+PPPP.*X2;        Y=PPP.*Y1+PPPP.*Y2;        XY2=X,Y;        figure(7)        PlotGraph;        hold on        for i=1:(length(R)-1)            x1=XY2(i,1);            y1=XY2(i,2);            x2=XY2(i+1,1);            y2=XY2(i+1,2);            plot(x1,x2,y1,y2,'k');            hold on        end        title('遺傳算法第50代')        hold on        for i=1:(length(R)-1)            x1=XY1(i,1);            y1=XY1(i,2);            x2=XY1(i+1,1);            y2=XY1(i+1,2);            plot(x1,x2,y1,y2,'k','LineWidth',1);            hold on        end    end        LC2(counter+1)=Yp;    LC1(counter+1)=meanfitness;        % 第五步:變異    for i=1:N        if Pm>rand&&pos(1)=i            AA=farmi;            AA(POS)=rand;            farmi=AA;        end    end        counter=counter+1;    disp(counter);end% 輸出遺傳算法的優(yōu)化結果PPP=0.5,Xp,0.5'PPPP=1-PPP;X=PPP.*X1+PPPP.*X2;Y=PPP.*Y1+PPPP.*Y2;XY2=X,Y;L2=Yp;% 繪制Fig3figure(8)PlotGraph;hold onhold onfor i=1:(length(R)-1)    x1=XY1(i,1);    y1=XY1(i,2);    x2=XY1(i+1,1);    y2=XY1(i+1,2);    plot(x1,x2,y1,y2,'k','LineWidth',1);    hold onendfor i=1:(length(R)-1)    x1=XY2(i,1);    y1=XY2(i,2);    x2=XY2(i+1,1);    y2=XY2(i+1,2);    plot(x1,x2,y1,y2,'k');    hold onendtitle('遺傳算法最終結果')figure(9)PlotGraph;hold onfor i=1:(length(R)-1)    x1=XY1(i,1);    y1=XY1(i,2);    x2=XY1(i+1,1);    y2=XY1(i+1,2);    plot(x1,x2,y1,y2,'k','LineWidth',1);    hold onendhold onfor i=1:(length(R)-1)    x1=XY2(i,1);    y1=XY2(i,2);    x2=XY2(i+1,1);    y2=XY2(i+1,2);    plot(x1,x2,y1,y2,'k','LineWidth',2);    hold onendtitle('遺傳算法優(yōu)化前后結果比較')% 繪制Fig4figure(10);plot(LC1);hold onplot(LC2);xlabel('迭代次數(shù)');title('收斂曲線');

注意事項

本文(錯誤的基于遺傳算法的機器人路徑規(guī)劃MATLAB源碼,求高人指點)為本站會員(細水****9)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!