Skip to content

作业 4:神经网络与搜索——重力四子棋 ​

结合神经网络与蒙特卡洛树搜索(MCTS),通过自我对弈训练重力四子棋 AI。作业灵感来源于 AlphaZero,Notebook 和 Python 脚本版任选其一,使用课程提供的 pubpy 环境。

截止时间:2026 年 11 月 14 日 23:59。

作业材料 ​

材料内容
完整材料包(ZIP)作业说明、两版引导教程、代码模板及参考文献;两版任选其一
作业说明原文任务、对战平台登录说明、提交要求与评分规则
材料使用说明环境、检查、训练、评估、导出与上传方法

下载并解压完整材料包,用 VS Code / Remote SSH 打开所选版本的整个子目录,保留其中的 starter/。Notebook 版只需补全笔记本,不用重复填写 starter/ 中的模板。Notebook 的基础操作可参考神经网络实践。

需要完成什么 ​

棋盘为 6 行、7 列。双方轮流选择一列,棋子落至该列最下方空位;横、竖或斜向先连成四子者获胜,棋盘填满且无人获胜则平局。列号为 0~6。

  1. 实现搜索:补全 starter/mcts.py 或 Notebook 第三节的选择、扩展、回传、搜索循环四个步骤。后续训练与对战使用自己实现的搜索。

  2. 自我对弈训练:补全 starter/train.py 或 Notebook 第四、五节,将访问次数转为落子分布,记录局面和胜负标签,并计算策略损失与价值损失。从随机初始化开始训练、保存模型,比较训练前后表现;跑通后可调整网络或训练参数。

  3. 对战测试:将导出的 code.zip 和 model.pt 上传至课程对战平台,与随机策略、入门策略或其他同学对战。操作方法见上传与对战指南。

    已为同学们安排对战平台账号,用户名为学号,初始密码为圆周率前 15 位,登录后可以修改自己的密码。

提交内容 ​

在服务器个人目录中建立 ~/homework4/,放入以下内容:

所选版本完整源码模型
Python 脚本版补全后的完整 starter/ 文件夹model.pt
Notebook 版补全后的 .ipynb,以及从 notebook_runs/实验名/src/ 复制得到的 starter/ 文件夹model.pt

只交一个版本,可以保留训练日志,无需提交训练数据缓存。平台上传的 code.zip 不含完整训练程序,不能代替服务器上的完整源码。

同时,在截止前进入对战平台的“正式比赛”页面,指定一个参赛版本;代码和模型应与服务器提交的作业对应。截止后冻结参赛版本,正式评测使用该版本,之后修改日常默认版本不影响参赛版本。日常榜排名不计入作业成绩。

比赛与评分 ​

完成作业要求并提交可运行的代码和模型后,按以下标准评分。未完成、缺交或无法运行的作业另行评定。

助教统一评测参赛模型。对随机策略和入门策略分别使用多组开局测试,每组交换先后手各下一局;每局胜、平、负分别计 1、0.5、0 分。累计得分超过总局数的一半才算通过,打平不通过。 具体测试局数视实际情况调整。

通过入门策略测试(资格赛)的模型进入正式比赛。暂定采用 8 轮瑞士制,根据当前积分安排对手,每场交换先后手各下一局,使用同一开局;按累计积分排名,同分时比较对手的最终积分总和。轮数、每场局数及开局设置会根据参赛人数和实际情况调整。

评测结果分数
排名前 10%10
排名 10%~25%9.5
排名 25%~50%9
排名 50%~70%8.5
通过资格赛的其余同学8
未通过资格赛,但通过随机策略测试7
两项测试均未通过6

百分比按通过资格赛的人数计算。仍然并列且跨越评分档位时,按较高档计分。

评测采用统一的时间和资源限制,以平台公布的规则为准。超时、非法落子或程序崩溃判该局负;平台故障由助教处理并安排重赛。

Released under the MIT License.

图片预览