91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 4KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-02
  • 語言: 其他
  • 標簽: matlab??路徑規劃??

資源簡介

Lazy_Theta_star是在 Theta_star上的進一步改進,Theta_star是當節點加入open表時和當前點的父節點進行比較g值是否更小,對一些不必要的節點計算浪費了時間,而Lazy_Theta_star則是在彈出open表后進行比較,減少了不必要點的計算。

資源截圖

代碼片段和文件信息

function?Lazy_Theta_star
clc;
clear;
%%?初始化界面
%load?maze.mat?map
?n?=?20;???%?field?size?n?x?n?tiles??20*20的界面
%wallpercent?=?0.3;??%?this?percent?of?field?is?walls???15%的界面作為阻礙物(墻)
cmap?=?[1?1?1;?...%??1?-?white?-?空地
????????0?0?0;?...%?2?-?black?-?障礙?
????????1?0?0;?...%?3?-?red?-?已搜索過的地方
????????0?0?1;?...%?4?-?blue?-?下次搜索備選中心?
????????0?1?0;?...%?5?-?green?-?起始點
????????1?1?0;...%?6?-?yellow?-??到目?標點的路徑?
???????1?0?1];%?7?-?-??目標點?
colormap(cmap);?
global?field
field=?ones(n);
startposind?=22;???%sub2ind用來將行列坐標轉換為線性坐標,這里是必要的,因為如果把startposind設置成[xy]的形式,訪問field([xy])的時候
goalposind?=86;????%它并不是訪問x行y列元素,而是訪問線性坐標為x和y的兩個元素
?%field(ceil(n^2.*rand(floor(n*n*wallpercent)1)?))?=2;
field(1:5?7)?=?2;
field(81:3)?=?2;?
field(3:51:5)=2;
field(54)=2;
%?startposind?=?sub2ind([nn]ceil(n.*rand)ceil(n.*rand));???%sub2ind用來將行列坐標轉換為線性坐標,這里是必要的,因為如果把startposind設置成[xy]的形式,訪問field([xy])的時候
%goalposind?=?sub2ind([nn]ceil(n.*rand)ceil(n.*rand));????%它并不是訪問x行y列元素,而是訪問線性坐標為x和y的兩個元素
field(startposind?)=5;
field(goalposind?)=7;
costchart?=?NaN*ones(n);??????%costchart用來存儲各個點的實際代價,NaN代表不是數據(不明確的操作)
costchart(startposind)?=?0;?????%起點的實際代價
fieldpointers?=?zeros(n);?%fieldpointers用來存儲節點的父節點
global?setOpenCosts;
setOpen?=?(startposind);?setOpenCosts?=?(0);?setOpenHeuristics?=?(Inf);
setClosed?=?[];?setClosedCosts?=?[];%初始化起點的open表和close表
?[goalpos(1)?goalpos(2)]?=?ind2sub([n?n]goalposind);?
%?uicontrol(‘style‘‘pushbutton‘‘String‘‘RE-DO‘?‘FontSize‘12?...
%??????????‘Position‘?[10?10?60?40]?‘Callback‘‘ASTAR‘);

tic
while?true?%ismember(AB)返回與A同大小的矩陣,其中元素1表示A中相應位置的元素在B中也出現,0則是沒有出現
???????field(startposind?)=5;
???????field(goalposind?)=7;
???????image(1.51.5field);?
???????set(gca‘gridline‘‘-‘‘gridcolor‘‘y‘‘linewidth‘2‘GridAlpha‘0.5);
???????set(gca‘xtick‘1:1:21‘ytick‘1:1:21);
???????grid?on;?
???????axis?image;?
???????drawnow;
??????if(max(ismember(setClosedgoalposind)))?
??????????break;
??????end;????
??????[~?ii]?=?min(setOpenCosts?+?setOpenHeuristics);???%從OPEN表中選擇花費最低的點tempii是其下標(也就是標號索引)

??????field(setOpen(ii))=3;
?????[currentpos(1)?currentpos(2)]?=?ind2sub([n?n]setOpen(ii));
?????if?fieldpointers(setOpen(ii))~=0
??????if?fieldpointers(fieldpointers(setOpen(ii)))~=0
??????????trued=lineofsight(nfieldpointers(fieldpointers(setOpen(ii)))setOpen(ii));
??????????if(trued)
??????????????id=find(setClosed==fieldpointers(fieldpointers(setOpen(ii))));
??????????????[parent_postion_xparent_position_y]=ind2sub([nn]setClosed(id));
??????????????if?setOpenCosts(ii)>=setClosedCosts(id)+sqrt(power((parent_postion_x-currentpos(1))2)+power((parent_position_y-currentpos(2))2))
????????????????????fieldpointers(setOpen(ii))?=?fieldpointers(fieldpointers(setOpen(ii)))?;?%將此點的方向存在對應的fieldpointers中

????????????????????setOpenCosts(ii)=setClosedCosts(id)+sqrt(power((parent_postion_x-currentpos(1))2)+power((parent_position_y-currentpos(2))2));
??????????????end
????????

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????11332??2019-04-28?15:06??Lazy_Theta_star.m

評論

共有 條評論