(
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作业提交
将
作业报告 存储为PDF文件,用学号命名,例如231221001.pdf
上传到sftp
sftp://www.lamda.nju.edu.cn 作业文件夹地址:/D:/Courses/IntroAi_HW/hw2
(用户名: IntroAI, 密码: course01234!@#$)
(注意:该sftp不能替换文件,上传一次后,如果需要修改,请在文件名后加上版本号再上传,例如231221001-1.pdf)
注意:
作业严禁抄袭!