999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于A星算法的游戲路徑優化應用

2017-06-22 13:45:24孫玉霞樊質軍
關鍵詞:游戲

孫玉霞,樊質軍

(湖北師范大學 計算機科學與技術學院 ,湖北 黃石 435002)

一種基于A星算法的游戲路徑優化應用

孫玉霞,樊質軍

(湖北師范大學 計算機科學與技術學院 ,湖北 黃石 435002)

A*算法作為游戲中解決尋路問題的主要搜索算法,本文討論了A*算法的基本原理,交代了其在游戲尋路過程中的作用及缺陷,并在A*算法基礎上添加了一個對障礙預處理的方案,用一個destination集合,使角色能順利地繞開障礙,減少搜索不必要的障礙所用的額外內存空間和運行時間,從而更加智能地到達目標結點。實驗仿真證明了該算法的有效性和可行性。

A*算法;啟發式函數;路徑優化;預處理功能

尋路作為游戲中的基本問題之一,即角色按照程序指定的合適的路徑從地圖的A點抵達B點,根據角色對周圍環境了解程度的不同,可分為兩種類型:全局路徑規劃方法和完全未知或部分未知的局部路徑規劃方法[1]。而在此基礎上,發展了許多以啟發式算法為核心的智能算法,包括A*算法、D*算法、遺傳算法、模擬退火算法和蟻群算法[2~5]。

啟發式的A*搜索算法作為路徑優化和路徑搜索的經典方法,在戰略性游戲中都是以此為基礎來進行尋路的,雖然相對于那些老式的搜索算法,比如深度優先搜索算法,廣度優先搜索算法,Dijkstra搜索算法[6~8],在時間復雜度和空間復雜度要好的很多,但是A*搜索算法本身也存在不足,尤其是在搜索過程中出現前方障礙的問題,雖然啟發式A*搜索算法可以在搜索的過程中有“方向”地往終點尋路過去,但是當遇到障礙時,也會在障礙周圍進行搜索,即做了許多無用功的結點搜索,因為障礙阻擋了前方A*搜索的道路,國內外的學者也對此進行了大量的研究,例如:王善坤等[9]根據改進的人工勢場法讓繞過障礙的曲線更加平滑,但是依然需要在障礙周圍進行搜索;蔡方方等[10]根據雙層A*算法進行二次搜索來繞過障礙,雖然可以避開了障礙,但是增加了額外A*算法搜索時間;高慶吉等[11]引入了“人工搜索標記”,起到預先判斷或者逃離障礙物的作用,但是依然需要對障礙周圍進行無用功結點的搜索預處理。綜上所述,雖然目前學者們做出了許多研究,但是依然存在搜索過程中無用功結點的出現,本文在A*算法的基礎上,并在A*算法搜索的過程中,添加了一個對障礙預處理的方案,并且額外添加一個destination集合,使角色能順利地繞開障礙,減少搜索所用的額外內存空間,從而更加智能地到達目標結點。所做的仿真實驗結果中也證明了改進后算法的合理性和可行性。

1 基于A*算法的搜索規劃

1.1 A*搜索算法

啟發式A*搜索算法,顧名思義,就是有啟發地尋找目標結點,并且在基于最小的成本下,盡可能地找到通向目標點的最合適并且最短的路徑。

為了達到啟發的目的,與一般的搜索算法不同,可以看圖1和圖2對比,在A*算法中,十分奇妙的設計了一個估價函數,這是最主要的部分:

f(n)=g(n)+h(n)

其中f(n)是從當前結點展開(一般在網格中是八個方向)搜索出來的結點的估價值,g(n)表示從當前結點到預處理搜索點的估價值,h(n)則表示預處理的結點中與目標點的估價值。

A*算法的尋路步驟如下(其中open集合列表表示預處理但未訪問的結點,close集合列表則表示已經訪問過的結點):

1)從起點start開始, 把它作為一個結點首先放入open集合列表中。

