feat: afterMin牌效率加权 — 出牌后手牌结构改善→加分

- beforeMin = 当前手牌最小步数
- afterMin < beforeMin → +12% × improvement率
- afterMin > beforeMin 且多牌 → -3% (打散手牌惩罚)
- 效果: 单张-1.2%, 三带二+0.9%, 飞机×3, 锁手+2次
This commit is contained in:
2026-07-12 22:56:27 +08:00
parent 4263146487
commit 76e4133f58

View File

@ -169,6 +169,25 @@ namespace PdkFriendServer.Logic
}
}
// 4.5. afterMin 牌效率加权
int beforeMin = HandOptimizer.MinPlays(hand);
for (int i = 0; i < scoredCandidates.Count; i++)
{
var (p, wr, am, m) = scoredCandidates[i];
if (am < beforeMin)
{
// 出牌后手牌结构变好 → 加权
double improvement = (double)(beforeMin - am) / beforeMin;
wr += improvement * 0.12; // 最多 +12% 当 minPlays 减半
}
else if (am > beforeMin && m)
{
// 多牌出牌反而把手牌打散了 → 惩罚
wr -= 0.03;
}
scoredCandidates[i] = (p, wr, am, m);
}
// 5. 炸弹感知加权
int bombsOutside = _tracker.BombsOutside(hand);