精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創作
電子發燒友網>電子資料下載>人工智能>如何使用Python編寫一個國際象棋AI程序

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

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

資料介紹

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

  AI 部分總述

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

?

  生成棋步樹

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

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

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

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

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

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

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

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費下載
  2. 0.00 MB  |  1491次下載  |  免費
  3. 2單片機典型實例介紹
  4. 18.19 MB  |  95次下載  |  1 積分
  5. 3S7-200PLC編程實例詳細資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關電源原理及各功能電路詳解
  10. 0.38 MB  |  11次下載  |  免費
  11. 6100W短波放大電路圖
  12. 0.05 MB  |  4次下載  |  3 積分
  13. 7基于單片機和 SG3525的程控開關電源設計
  14. 0.23 MB  |  4次下載  |  免費
  15. 8基于AT89C2051/4051單片機編程器的實驗
  16. 0.11 MB  |  4次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費
  7. 4LabView 8.0 專業版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費
  9. 5555集成電路應用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費
  15. 8開關電源設計實例指南
  16. 未知  |  21539次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537793次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費