国际象棋AI设计(一)

时间:2024-04-04 13:07:40

环境配置

测试使用说明

使用命令行执行 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设计(一)

整体设计结构

设计流程

根据国际象棋的规则,确定 AI 的基本工作流程图如下:
国际象棋AI设计(一)

借助 python-chess 库函数board.legal_moves获得我方所有合法着子的列表,在这个基础上开展搜索,辅以评估,最终得到对我方而言最优的着子。
其中搜索函数和评估函数分别从两个方面提升 AI 的“思考”能力:

  • 评估函数:通过评价局面的优劣直接影响 AI 的选择
  • 搜索方法:通过加快搜索速度,减少在加深搜索深度情况下的用时,
    为加深搜索深度以提高 AI“思考”的长远性和全面性提供可能