作业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

作业提交

请按照以下要求提交作业:

1. 将实验报告保存为PDF文件,并以学号命名,例如:231221001.pdf
2. 本次作业只需提交PDF报告,不需要提交源码或ZIP压缩包。
3. 将PDF文件作为邮件附件发送至: lamda_introai@126.com
4. 邮件主题必须使用以下格式:
[作业2] 学号 姓名
例如:[作业2] 231221001 张三

系统收到报告后,将根据报告内容生成三个考核问题。考核分为三轮,每轮只围绕一个主问题进行:
  • 请直接回复系统发送的问题邮件,不要新建邮件;
  • 请保留邮件主题中的提交编号,例如 IAI-XXXXXXXX
  • 系统可能针对当前问题继续追问;
  • 当前问题考核结束后,系统会自动发送下一轮问题;
  • 第三轮结束后,系统会发送本次作业考核完成通知。
如需修改已经提交的报告,请重新发送完整的PDF文件,并在文件名后添加版本号,例如:231221001-1.pdf。重新提交时请新建邮件,并继续使用规定的邮件主题格式,不要将新版报告作为问答邮件的附件发送。

请确保附件大小不超过20MB。如文件超过限制,请联系课程助教。

注意:作业严禁抄袭!

The end