簡體   English   中英

如何在A *啟發式中添加比僅距離更多的參數?

[英]How to add more parameters to A* heuristic than only distance?

對於小型2D游戲中的尋路,我現在使用A *算法,該算法基於簡單的歐氏距離啟發式算法。 我的游戲世界被表示為由障礙物占據或未被障礙物占據的網格。 必須使用A *計算路徑的字符可以朝任何方向移動(如果未被阻止),而不僅限於N / E / S / W。

好的,這樣基本上可以正常工作。 現在,我需要向A *啟發式函數添加另一個參數,該參數值綁定到每個網格單元。 該成本值越高,我們的角色越應該嘗試避免使用該單元格。

但是,我無法更改試探函數以僅使用每個網格單元的成本值,因為單元到A *目標位置的距離仍然很重要。 角色應盡量避免使用任何高成本的格,但同時也不得距離目標位置太遠。 因此,我需要在單元格的距離與其成本值之間進行某種“權衡”。

理想情況下,我想找到一種解決方案,使我能夠輕松地調整/優化單元格距離與其成本值之間的這種關系,以便微調啟發式方法。

任何想法如何實現這一目標?

使用任何最短路徑算法(A *或Dijkstrs)時,每個節點都需要一個成本值。
因此,您必須為自己想一個公式,該公式如何結合距離(您的單元格)和障礙物成本。
您可以創建一個cost()函數,該函數采用長度成本加上障礙成本。

您需要使用權重(0到1之間的值),假設w是離散權重,而1-w是成本權重,那么您的新指標將是:H = w *距離+(1-w)*成本

現在,您需要根據域來優化W。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM