2011-04-15 64 views
0

這是我的AI項目的一部分。我必須在LXW方格中實現一個佔據正方形的bot。如果字段中的正方形爲空,則它的值爲0,如果它被某個對象佔用,則其值爲1.連續的值爲1的正方形稱爲對象。設計一個機器人來尋找對象在一個領域的位置

我必須弄清楚所有對象的身份和位置在該領域

我有以下信息:

感():該函數返回我的鄰居的佔用狀態8個平方
舉動(x):允許我沿x方向移動到相鄰的方格
getId(x):給我在x方向上的對象id和wrt,如果沒有對象,返回-1

但是,無論何時我稱之爲sense或getID函數離子,物體可以以小概率移動到不同的位置

我正在考慮使用BFS來遍歷網格。或者,保留一個已經遍歷的位置列表並隨機移動會更好嗎? 我可以用來解決這個問題的一些AI技術是什麼?一些規劃技術如何?

+0

如果你盲目地碰到一個物體會發生什麼? 「距離不同」有多遠? – LumpN 2011-04-15 10:42:59

回答

1

我喜歡問題描述!確定性方法可能無效,因爲涉及到一些隨機性。此外,您可能需要重新訪問某些位置,因爲物體移動可能會打開新的路徑。

因此,加強隨機移動是一個好的開始。例如,您可以爲每個訪問過的單元分配時間戳,並使其更有可能訪問未訪問/較舊的單元。這與僅使用單一螞蟻的蟻羣優化http://en.wikipedia.org/wiki/Ant_colony_optimization中的信息素類似。

另一種方法可能是選擇隨機目標細胞(很遠),並試圖到達那裏。你可能會遇到一些物體。在這些對象周圍使用幼稚的路徑查找,如果這不起作用,就選擇另一個目標。

更新

一個抽象的,但強大的方式來創造一個有點聰明的AI是首先考慮剛性事實/屬性/註解,你可以分配到你的模型(如訪問的位置,時間戳,先驗知識等)。然後創建AI可以使用的一組簡單操作。您可能還想在其上創建更復雜的操作。

之後,這一切都歸結爲由AI控制的代理人以非確定性方式給出當前事實時選擇適當的操作。即:爲這些可能的操作指定分數,並執行輪盤選擇http://en.wikipedia.org/wiki/Fitness_proportionate_selection或類似的操作來確定下一個操作。

+0

謝謝!除了時間戳之外,你能否提到一些可以使用的非確定性方法? – Karan 2011-04-18 23:42:00

+0

@Karan:這取決於您如何在算法中混合確定性和非確定性部分。時間戳當然是確定性的,但如果它「更可能」訪問新的單元格,那麼你得到了非確定性。我會以一個例子來更新我的答案。 – LumpN 2011-04-19 12:08:49

+0

您能否介紹一下我應該如何處理在它們之間只有一個空格的對象?我猜getID()會解決問題(以便我知道填充塊屬於哪個對象),但這可能會導致對象移動。任何解決方法? – Karan 2011-05-01 14:53:31

相關問題