作业2: 黑白棋游戏

Modified: 2018/03/09 14:55 by admin - Uncategorized
(Back to course page)

Edit

问题描述

黑白棋,又称反棋(Reversi)、奥赛罗棋(Othello)等,游戏使用围棋的棋盘棋子,在8*8的棋盘上,黑白双方分别落棋,翻动对方的棋子。具体的规则可见:http://www.soongsky.com/othello/strategy/rule.php

下载本次作业程序包 Othello人机对战源程序 ,该程序为Python语言编写。

Othello 程序包的结构如下
        Othello/
        ├── src/
        │   ├── ai_agent.py
        │   ├── othello_game.py
        │   ├── GUI/
        │   │   ├── button_gui.py
        │   │   ├── menu_gui.py
        │   │   └── othello_gui.py
        │   └── main.py
        ├── utils/
        │   └── pictures/
        

othello包中的main.py是主函数(即运行该文件来启动游戏),程序入口在该文件中的run_menu函数。

src/ai_agent.py 为Othello的AI agent的实现。它包括get_best_move函数,该函数使用minimax算法找到最佳动作。

Edit

作业内容

阅读Othello源代码,了解程序的总体框架,并完成以下任务:
  1. 阅读源代码src/ai_agent.py第21行函数minmax_decider,理解并介绍MiniMax搜索的实现(与课本上分别实现Max和Min函数不同,程序中使用一个开关将两者合并为一个函数)
  2. 请修改src/ai_agent.py第78行函数alphabeta_decider,加入AlphaBeta剪枝,并且比较引入剪枝带来的速度变化(尝试不同的搜索最大深度)
  3. 请理解src/ai_agent.py中的evaluate_game_state函数,并尝试改进
  4. 请阅读并尽量理解src/ai_agent.py中的MTD(f)算法(函数mtd_f),介绍它与minimax算法的异同(在src/ai_agent.py中,将16行注释掉,将17行去掉注释,即可换用MTD(f)算法)

Edit

作业报告

本次作业不需要提交源码,只需要提交报告。对于以上4个任务,报告需分别详细介绍对代码的理解、对代码做了哪些修改、对比测试的结果。 使用这个文档模版(点击下载) 撰写实验报告。

Edit

作业提交

作业报告 存储为PDF文件,用学号命名,例如231221001.pdf

上传到sftp sftp://www.lamda.nju.edu.cn 作业文件夹地址:/D:/Courses/IntroAi_HW/hw2 (用户名: IntroAI, 密码: course01234!@#$)
(注意:该sftp不能替换文件,上传一次后,如果需要修改,请在文件名后加上版本号再上传,例如231221001-1.pdf)

注意:作业严禁抄袭!

The end