基本上做的就是遊戲的評價最好的辦法是:
- 玩遊戲 - 試試,看看你嘗試什麼情況下避免的,哪些是好的。嘗試將這些情況制定爲一般評估。
- 研究 - 有人可能已經研究過這個或類似的問題,如果有的話 - 也許有一些文章或其他材料暗示啓發式功能。
我會做如下:
- 從最近的敵人創建一組啓發式功能,遊戲(距離每個描述一個方面,火線上的敵人,我的健康吧,...)。我會盡可能地玩這個遊戲來擴展這個列表,當然也可以在網上尋找其他人可能爲這個/類似遊戲找到的想法。
- 從步驟之一,我們實際上得到了一組函數:
h_1(board),h_2(board),...,h_n(board)
- 但我們仍然不知道什麼是我們的啓發式功能
- 我會盡量找一些參數
a_1,a_2,...,a_n
,創造我的啓發函數:
h(board) = a_1 * h_1(board) + a_2 * h_2(board) + ... + a_n * h_n(board
現在的問題是 - 如何獲得這些參數。請注意,現在我們有一個優化問題。
這個特定問題的一個解決方案是蒙特卡羅學習。
蒙特卡洛學習:
蒙特卡洛學習的想法是創建一個代理列表(AIS),每個都有一些隨機值初始化爲a_1,...,a_n
- 並讓他們之間的比賽。
比賽結束後,根據代表最好的代理商,爲每位代理商更改a_1,...,a_n
的值,然後重新運行錦標賽。 (其中一種方法與Genetic Algorithms中的「代」步驟類似 - 交叉和突變,但也有其他方法)。
最後 - 蒙特卡洛學習過程應該會給你很好的價值a_1,...,a_n
- 這將給你一個很好的董事會啓發式功能。
所以,問題是,你如何編寫評估函數?有很多這樣的例子,但他們顯然專門針對他們的領域。國際象棋棋盤評估功能在這裏無助於你。告訴我們你的想法。 –
是的,國際象棋評估功能沒有幫助。我想過這樣的事情。我必須優先考慮球員的需求。最大優先級是玩家不應該被殺死,所以如果其他玩家向我射擊,我應該立即從子彈的軌道上跳出來。接下來收集硬幣。像智者一樣,我可以優先考慮需求併爲每個人分配一個固定值。評估如此發生,它會返回每個需求的乘積與相應的常數值的和。最大優先需求將獲得更高的價值常數。 – Sudheera
聽起來像一個體面的開始。似乎你的優先事項應該根據你的健康情況而有所不同。如果你身體健康,追求健康包裝應該是非常低的優先。但是,如果你在死亡的門口,那麼追求健康包比硬幣更有價值。 –