diff --git a/PdkFriendServer/Logic/IsmctsBot.cs b/PdkFriendServer/Logic/IsmctsBot.cs index b7ea20c4..e39a8904 100644 --- a/PdkFriendServer/Logic/IsmctsBot.cs +++ b/PdkFriendServer/Logic/IsmctsBot.cs @@ -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);