摘要:可以說,每個評估函數(shù)就是一個選手,對不同的棋型每個選手自然有不同的看法和應(yīng)對措施,當(dāng)然他們的棋力也就因此各不相同了。方搜索最大值,人類方搜索最小值。了解了上述原理之后,就可以自己寫代碼實現(xiàn)了。
公眾號:Charles的皮卡丘
作者:Charles
開發(fā)工具:
Python版本:3.6.4
相關(guān)模塊:
graphics模塊。
環(huán)境搭建:
安裝Python并添加到環(huán)境變量即可。
原理簡介:
對于五子棋這樣的博弈類AI,很自然的想法就是讓計算機把當(dāng)前所有可能的情況都嘗試一遍,找到最優(yōu)的落子點。這里有兩個問題:
(1)如何把所有可能的情況都嘗試一遍;
(2)如何定量判斷某落子點的優(yōu)劣。
對于第一個問題,其實就是所謂的博弈樹搜索,對于第二個問題,其實就是所謂的選擇評估函數(shù)。評估函數(shù)的選取直接決定了AI算法的優(yōu)劣,其形式也千變?nèi)f化??梢哉f,每個評估函數(shù)就是一個選手,對不同的棋型每個選手自然有不同的看法和應(yīng)對措施,當(dāng)然他們的棋力也就因此各不相同了。
但博弈樹搜索就比較固定了,其核心思想無非是讓計算機考慮當(dāng)前局勢下之后N步所有可能的情況,其中奇數(shù)步(因為現(xiàn)在輪到AI下)要讓AI方的得分最大,偶數(shù)步要讓AI方的得分最小(因為對手也就是人類,也可以選擇最優(yōu)策略)。
當(dāng)然這樣的搜索其計算量是極大的,這時候就需要剪枝來減少計算量。例如下圖:
其中A代表AI方,P代表人類方。AI方搜索最大值,人類方搜索最小值。因此Layer3的A1向下搜索的最終結(jié)果為4,Layer3的A2向下搜索,先搜索Layer4的P3,獲得的分值為6,考慮到Layer2的P1向下搜索時取Layer3的A1和A2中的較小值,而Layer3的A2搜索完Layer4的P3時,其值就已經(jīng)必大于Layer3的A1了,就沒有搜索下去的必要了,因此Layer3到Layer4的路徑3就可以剪掉了。
上述搜索策略其實質(zhì)就是:
minimax算法+alpha-beta剪枝算法。
了解了上述原理之后,就可以自己寫代碼實現(xiàn)了。當(dāng)然實際實現(xiàn)過程中,我做了一些簡化,但萬變不離其宗,其核心思想都是一樣的。
視頻演示:
https://mp.weixin.qq.com/s/Y9...
源代碼:
關(guān)注公眾號:Charles的皮卡丘,回復(fù)“AI五子棋”獲取。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/41942.html
摘要:簡言之,機器學(xué)習(xí)是內(nèi)功,而數(shù)據(jù)挖掘則是機器學(xué)習(xí)的一種用途。但本質(zhì)上是我在學(xué)習(xí)機器學(xué)習(xí)方面的實戰(zhàn)項目,所以我想辦法利用機器學(xué)習(xí)的方面的算法實現(xiàn)。 BetaMeow的起源 前段時間AlphaGo和李世石廣受關(guān)注,作為人工智能的腦殘粉,看完比賽后激動不已,因為有一定的機器學(xué)習(xí)的基礎(chǔ),便打算擼一個棋類的AI,但我還算有點自知之明,圍棋AI,甚至google打算做得通用AI是做不出的了,所以打算...
摘要:作者微信公眾號的皮卡丘歡迎大家搜索關(guān)注知乎圖像類畫畫實現(xiàn)手寫筆記的壓縮與增強實現(xiàn)簡單的車牌檢測算法類實現(xiàn)版貪吃蛇實現(xiàn)五子棋初版信息安全類簡單實現(xiàn)隱寫術(shù)使用破解滑塊驗證碼其他制作簡易瀏覽器實現(xiàn)浪漫表白實現(xiàn)地理信息可視化簡單分析高考數(shù)據(jù)制作簡易 作者:Charles微信公眾號:Charles的皮卡丘(歡迎大家搜索關(guān)注)知乎:https://zhuanlan.zhihu.com/p/... ...
摘要:練習(xí)項目備選清單文件下載器功能概要設(shè)計實現(xiàn)新建下載功能以為基礎(chǔ)給出下載鏈接可以啟動下載任務(wù)實現(xiàn)局域網(wǎng)內(nèi)下載傳輸文件以單線程下載方式實現(xiàn)附加功能支持?jǐn)帱c續(xù)傳實現(xiàn)多線程下載實現(xiàn)下載參考技術(shù)套接字編程多線程編程音視頻播放器功能概要設(shè)計實現(xiàn)播放常見 練習(xí)項目備選清單 Utilities 1. 文件下載器 功能概要設(shè)計: 實現(xiàn)新建下載功能(以ftp為基礎(chǔ)) 給出下載鏈接可以啟動下載任務(wù) 實現(xiàn)局...
摘要:練習(xí)項目備選清單文件下載器功能概要設(shè)計實現(xiàn)新建下載功能以為基礎(chǔ)給出下載鏈接可以啟動下載任務(wù)實現(xiàn)局域網(wǎng)內(nèi)下載傳輸文件以單線程下載方式實現(xiàn)附加功能支持?jǐn)帱c續(xù)傳實現(xiàn)多線程下載實現(xiàn)下載參考技術(shù)套接字編程多線程編程音視頻播放器功能概要設(shè)計實現(xiàn)播放常見 練習(xí)項目備選清單 Utilities 1. 文件下載器 功能概要設(shè)計: 實現(xiàn)新建下載功能(以ftp為基礎(chǔ)) 給出下載鏈接可以啟動下載任務(wù) 實現(xiàn)局...
閱讀 3010·2021-11-22 09:34
閱讀 1280·2021-11-19 09:40
閱讀 3422·2021-10-14 09:43
閱讀 3636·2021-09-23 11:22
閱讀 1672·2021-08-31 09:39
閱讀 977·2019-08-30 15:55
閱讀 1487·2019-08-30 15:54
閱讀 918·2019-08-30 15:53