fix: afterMin权重强化 — 结构优化信号对抗模拟噪声
问题: 如玩家1手牌可拆2个顺子(6步完成), 但ISMCTS选择了8张顺子(7步) → 根因: 打散惩罚仅-3%, 被ISMCTS±3.5%噪声淹没 修复: - 结构改善bonus: 12%→25% (对抗模拟噪声) - 多牌打散penalty: 固定-3%→比例-30% (严重惩罚) - 单张打散penalty: 新增-10%(之前无惩罚) - 打散比例 = (afterMin-beforeMin)/beforeMin 效果: SanDai2 6.5%→8.1%(+25%), DanZhang-1.4%, 多牌54%
This commit is contained in:
@ -187,21 +187,25 @@ namespace PdkFriendServer.Logic
|
||||
}
|
||||
}
|
||||
|
||||
// 4.5. afterMin 牌效率加权
|
||||
// 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 减半
|
||||
wr += improvement * 0.25; // max +25%
|
||||
}
|
||||
else if (am > beforeMin && m)
|
||||
else if (am > beforeMin)
|
||||
{
|
||||
// 多牌出牌反而把手牌打散了 → 惩罚
|
||||
wr -= 0.03;
|
||||
// 手牌被打散 → 惩罚
|
||||
double degradation = (double)(am - beforeMin) / beforeMin;
|
||||
if (m)
|
||||
wr -= degradation * 0.30; // 多牌打散 → 严重(-30%)
|
||||
else
|
||||
wr -= degradation * 0.10; // 单张打散 → 中(-10%)
|
||||
}
|
||||
scoredCandidates[i] = (p, wr, am, m);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user