作者etrexetrex (ETREX)
看板GameDesign
標題Re: [程式] 圈圈金字塔的AI邏輯
時間Wed Oct 18 22:04:05 2006
※ 引述《chowleft (什麼....)》之銘言:
: 文章有錯請指教....我只是小咖xD
: Minimax這裡有中文說明,加上範例圖可以加速理解
: http://0rz.tw/a620L
: 小弟以前也寫過一個小遊戲,就是用這個方式降低電腦的思考時間
: 當然這個AI沒有像e大那麼強還可以自我進化,
被真正會寫AI的人說很強...(羞)
其實我不會AI的 :)
: 遊戲可以在此下載:
: http://download.yousendit.com/6B9A68DB2171E1A8
: 開啟後選Game->Single就開始了
: 裡面的某些功能選項都是幻覺,請當作不存在
: 我想棋類遊戲應該都是這樣寫的吧?
: 場上棋子分佈的狀況都可以用某些規則去計算出一個數值,
: 如果某一種狀況對我們有利的話,這個分數應該要比較高,
: 這樣就知道哪一步比較好了
我也覺得是這樣寫
不過因為我始終想不到要怎麼給分
所以就讓AI自己幫自己給分了 XD
: 我們在下棋子的時候,會想辦法下出對我們最有利的情況
: 而當輪到對方的時候如果沒意外,對方會下對他最有利的一步
: 由分數觀點來講就是,讓算出來的分數最低
: 假如我想預測N步以後的情形 (我->對手->我->對手....)
: 我應該要計算雙方所下的所有可能組合,然後找出最大分數那一組
: 這樣我就知道我這一步該怎麼下了
預測這個部分我沒有做.....我也不會 >"<
因為這個棋盤很小,而且畫圈圈一定是越畫越少的
所以有辦法把遊戲開始到遊戲結束的所有圖形都列出來 0.0
如果換成象棋那種可以來回走的要把所有圖形列出來是不可能的
所以我的演算法可以說是只能用在這個遊戲上...
: 而利用對方會朝對他最有利的方向前進的這個假設
: 則可以不用把每一種組合的分數都算出來,可以少算一些這樣
: 至於每一步的分數如何決定,通常跟對這個遊戲的認知度有一點點關連
: 像在我這個白癡AI中,我將邊角的分數拉得很高
: 因為我覺得有沒有搶到邊角非常重要
: 其他的邊緣地帶分數也有高一些些,至於像B2之類的地方
: 因為你搶到之後很可能之後會讓對手搶到邊角,所以分數是負的,代表不要下這一步
: 另外一個想法就是讓對手可以下的位置越來越少,
: 這樣對手下無可下,最後就會下在他最不希望下的位置
: 對手的選擇越少,代表他的靈活性越低
: 除了可以逼迫他下不該下的位置外,還有節省電腦計算量的妙用
: 結合類似這樣的觀念就可以決定一個狀況的分數了
: 當然有些觀念是上網查的....
節省電腦計算量這個部分
因為我沒有預測所以就....
不過預測是我一開始想做的...想破頭不會寫 0.0
: 當初會寫這個只是因為被VMJ小遊戲的電腦狠狠羞辱了一番
: 所以寫來看能不能報仇雪恥....
: 不過當我寫完之後所得到的只是又一次的羞辱....我的AI不爭氣的輸了
: 總之e大可以考慮加入這些元素看看,希望對你的AI能有些幫助
不過現在我想改進AI學習的方法
而不想教AI必勝公式 (我也不知道要怎樣必勝)
因為我覺得這樣比較有趣 :)
(雖然必勝AI真的很威,little game版的回應裡有一個超威的AI...)
如果能研究一個演算法
讓AI對所有遊戲都有學習能力的話
就不用自己去想什麼情況是有利的
哪邊的分數要給比較高 (會贏的就分數高 哈哈)
==
後來我有去翻一下AI的書
發現我做的這種程式在書上是屬於機器學習的部分
是 "死記學習法" 或 "參數學習法" 的其中一種
我沒有看仔細,不過每本AI的書都是最後幾頁才講學習
最大最小決策也有在書裡看到,整個就是覺得很複雜 0.0
--
無名網誌:
http://www.wretch.cc/blog/et284vu065k3
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.228.44.27
推 chowleft:其實我一點也不強,只是套用別人的想法而已.... 10/18 22:26
→ chowleft:只是看到e大的作品後,突然就想把這程式給e大看看...xD 10/18 22:28
→ chowleft:我想分數的計算如果能變成類似e大那種方式的話 10/18 22:31
→ chowleft:應該也可以擁有自動學習的功能才是....我也不太清楚... 10/18 22:32
推 etrexetrex:預測是可以加入我的程式裡 只是會讓AI的下法變少 10/18 22:38
→ etrexetrex:AI可能會變強 但是不曉得對學習的功能會不會有影響 10/18 22:38
推 chowleft:我也不知....我沒什麼在研究AI 10/18 22:51
→ chowleft:只是如果對複雜一點的遊戲而言,給他一定程度的背景知識 10/18 22:52
→ chowleft:應該可以在訓練的時候少走很多彎路才是.... 10/18 22:52
→ etrexetrex:嗯 預測是可以讓學習效率提升... 10/18 22:59
推 Attui:黑白旗好像有必勝公式 10/18 23:02
推 etrexetrex:這黑白棋的破壞行動力有威到 我只想過搶邊角而已 10/18 23:37
推 etrexetrex:我想應該是推錯篇了 :) 10/19 01:56
→ chowleft:其實這個AI有點太注重行動力方面,所以不是很強 10/20 02:27