|
|
73c8783276
|
feat: 对手牌型预测 — PredictOpponent + ISMCTS 候选加权
CardTracker:
- 新增 OpponentPrediction 类: RankProbabilities/MaxRank/BombProbability/LikelyPairs/LikelyTriples/MaxStraightLength
- 新增 PredictOpponent: 基于剩余rank计数+对手手牌数计算期望持有量
核心公式: expected = remainingCount × (oppNeed / totalUnknown)
推断: 对子(>=1.5期望)/三张(>=2.5)/炸弹概率/顺子长度/MaxRank
- Pass约束强化: 对手pass过某单张 → 降低MaxRank
IsmctsBot:
- 新增步骤5.7 对手牌型预测加权:
我的出牌rank > 对手MaxRank → +8-13%
我的出牌rank < 对手MaxRank → -5%
对手可能有炸弹 → 大牌型-3%
验证: 100局0错误 0.8s/局
|
2026-07-13 01:05:14 +08:00 |
|
|
|
1b1404f38e
|
feat: 确定性牌计数推理v2 — AbsoluteHandStrength + 包庄否决 + 混合策略修正
CardTracker:
- 新增 AbsoluteHandStrength: 综合评估手牌实力(rank控制/绝对最高牌/炸弹/效率/已知率)
- 用于包庄决策的安全检查
IsmctsBot:
- EstimateWinProbability: 混合策略回退为纯ISMCTS + 确定性否决
(混合加成导致虚假信心, v3验证0%胜率)
- 策略: detStrength<0.15 → 直接否决不包, 否则纯ISMCTS
- 阈值保持 v2 水平: minPlays≤3→0.50,≤4→0.60,≤5→0.65
验证: 100局0错误 0.8s/局 ENDGAME=983次 LOCK=3次
|
2026-07-13 00:59:48 +08:00 |
|
|
|
5cc2ae8bd0
|
fix: 确定性牌计数推理 — UnknownCount修复 + 绝对大牌判断 + EndgameSolver修正
CardTracker:
- UnknownCount: 52→48 - handSize - seenCount (修正底牌+手牌漏算)
- 新增 RemainingCount/GetUnknownPool: 精确剩余牌计数
- 新增 IsAbsolutelyHighest: 全牌型确定性无敌判断 (单张/对子/三张/炸弹/顺子/连对/飞机)
EndgameSolver:
- GeneratePool → 调用 tracker.GetUnknownPool (修复已见牌未排除bug)
IsmctsBot:
- 确定性无敌出牌加成: 无敌出牌 +15-25% win rate bonus
SOIsmctsBot:
- 同步 UnknownCount(hand) 调用
验证: 100局0错误, 0.8s/局, ENDGAME求解正常触发
|
2026-07-13 00:40:27 +08:00 |
|
|
|
180be25ffa
|
fix: code review — 修复4个问题
1. CardTracker.UnknownCount: 48→52 (硬编码修正)
2. IsmctsBot.GenerateDeck → 静态FullDeck池复用 (减少对象分配)
3. CardTracker: 删除3个死字段(_passStreak/_isNewRound/_bombCounts)
4. CardTracker.Update: 清理pass约束记录逻辑
验证: 100局0错误, 0.9s/局
|
2026-07-13 00:21:15 +08:00 |
|
|
|
4263146487
|
fix: code review — 清理CardTracker死代码 + IsmctsBot未使用变量
CardTracker.BombsOutside: 删除13行注释+空循环(seenByRank从未填充)
IsmctsBot: 删除未使用的bombRanks变量
|
2026-07-12 22:51:48 +08:00 |
|
|
|
e67b06caa3
|
feat: CardTracker — 出牌记录+对手手牌推断+炸弹检测
CardTracker.cs (新文件, 400行):
- 48位bitset追踪已出牌(按ID)
- 对手pass约束记录: pass对子9→该对手无对子≥9
- BombsOutside(): 外面还剩几个炸弹
- BombRanks(): 可能藏炸弹的rank列表
- CanAnyoneBeat(play): 判断是否可能被压制
- SampleOpponentHands(): 约束采样替代随机分配
- 支持6种牌型的压制判断: 单张/对子/炸弹/顺子/连对/飞机
IsmctsBot.cs 整合:
- CardTracker实例,每次DecidePlay/DecideBaoZhuang调用Update()
- 炸弹感知加权: 外面没炸弹→我方炸弹+25%, 快赢时+15%
- 外面有炸弹且快赢→保守出牌(-5%多牌分)
- SimulateToEnd改用约束采样(回退随机补齐)
|
2026-07-12 22:36:22 +08:00 |
|