2)同時預處理start起點的周圍結點,一般在網格中是8個方位,并且把這8個方位的父節點設置為該start結點。

3) 當周圍結點搜索完畢后,將start結點從open集合列表中刪除,同時放入close集合列表中。

4)先檢查預處理的這些點,是否是“可用結點”(不是障礙或者不在close集合列表中),當確認是可用結點,則計算那些預處理結點的f,g,h的值,同時在計算的過程中比較大小,將最小的結點排在open集合列表中,方便下一步使用。

5)如果某個預處理結點已經在open集合列表中了, 檢查如果用新的路徑時此時的估價函數是否更低,如果是,則更新,更新的同時也需要適當調整下大小排序,否則不更新。

6)判斷該相鄰方格是否為終點,不是的話重復第4,5步,是的話就結束程序,并且根據之前每個結點存在的父節點,回溯標記,找到終點,并且輸出路徑,結束程序。

圖1 一般搜索算法的預處理搜索范圍

1.2 傳統啟發式A*搜索算法的不足

在A*中算法中,最重要的就是啟發式函數的選取,不同的啟發式函數會造成不同搜索范圍,搜索范圍越小,搜索路徑越精確,造成的誤差就會越少。但是當前方存在障礙時,會出現許多無意義的搜索,引起繞道或者原路返回,則花費大量不必要的時間和空間,如圖3 .

圖3 A*算法遇障礙時搜索范圍

2 針對A*算法不足的改進方案及思路

基本思路:在小人尋路的過程中,自動繞開前方的障礙物,避免走進復雜或者特殊地形,從而避免搜索更多無意義的結點,達到搜索范圍更小,確定目標更精確的效果。具體思路如下:

1)利用局部障礙檢測方法對最近障礙物進行預處理

在搜索過程中將可能遇到的障礙進行預處理功能,從而使小人在尋路過程中,自動避開障礙物,避免無意義的搜索。在障礙物的預處理上,為避免浪費大量時間,采用目標點局部障礙檢測方法,即當朝向目標點的前方出現障礙的時候(如圖4,圖5),取最近的障礙并且檢測,在程序中,可以將小人和目標點連成。

圖4 小人尋路時所遇障礙

一條直線,從小人這個點往目標點作一個射線,一旦該射線有障礙,那么就檢測到了障礙,并且將該障礙物做預處理,如果該射線沒有遇到障礙,就說明前方通暢無阻,就可以筆直地往目標點走去了。

2) 以兩個邊界結點坐標確定障礙位置并進行存儲

為了用盡可能小的內存來存儲障礙的坐標結點,只需要存下兩個邊界點的坐標(當然,也可以存下大于兩個的邊界點坐標),其中邊界點的特點就是,除了一個方向,其他方向都沒有相應的障礙。

3) 添加destination列表,表示目標結點集合

確定了障礙的邊界點以后(邊界點可以有多個點,為了方便起見,設兩個障礙邊界點為A點和B點,并且O點為小人所在點,C點是最終的終點),然后需要計算OA+AC和OB+BC的繞行距離,但是無論是曼哈頓距離,還是對角線距離,或者是歐幾里得距離,都比繞行距離要小,并且距離差會隨著目標障礙物的增大而增大。此時增加一個destination目標節點列表,表示目標節點集合,此列表操作的順序是先進先出,利用此方法會優先找到繞開障礙的一個出口點,出口點就是當前的目標點。假設此時B點是出口點即目標點,那么將B點先壓入destination列表中,由于到B點的路暢通無阻,所以小人將迅速找到B點,并且完美地繞開了障礙物,此時B點出棧,目標點變為了原終點C點,再繼續搜索找到C點,將C點出棧,此時destination列表中沒有任何集合,小人尋路完成,至此程序結束。

圖6 傳統A*算法搜索范圍

3 實驗仿真分析

