複習關於軍棋AI編寫的思路

2021-10-20 19:45:49 字數 840 閱讀 1688

1.這是乙個什麼專案

這是乙個用於計算機博弈大賽軍棋比賽中的乙個軍棋ai,在2023年計算機博弈大賽中獲得三等獎,在2023年計算機博弈大賽中獲得二等獎。

2.用到了什麼技術,為什麼用這項技術(以及每項技術很細的點以及擴充套件)

最大最小值搜尋樹,α-β剪枝。

3.過程中遇到了什麼問題,怎麼解決的。

專案整理:

ai執行邏輯:由裁判程式傳送一段一段的字串指令,然後對指令進行分析後分別進行不同的操作。

收到一系列請求程式名稱,隊員資訊的指令後返回資訊。

收到開始指令後初始化棋盤資訊,棋子位置,初始化概率表。

while(兩方的旗子都存在){

收到對方行棋指令後,重新整理概率表,重新整理棋盤,更新棋盤棋子,呼叫決策函式,判斷31步,下棋

收到我方下棋後裁判的反饋結果,重新整理概率表,重新整理棋盤,更新棋盤棋子,判斷31步

遊戲結束

現在詳述決策函式

設定乙個for迴圈最大為4,最小從1開始,最開始只進行1次最大最小值搜尋樹,第二次迴圈變為進行2層深度,最終變成4層深度,如果超時或者必勝的時候跳出迴圈

最大最小值搜尋樹函式和α-β剪枝:首先將必勝的條件列出,如果必勝直接返回最**值。

通過乙個函式計算出所有可能的走法儲存到乙個陣列中,然後使用快排基於每個走法的價值進行排序。深搜模擬每一種走法。每一層為自己或者敵人,葉子節點評估函式返回局面得分。最後通過函式得出最佳走法

編寫文件的思路

作為產品經理我們每天要寫的文件可是不少。除了brd mrd prd等我們要寫的正規文件。還包括一些其他無法起名,但我們每天還是要寫的文件。例如我最近在寫個需求概要文件。雖然是需求概要文件,但其實是乙個設計文件,要求產品經理在了解行業形態和公司產品特點的情況下,將公司產品與行業規則結合,創造乙個全新主...

關於編寫通用指令碼驗證的一點思路

想寫乙個比較通用的提交表單時的指令碼驗證程式,因為乙個個的編寫每個欄位的驗證實在是太麻煩了,昨天花了兩個小時想了一下,感覺乙個通用的驗證應該有如下特點 1 不應該和 有任何關聯,例如通過向表單元素上增加自己的屬性,這樣會使html 可讀性降低。如果使用伺服器端tag 如struts的html標籤 可...

關於編寫通用指令碼驗證的一點思路

想寫乙個比較通用的提交表單時的指令碼驗證程式,因為乙個個的編寫每個欄位的驗證實在是太麻煩了,昨天花了兩個小時想了一下,感覺乙個通用的驗證應該有如下特點 1 不應該和 有任何關聯,例如通過向表單元素上增加自己的屬性,這樣會使html 可讀性降低。如果使用伺服器端tag 如struts的html標籤 可...