大量編輯這個問題,使其更容易理解。探索算法
給定一個具有任意尺寸和任意數量障礙物的任意定位的環境,我有一個代理人以有限範圍的視線探測環境(障礙物不會阻擋視線)。它可以在NSEW的四個基本方向上移動,一次一個單元格,並且圖形未加權(每個步驟的成本爲1)。下面鏈接的是一張地圖,表示代理人(黃傢伙)在計劃時刻對環境的當前信念。在代理計劃時,時間不會通過模擬。
http://imagizer.imageshack.us/a/img913/9274/qRsazT.jpg
我可以使用哪些探索算法最大限度地考慮到重新審視細胞被允許公用事業的成本效益,?每個單元格都有一個實用值。理想情況下,我會試圖最大化SEEN(未訪問)的所有單元的效用總和除以路徑長度,但如果對於任何合適的算法來說這太複雜,那麼所看到的單元數就足夠了。有一個最大路徑長度,但它通常在數百或更高。 (我的代理上使用的實際測試環境至少大4倍,儘管理論上可以設置的尺寸沒有上限,並且最大路徑長度因此會相應增加)
我認爲BFS和DFS爲難以處理,由於缺乏合適的啓發式算法,A *是非最優的,而迪傑斯特拉不適合產生一條不間斷的路徑。有什麼算法可以想到嗎?此外,我需要幫助進行循環檢測,因爲我之前從未這樣做過,因爲允許重訪是我第一次。
我考慮過的一種方法是將映射減少爲生成樹,但不是將其定義爲連接所有單元的樹,而是將其定義爲可以查看所有單元的樹。我的做法會導致如下:
http://imagizer.imageshack.us/a/img910/3050/HGu40d.jpg
在結果樹,代理可以從一個節點到是0-1轉走在十字路口的任何相鄰節點。就我現在的想法而言,這就是我的想法。使用這棵樹生成的解決方案可能不是最優的,但它應該至少接近最優,而算法處理的細胞要少得多,所以如果這會使算法更容易處理,那麼我認爲這是可接受的交易。然而,我仍然想着如何爲此產生一條路徑。
你可以看看這個:http://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping。 – perreal
爲什麼不啓用基於所查看單元格數量的啓發式 – nkcode
@perreal您是否知道SLAM中的確切算法可以應用於我的問題?我的代理能夠訪問地圖的尺寸,並始終知道自己的確切位置,因此只需要在易處理的時間和環路檢測中生成探索路徑。 – thegreatjedi