實驗仿真的硬件環境:Inter(R) Core(TM) i5-4200 CPU @ 1.60GHz 2.30GHz,內存為4GB;操作系統為Microsoft Windows 8.1;仿真系統開發平臺為:Dev-cpp5.4.0;

實驗仿真環境為仿真軟件生成的50×50的網格地圖,如圖6和如圖8所示。其中s代表起點,A代表所預處理搜索的結點,x代表障礙,小點則代表可通行的路徑,d代表終點。首先,圖6中,仿真實驗很好的驗證了前文1.2中A*算法在遇到障礙時的不足,即雖然有啟發式地向目標點尋去,但是也要在阻礙它的障礙周圍進行預處理搜索。圖7中運用了改進后的方法,可以明顯看出預處理搜索的范圍減少了。圖8中,加入了多種復雜障礙,也能很明顯的看出,當障礙復雜,起始點與目標點距離遠時,A*算法這一不足突出地更加明顯,為了讓讀者分辨清楚,用紅色框框著的區域代表障礙。圖9中,當我們運用了改進后的A*算法時,更加可以明顯地看出,搜索預處理的結點數大大減少,并且也同時更加智能地繞開了障礙,最終達到目標點。從上面的仿真實驗結果可以看出,該改進后的A*算法較傳統的A*算法,預處理的搜索范圍明顯減少,也更加智能地繞開了障礙,大大提升了性能。

圖8 傳統A*算法在多障礙下的搜索范圍

4 結語

本文在基于A*算法的基礎上,添加了對就近障礙預處理找出邊界出口的方案,并且結合一個destination集合,結合這三種方法,改進了傳統A*算法在游戲中的運用,即解決了前方出現障礙時(特別在障礙擁有特殊地形的情況下),出現許多無用功搜索結點,從而消耗額外內存,大大減少了對額外內存的消耗;同時,也為游戲中小人在尋找較遠目標點時,減少了所消耗的額外時間(如轉向問題),仿真實驗也證明了該改進算法的可行性和真實性。從而使小人在繞開障礙時變得更加智能化,同時也讓游戲變得更加流暢,大大提升了游戲的品質,也給玩家在游戲中帶來更好的體驗。

[1]莊慧忠,社樹新,吳鐵軍.機器人路徑規劃及相關算法研究[J].科技通報,2004,20(3):210~215.

[2]陳和平,張前哨.A*算法在游戲地圖尋徑中的應用與實現[J].計算機應用與軟件,2005, 22(12):118~120.

[3]Stentz A.Optimal and efficient path planning for partially-known environments[C].Proceedings of the IEEE International Conference on Robotics and Automation. San Diego, Carlifonia, USA,1994:3310~3317.

[4]Gemeinder M,Gerke M.GA-based path planning for mobile robot systems employing an active search algorithm[J].Applied Soft Computing, 2003, A3:149~158.

[5]Dorigo M,Maniezzo V,Colorni A. Ant system:optimization by a colony of cooperating agent[J].IEEE Transactions on Systems Man and Cybernetics, 1996,26(1):29~41.

[6]田翠華,許衛平,陳玉明.深度優先遍歷算法、隨機布點法及回溯法在迷宮游戲中的應用[J].河北北方學院學報(自然科學版), 2013, 29(3):19~24.

[7]盧啟衡,馮曉紅.基于寬度優先搜索的路徑生成算法[J].現代計算機:專業版,2006(12):87~89.

[8]蔚潔,楊懷雷,成汝震.基于Dijkstra算法的最優路徑搜索方法[J]. 河北師范大學學報(自然科學版),2008,32(5):590~593.

[9]王善坤,張治海.一種混合算法在游戲尋徑中的應用[J].電子設計工程,2016(19):22~24.

[10]蔡方方,楊士穎,張小鳳等.雙層A_算法在游戲尋路方面的研究[J].微電腦應用,2010,6(1):26~28.

