1. 程式人生 > >國際象棋AI設計(一)

國際象棋AI設計(一)

環境配置

測試使用說明

使用命令列執行 py start.py執行
  1. 在命令列介面,列印字元棋盤
  2. 對弈開始時, AI 接受一個輸入(w/b),指示AI執白手或黑手
  3. 著子的輸入輸出依照修正後的標準代數記譜法SAN,如Nh3,表示馬(Knight)跳到 h3 位置
  4. 其中一方被將死,結束對弈,退出程式。
使用測試平臺 theChessBoard.exe
  1. theChessBoard相關的檔案與程式碼檔案放在同一資料夾下
  2. 點選“LEIPFONT.TTF”安裝棋子資料檔案
  3. 執行theChessBoard.exe
  4. 注意事項:在載入白方/載入黑方時,我方已Python指令碼方式執行,因此第一行填入python,第二行為start.py檔案所在地址
    ;如果是exe可執行檔案,直接在第一行填入exe檔案的地址。
  5. 匯入雙方的指令碼或可執行檔案後,設定自動對弈。右側視窗顯示對弈程序,左側下方記錄歷史棋步。基本介面如下:
    這裡寫圖片描述

整體設計結構

設計流程

根據國際象棋的規則,確定 AI 的基本工作流程圖如下:
這裡寫圖片描述

藉助 python-chess 庫函式board.legal_moves獲得我方所有合法著子的列表,在這個基礎上開展搜尋,輔以評估,最終得到對我方而言最優的著子。
其中搜索函式和評估函式分別從兩個方面提升 AI 的“思考”能力:

  • 評估函式:通過評價局面的優劣直接影響 AI 的選擇
  • 搜尋方法:通過加快搜索速度,減少在加深搜尋深度情況下的用時,
    為加深搜尋深度以提高 AI“思考”的長遠性和全面性提供可能

相關推薦

國際象棋AI設計

環境配置 測試使用說明 使用命令列執行 py start.py執行 在命令列介面,列印字元棋盤 對弈開始時, AI 接受一個輸入(w/b),指示AI執白手或黑手 著子的輸入輸出依照修正後的標準代數記譜法SAN,如Nh3,表示馬(Knight)

國際象棋AI設計----搜尋

Alpha-Beta剪枝 Alpha-Beta 同“MinMax”非常相似, 區別主要在於 MinMax 執行時要檢 查整個博弈樹,然後儘可能選擇最好的線路。 Alpha-Beta 則是在MinMax的基礎上把一些不必要的分支剪去,加快搜索速度。 Alph

基於RTP的h.264視頻傳輸系統設計

-i 感謝 項目 頻率 算術 處理 rop sel 決定 一、H.264 的層次介紹 H.264 定義三個層次,每一個層次支持一組特定的編碼功能。而且按照各個層次指定所指定的功能。基礎層次(baselineprofile)支持 I 幀和 P 幀【1】的幀內和幀間

深入淺出說CUDA程序設計

離線下載 vertex it領域 硬件 體系結構 占用 oid 過大 crc 第一章 為什麽需要並行程序 CUDA,全稱是Compute Unified Device Architecture,一般翻譯成中文為計算統一設備架構。筆者以為這樣的名字會讓人對CUDA感到很迷惑,

聖熙女鞋API設計

mar detail result arch eid api 個人 ext sum 女鞋API 數據結構定義 //Product //產品數據對象解構 { id:101, name:‘產品名‘, summary:‘產品簡介‘, image:

基於容器微服務的PaaS雲平臺設計 實現容器微服務和持續集成

顯示 一次 target 全部 ext neu openshift svn客戶端 enc 版權聲明:本文為博主原創文章,歡迎轉載,轉載請註明作者、原文超鏈接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 前言:關於什麽是容器微服務Paa

對賬系統產品設計

例如 產品經理 表模塊 放心 比較 div 第一篇 訂單 系列 我是做技術的,為什麽會要寫產品設計呢?就像一句俗話“久病成醫”,當你負責一個系統足夠久了,可能你就懂的比較多了。我想把自己遇見的聽見的做一個系列,算是對自己過去工作的總結。 本文的基調是,少專業術語,全用大白話

數據庫設計概念、內容、步驟和參考資料

及其 用戶 各類 都沒有 處理 步驟 有效 database 意思 概念 百度百科對數據庫設計的給了如下的描述: 數據庫設計(Database Design)是指對於一個給定的應用環境,構造最優的數據庫模式,建立數據庫及其應用系統,使之能夠有效地存儲數據,滿足各種用戶的應用

