系列最后一篇提供复核与复现地图。实验包含桌面 C++/Qt 应用和浏览器实现。二者让我们在不同运行环境观察同一问题,但名称相似并不保证代码路径或数值行为完全一致。

进入同一扑克实验的原生与浏览器路径
进入同一扑克实验的原生与浏览器路径

C++/Qt 侧可从 `model` 开始:状态特征、动作分数、更新及模型存取构成策略核心。`game` 负责街次推进、下注、底池结算与 `finishHand` 等终局流程。`card` 用于核查牌堆表示和牌力计算。`mainwindow` 连接可见界面、输入和模拟;判断日志数字对应哪个时点时需要它。

浏览器侧有独立 web engine,适合反复运行和可视化动作,但必须直接对比其奖励、特征与随机处理。不能假定一个实现修改的常量会自动出现在另一个实现。

model、game、card、mainwindow、web engine与快照的源码地图
model、game、card、mainwindow、web engine与快照的源码地图

模型快照连接代码与观察。cheolsu、younghee、minsu 说明,相似外部动作可能来自不同内部偏好。快照只是某个训练时点的样本,应连同文件名、提交、配置和随机种子保存。不要由单个权重推断完整策略,还要追踪特征向量和动作选择函数。

实用阅读顺序是:先找到牌局结束时 chip delta 的计算,再检查 `finishHand` 的转换,跟踪该值如何进入回合更新,载入保存权重并对比动作分数,最后在 Qt 界面与 web engine 重放等价初始条件。实现差异要作为实验变量记录。

范围限制非常重要:公开源码是调查策略坍缩时的 diagnostic snapshot。它不声称文中建议的奖励重构、混合对手训练或改进信用分配已经实现,更不声称行为已修复。此前的保护条件只是 containment,并非根因修复。后续改动需要独立提交,并采用相同的多种子评估协议。

这张地图旨在让其他开发者不过度解读地复核观察。源码、模型、复现设置和失败样例共同构成下一轮实验的基线。

22 个文件 · 5,126 行 — 展开文件夹后点击文件即可加载代码。

项目根目录2 个文件
CMakeLists.txttext · 35 行 · 772B

正在加载代码…

README.mdmarkdown · 28 行 · 885B

正在加载代码…

models/3 个文件
models/cheolsu.modeltext · 86 行 · 686B

正在加载代码…

models/minsu.modeltext · 86 行 · 639B

正在加载代码…

models/younghee.modeltext · 86 行 · 743B

正在加载代码…

src/11 个文件
src/card.cppc++ · 409 行 · 11KB

正在加载代码…

src/card.hc++ · 27 行 · 757B

正在加载代码…

src/dealer.cppc++ · 22 行 · 560B

正在加载代码…

src/dealer.hc++ · 21 行 · 445B

正在加载代码…

src/game.cppc++ · 854 行 · 29KB

正在加载代码…

src/game.hc++ · 159 行 · 4KB

正在加载代码…

src/main.cppc++ · 19 行 · 380B

正在加载代码…

src/mainwindow.cppc++ · 1,193 行 · 50KB

正在加载代码…

src/mainwindow.hc++ · 49 行 · 996B

正在加载代码…

src/model.cppc++ · 303 行 · 11KB

正在加载代码…

src/model.hc++ · 55 行 · 1KB

正在加载代码…

web/6 个文件
web/css/table.csscss · 210 行 · 7KB

正在加载代码…

web/index.htmltext · 38 行 · 2KB

正在加载代码…

web/js/engine.jsjavascript · 985 行 · 29KB

正在加载代码…

web/js/ui.jsjavascript · 358 行 · 12KB

正在加载代码…

web/poker.mariago.kr.conftext · 33 行 · 722B

正在加载代码…

web/test.mjsjavascript · 70 行 · 3KB

正在加载代码…