(
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源代码,了解程序的总体框架,并完成以下任务:
- 阅读源代码src/ai_agent.py第21行函数minmax_decider,理解并介绍MiniMax搜索的实现(与课本上分别实现Max和Min函数不同,程序中使用一个开关将两者合并为一个函数)
- 请修改src/ai_agent.py第78行函数alphabeta_decider,加入AlphaBeta剪枝,并且比较引入剪枝带来的速度变化(尝试不同的搜索最大深度)
- 请理解src/ai_agent.py中的evaluate_game_state函数,并尝试改进
- 请阅读并尽量理解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。如文件超过限制,请联系课程助教。
注意:
作业严禁抄袭!