數據庫設計——數據庫設計

數據庫設計數據庫設計(一)——數據庫設計 一、數據庫設計簡介 按照規範設計,將數據庫的設計過程分為六個階段: A、系統需求分析階段B、概念結構設計階段C、邏輯結構設計階段D、物理結構設計階段E、數據庫實施階段F、數據庫運行與維護階段需求分析和概念結構設計獨立於任何數據庫管理系統。 二、系統需求分析 1、需求分

Python之異常設計

final 崩潰 進行 n) finally list 發生 err exception 一 定義 異常分為兩類:一類是自動觸發異常如除零錯誤;另一類是通過raise觸發。 二 為什麽要使用異常   當程序運行時,如果檢測到程序錯誤,Python就會引發異常,我們可以在程序

微服務架構下的監控系統設計——指標數據的采集展示

ans 定義數據 采集函數 健康 eset 中間件 松耦合 實例 叠代優化 前言微服務是一種架構風格,一個大型復雜軟件應用通常由多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關註於完成一件任務並很好地完成該任務。微服務之前很多單體應用

ArcGIS Engine 系統開發設計:簡單的地圖讀取、展示

終於到暑假了。。。開始認真整理整理相關學習的心得體會咯~ 先把很久之前挖的關於C# 二次開發的坑給填上好了~ 這次先計劃用一個月把C# ArcEngine 10.0相關開發的學習心得給釋出出來好啦~ 第一部分就是最簡單的helloworld了:掌握使用控制元件建立簡單的GIS應用程

聚合支付系統設計

商戶聚合支付系統設計(一) 產品概述與整體設計 背景 如今,網購已經滲透到人們日常生活中的方方面面,做為網購的載體,網際網路電商平臺發展如火如荼,支付功能做為其不可或缺的一部分,實現起來,也有各種各樣的方案。根據自己有限的認知,我主觀上把目前行業內的支付實現方案做以下歸

充值系列—充值系統資料庫設計

在我們的遊戲充值模組中,接入了支付寶,蘋果,Paypal, googleplay , mycard, mol, 360,機鋒,91等各種充值渠道。這篇文章(包括接下來的幾篇文章)將對充值系統的需求,資料庫設計,構架,充值流程,安全處理,各種渠道的詳細接入方式等各個方面做出詳細的說明。 充

基於Maven的SSM總體架構設計

基於Maven的SSM總體架構設計(一) 1 概述 1.1 編寫目的 1.2 讀者物件 1.3 引用檔案 1.4 術語表 2 相關技術介紹 2.1 Spring框架介紹 2.1.1

基於OpenCV3.0的車牌識別系統設計--系統綜述

寫在前面的話        車牌識別是影象處理技術的實際生活中一個非常重要的應用場景,目前車牌識別系統已經非常完善,識別準確率高達99%以上。作為學生,在學習影象處理時,自己搭建車牌識別系統是非常有價值的,作為入門專案有助於快速入門。並且在識

軟體構建中的設計

設計中的挑戰 “軟體設計”意味著去構思。創造或發明一套方案,把一份軟體的規格說明書變成功能可執行的軟體。設計就是把需求分析和編碼除錯連起來的活動。好的高層次設計能提供一個穩妥容納多個較低層次設計的結構。好的設計對於小型專案非常有用,對於大型專案就更是不可或缺。 設計是一個險惡的問題 設計是一個險惡的問題

FPGA-08-任務五、十字路口交通控制燈器系統設計

      設計一個十字路口交通控制系統,其東西、南北兩個方向除了有紅、黃、綠燈指示是否允許通行外,還設有時間顯示,以倒計時方式顯示每一路允許通行的時間,綠燈、黃燈、紅燈的持續時間分別是45、5和50秒。當東西或南北兩路中任一道上出現特殊情況,例如有消防車,警車要去執行

MySQL效能管理及架構設計:什麼影響了資料庫查詢速度、什麼影響了MySQL效能

一、什麼影響了資料庫查詢速度 1.1 影響資料庫查詢速度的四個因素     1.2 風險分析 QPS: Queries Per Second意思是“每秒查詢率”,是一臺伺服器每秒能夠相應的查詢次數,是對一個特定的查詢伺服

演算法分析與設計

一、演算法的定義 滿足五個條件:可行性、確定性、輸入、輸出、有窮性 滿足前四個條件為計算過程(OS) 二、演算法複雜性分析 時間複雜性:對該輸入需要產生的原子操作的步數(是輸入大小的函式) 空間複雜性:演算法所需要的儲存空間 三、計算複雜性函式的階 階:描述增長