chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>人工智能>如何使用Python編寫一個國際象棋AI程序

如何使用Python編寫一個國際象棋AI程序

2018-12-18 | rar | 0.12 MB | 次下載 | 免費

資料介紹

  最近我用Python做了一個國際象棋程序并把代碼發(fā)布在Github上了。這個代碼不到1000行,大概20%用來實現(xiàn)AI。在這篇文章中我會介紹這個AI如何工作,每一個部分做什么,它為什么能那樣工作起來。你可以直接通讀本文,或者去下載代碼,邊讀邊看代碼。雖然去看看其他文件中有什么AI依賴的類也可能有幫助,但是AI部分全都在AI.py文件中。

  AI 部分總述

  AI在做出決策前經(jīng)過三個不同的步驟。首先,他找到所有規(guī)則允許的棋步(通常在開局時會有20-30種,隨后會降低到幾種)。其次,它生成一個棋步樹用來隨后決定最佳決策。雖然樹的大小隨深度指數(shù)增長,但是樹的深度可以是任意的。假設(shè)每次決策有平均20個可選的棋步,那深度為1對應(yīng)20棋步,深度為2對應(yīng)400棋步,深度為3對應(yīng)8000棋步。最后,它遍歷這個樹,采取x步后結(jié)果最佳的那個棋步,x是我們選擇的樹的深度。后面的文章為了簡單起見,我會假設(shè)樹深為2。

?

  生成棋步樹

  棋步樹是這個AI的核心。構(gòu)成這個樹的類是MoveNode.py文件中的MoveNode。他的初始化方法如下:

  這個類有五個屬性。首先是move,即它包含的棋步,它是個Move類,在這不是很重要,只需要知道它是一個告訴一個起子往哪走的棋步,可以吃什么子,等等。然后是children,它也是個MoveNode類。第三個屬性是parent,所以通過它可以知道上一層有哪些MoveNode。pointAdvantage屬性是AI用來決定這一棋步是好是壞用的。depth屬性指明這一結(jié)點在第幾層,也就是說該節(jié)點上面有多少節(jié)點。生成棋步樹的代碼如下:

  變量moveTree一開始是個空list,隨后它裝入MoveNode類的實例。第一個循環(huán)后,它只是一個擁有沒有父結(jié)點、子結(jié)點的MoveNode的數(shù)組,也就是一些根節(jié)點。第二個循環(huán)遍歷moveTree,用populateNodeChildren函數(shù)給每個節(jié)點添加子節(jié)點:

  這個函數(shù)是遞歸的,并且它有點難用圖像表達(dá)出來。一開始給它傳遞了個MoveNode對象。這個MoveNode對象會有為1的深度,因為它沒有父節(jié)點。我們還是假設(shè)這個AI被設(shè)定為深度為2。因此率先傳給這個函數(shù)的結(jié)點會跳過第一個if語句。

  然后,決定出所有規(guī)則允許的棋步。不過這在這篇文章討論的范圍之外,如果你想看的話代碼都在Github上。下一個if語句檢查是否有符合規(guī)則的棋步。如果一個都沒有,要么被將死了,要么和棋了。如果是被將死了,由于沒有其他可以走的棋步,把node.move.checkmate屬性設(shè)為True并return。和棋也是相似的,不過由于哪一方都沒有優(yōu)勢,我們把node.pointAdvantage設(shè)為0。

  如果不是將死或者和棋,那么legalMoves變量中的所有棋步都被加入當(dāng)前結(jié)點的子節(jié)點中作為MoveNode,然后函數(shù)被調(diào)用來給這些子節(jié)點添加他們自己的MoveNode。

AI 函數(shù) python
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
  2. 3.40 MB  |  1次下載  |  免費
  3. 2MDD品牌三極管MMBT3906數(shù)據(jù)手冊
  4. 2.33 MB  |  次下載  |  免費
  5. 3MDD品牌三極管S9012數(shù)據(jù)手冊
  6. 2.62 MB  |  次下載  |  免費
  7. 4聯(lián)想flex2-14D/15D說明書
  8. 4.92 MB   |  次下載  |  免費
  9. 5收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊
  10. 2.50 MB   |  次下載  |  免費
  11. 624Pin Type-C連接器設(shè)計報告
  12. 1.06 MB   |  次下載  |  免費
  13. 7MS1000TA 超聲波測量模擬前端芯片技術(shù)手冊
  14. 0.60 MB   |  次下載  |  免費
  15. 8MS1022高精度時間測量(TDC)電路數(shù)據(jù)手冊
  16. 1.81 MB   |  次下載  |  免費

本月

  1. 1愛華AIWA HS-J202維修手冊
  2. 3.34 MB   |  37次下載  |  免費
  3. 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊
  4. 1.63 MB   |  23次下載  |  免費
  5. 3NB-IoT芯片廠商的資料說明
  6. 0.31 MB   |  22次下載  |  1 積分
  7. 4H110主板CPU PWM芯片ISL95858HRZ-T核心供電電路圖資料
  8. 0.63 MB   |  6次下載  |  1 積分
  9. 5UWB653Pro USB口測距通信定位模塊規(guī)格書
  10. 838.47 KB  |  5次下載  |  免費
  11. 6技嘉H110主板IT8628E_BX IO電路圖資料
  12. 2.61 MB   |  4次下載  |  1 積分
  13. 7蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
  14. 0.04 MB   |  4次下載  |  1 積分
  15. 8100W準(zhǔn)諧振反激式恒流電源電路圖資料
  16. 0.09 MB   |  2次下載  |  1 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191439次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183353次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81602次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費下載
  14. 0.02 MB  |  73822次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分