|
|
8b30caff1a
|
perf: FastSim rollout 支持对子 (DuiZi) — 模拟更真实
FastSim改进:
- 新轮次: 优先找最大对子 → 再出最大单张
- 跟牌: 对子跟牌→找≥2张同rank且大于对手
- 单张跟牌: 找最小可压牌
效果: 多牌29%, ShunZi 8.8%, DuiZi 19.0%, 0.8s/局
已知局限: 贪婪rollout低估清牌效率, 后续需全局序列优化
|
2026-07-12 23:31:11 +08:00 |
|
|
|
30a4d06b33
|
fix: SO-ISMCTS 多牌候选补全 — 恢复ShunZi/ZhaDan/SanZhang
BuildCandidates: 复用 IsmctsBot.AddMultiCardLeads 完整牌型枚举
- 对子/三张/顺子/炸弹/连对 → 与 IsmctsBot 完全一致
- 使用 PokerLogic.GetShunZi + PokerLogic.GetPlayZhaDans
效果:
- ShunZi 0%→13.8%
- DuiZi 正常 (21.8%)
- 速度 0.8s/局
- 仍需改进 FastSim rollout (仅模拟单张)
|
2026-07-12 23:28:40 +08:00 |
|
|
|
2af570c0b3
|
perf: SO-ISMCTS v2 — 静态牌池实现 1.0s/局 (8x提升)
SOIsmctsBot.cs 重写:
- 静态 FullDeck[52]: 52张牌只创建一次, 模拟时只交换ID数组
- 预生成300份对手手牌分布 (byte[] ID数组)
- FastSim核心全部用 byte/List<byte>, 零对象分配
- 8个候选→800次模拟=800×4个List.ToList (可忽略)
性能: 7.9s→1.0s/局 (8x)
触发: 298次SOv2决策, 2次LOCK
默认启用: InitBots改用SOIsmctsBot
vs IsmctsBot:
- SO 更快收敛(单树共享统计)
- SO 确定性预生成hand(无随机采样偏差)
- 速度相同(1.0s)
|
2026-07-12 23:24:13 +08:00 |
|
|
|
bce5e10cf2
|
feat: SO-ISMCTS 备选方案 (非默认)
SOIsmctsBot.cs (新文件, 284行):
- 单树共享统计: SONode 累积所有候选的胜/负
- 200次检查收敛: winRate>90% → 提前终止
- 整合 HandOptimizer/CardTracker/EndgameSolver/LockDetector
性能问题 (当前不启用):
- 每次模拟重新生成对手手牌(48张TCardInfoPdkF) → 5-8x慢
- 优化方向: 对象池缓存+批量determinization
- 作为备选bot保留, InitBots仍用 IsmctsBot
|
2026-07-12 23:14:52 +08:00 |
|