tune: 包庄阈值 60%→70% + 多牌加权 +10%/张
包庄: 100局校准 60%阈值→30%成功率 → 提至70%(更保守) 多牌: 加 MultiBonusPerCard=0.10 加权,但实际效果有限—— 两阶段选择已经无条件优先多牌。53%比例接近16张手牌 结构的天然上限(约一半牌可组组合,其余为散牌) 10局验证: DanZhang 88|DuiZi 61|ShunZi 19|SanDai2 10|LianDui 3|SiDai3 2
This commit is contained in:
@ -18,7 +18,8 @@ namespace PdkFriendServer.Logic
|
||||
{
|
||||
private readonly int _simulations;
|
||||
private readonly Random _rng;
|
||||
private const double BaoThreshold = 0.60;
|
||||
private const double BaoThreshold = 0.70; // 100局校准: 60%→30%, 提至70%
|
||||
private const double MultiBonusPerCard = 0.10; // 多牌加权: 每多1张+10%
|
||||
|
||||
public IsmctsBot(int simulations = 800)
|
||||
{
|
||||
@ -93,6 +94,17 @@ namespace PdkFriendServer.Logic
|
||||
scoredCandidates.Add((play, (double)wins / simsPerCandidate, allCandidates[ci].isMulti));
|
||||
}
|
||||
|
||||
// 多牌加权: 两阶段选择前给多牌候选加胜率偏置
|
||||
for (int i = 0; i < scoredCandidates.Count; i++)
|
||||
{
|
||||
if (scoredCandidates[i].isMulti)
|
||||
{
|
||||
int cardCount = scoredCandidates[i].play.Ids?.Length ?? 1;
|
||||
var (p, wr, m) = scoredCandidates[i];
|
||||
scoredCandidates[i] = (p, wr + cardCount * MultiBonusPerCard, m);
|
||||
}
|
||||
}
|
||||
|
||||
// 两阶段选择:多牌优先
|
||||
scoredCandidates.Sort((a, b) => b.winRate.CompareTo(a.winRate));
|
||||
var best = scoredCandidates[0];
|
||||
|
||||
Reference in New Issue
Block a user