[11]高慶吉,于詠生,胡丹丹.基于改進A*算法的可行性路徑搜索及優化[J].中國民航學院學報,2005,23(4):42~45.

A game path optimization application based on A* algorithm

SUN Yu-xia,FAN Zhi-jun

(College of Computer Science and Technology, Hubei Normal University,Huangshi 435002, China)

A* algorithm is the main search algorithm to solve the problem of pathfinding in the game, this paper discusses the basic principle of A* algorithm, explains its functions and defects in the process of finding the game, and based on A* algorithm adds a scheme of obstacle pretreatment, with a collection of destination, the role can avoid obstacles successfully, to reduce the extra memory space and run time used to search for unnecessary obstacles, and thus more intelligently to reach the target node. The simulation results show the effectiveness and feasibility of the algorithm.

A* algorithm; heuristic function; path optimization; preprocessing function

湖北省教育廳重點項目(D20162501)

2017—01—05

孫玉霞(1976— ),湖北黃岡人,碩士,副教授。

TP301.6

A

2096-3149(2017)02- 0072-05

10.3969/j.issn.2096-3149.2017.02.016

猜你喜歡
游戲
做游戲
夜間游戲
游戲
送信游戲
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
第八章 直接逃出游戲
小學科學(2015年6期)2015-07-01 14:30:14
游戲五計算
主站蜘蛛池模板: 美女内射视频WWW网站午夜| 久久中文字幕不卡一二区| 国产欧美精品专区一区二区| 亚洲人成高清| 免费看久久精品99| 久久semm亚洲国产| 日本免费福利视频| 亚洲第一极品精品无码| 色噜噜狠狠狠综合曰曰曰| 一本综合久久| 好久久免费视频高清| 成人午夜视频网站| 91视频精品| 日本影院一区| 亚洲无码视频一区二区三区| 亚洲aaa视频| 日韩不卡免费视频| 高清国产va日韩亚洲免费午夜电影| 最新国产成人剧情在线播放| 国产jizz| 国产高清无码第一十页在线观看| 亚洲第一香蕉视频| 免费无码网站| 日本高清免费不卡视频| 九九视频免费看| 在线国产三级| 黄片一区二区三区| 99久久精品国产自免费| 久久黄色小视频| 欧美一级高清片久久99| 大陆精大陆国产国语精品1024| 国产无码精品在线播放 | 国内精品久久久久鸭| 国产激爽大片高清在线观看| 四虎永久免费网站| 色综合天天视频在线观看| 欧美人在线一区二区三区| 亚洲日韩AV无码一区二区三区人| 国产福利在线免费| 亚洲欧美精品一中文字幕| 色综合久久久久8天国| 无码国产伊人| 久久久久无码国产精品不卡| 亚洲人成人无码www| 免费人成视网站在线不卡| 激情五月婷婷综合网| 高清码无在线看| 国产成人精品在线| 69免费在线视频| 亚洲人成亚洲精品| 欧美精品v欧洲精品| 国产香蕉在线视频| 亚洲第一成年网| 欧美激情视频一区| 最新国产午夜精品视频成人| 久久人搡人人玩人妻精品一| 亚洲中文字幕23页在线| 国产成人无码综合亚洲日韩不卡| 欧美三级日韩三级| 久久国产精品无码hdav| 亚洲精品国产成人7777| 成人国产精品2021| 欧美精品1区| 欧洲av毛片| 2024av在线无码中文最新| 欧美成人A视频| 国产乱子伦手机在线| 亚洲精品波多野结衣| 一级毛片在线免费视频| 在线日本国产成人免费的| 欧美成人区| 丰满人妻一区二区三区视频| 亚洲视频一区| 91人妻日韩人妻无码专区精品| 亚洲高清无在码在线无弹窗| 中国精品自拍| 无码网站免费观看| 欧美午夜网站| 中字无码av在线电影| 亚洲成人福利网站| 在线观看国产精美视频| 久久综合久久鬼|