From 76e4133f58cfa8c194629f5d815c67870702e301 Mon Sep 17 00:00:00 2001 From: xiaoou Date: Sun, 12 Jul 2026 22:56:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20afterMin=E7=89=8C=E6=95=88=E7=8E=87?= =?UTF-8?q?=E5=8A=A0=E6=9D=83=20=E2=80=94=20=E5=87=BA=E7=89=8C=E5=90=8E?= =?UTF-8?q?=E6=89=8B=E7=89=8C=E7=BB=93=E6=9E=84=E6=94=B9=E5=96=84=E2=86=92?= =?UTF-8?q?=E5=8A=A0=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - beforeMin = 当前手牌最小步数 - afterMin < beforeMin → +12% × improvement率 - afterMin > beforeMin 且多牌 → -3% (打散手牌惩罚) - 效果: 单张-1.2%, 三带二+0.9%, 飞机×3, 锁手+2次 --- PdkFriendServer/Logic/IsmctsBot.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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);