|
|
7566fe99a1
|
feat(PX): 自训练v1.5 P0准备 — NHN模式 + 总分法胜率解析 + 评估管线
CB-01: Program.cs 加 --nhn 模式 [NEURAL,ISMCTS,NEURAL]
- 3人跑得快 N插花坐排列
- Rotations 数组补全为4种排列 (IIN/NII/INI/NHN)
- --nhn 参数: 不生成CSV, 直接评估
CB-02: 胜率解析统一总分法
- TrainingCollector 加 ScoreAccumulator/BotWins/BotGames 静态累加器
- GameOver 无条件调用 AccumulateScore (eval + 训练模式均记录)
- stress_summary.txt 输出 #BOT_SCORES: bot=wins/games,wr=XX%,score=YYY
- orchestrator eval 解析改用 #BOT_SCORES 格式, 正则回退逻辑移除
管线: orchestrator eval→stress_summary→总分法解析, 闭环可验证
|
2026-07-20 15:40:59 +08:00 |
|
|
|
ebf2a0dc98
|
fix: N2H2V5独立分支用NeuralBotV5 - 新增NeuralBotV5类 + InitBots映射 + --n2h2v5参数
|
2026-07-18 11:20:14 +08:00 |
|
|
|
dc17c0f464
|
feat: position rotation every 10 games in self-play
--mix-rotate: 每10局轮换bot排列
[ISMCTS,ISMCTS,NEURAL] → [NEURAL,ISMCTS,ISMCTS] → [ISMCTS,NEURAL,ISMCTS]
Neural 三个位置都练到, 数据分布平衡
orchestrator改用--mix-rotate替换--mix
|
2026-07-13 11:28:45 +08:00 |
|
|
|
15b9ccb22b
|
feat: --eval 评估模式 (ISMCTS/ISMCTS/NEURAL, 不生成CSV)
|
2026-07-13 08:38:18 +08:00 |
|
|
|
493da4216d
|
feat: --mix-ismcts 纯ISMCTS训练模式 + --bots 自定义bot组合 (Mac无ONNX时自动切换)
|
2026-07-13 03:51:52 +08:00 |
|
|
|
24d6d02a22
|
fix: macOS Console.SetOut Dispose顺序 — 先恢复再Close避免ObjectDisposedException
|
2026-07-13 03:48:54 +08:00 |
|
|
|
b619b84f2a
|
config: --mix改为2×ISMCTS+1×NeuralBot (训练评估模式)
|
2026-07-13 03:18:47 +08:00 |
|
|
|
f43e47b0a6
|
feat: V-learning架构 — 改Q→V
Q-learning问题: pass action Q值稳定偏高 → 永远pass
V-learning修复:
- 网络输出 14(Q-action)→1(V-state): P(win|state)
- NeuralBot: 对每个候选编码出牌后state → 选V值最高的
- pass和出牌都是候选, 公平竞争(不是固定action slot)
TrainingCollector:
- 新增 EncodeAfterPlay(view, tracker, afterHand, playedIds)
- EncodeState 支持 extraSeen 参数(模拟出牌时标记已见)
Python:
- train_v.py: V-learning训练器(load CSV→predict win/loss)
- network.py: OUTPUT_DIM=14→1
验证: 200局0错误, V-model loss 0.81→0.0001
需更多数据覆盖状态空间
|
2026-07-13 02:52:48 +08:00 |
|
|
|
89743cd511
|
feat: NeuralBot — ONNX模型驱动的Bot + 混合Bot训练架构
NeuralBot.cs:
- 加载ONNX模型,状态编码与Python trainer完全一致(13rank×4suit×7ch=364)
- ε-greedy探索(10%) + ONNX推理选Q值最高动作
- 多牌候选: 对子/三带二(优先带对子)/顺子/炸弹
PdkGameMain:
- BotTypes静态配置: ["NEURAL","NEURAL","ISMCTS"] = 2模型+1ISMCTS
- --mix参数: dotnet run -- --mix 100
hjha-console:
- --mix参数自动设置BotTypes并转调--stress
验证: 3局0错误, 1.3s/局, NeuralBot出牌正常
|
2026-07-13 02:20:44 +08:00 |
|
|
|
8de64cc6ae
|
fix: 压测日志接入 ISMCTS stdout (sims/winRate) 到每局文件
|
2026-07-07 16:04:35 +08:00 |
|
|
|
4a3fbec057
|
test: 1000轮 ISMCTS 压测 + 完整分析报告
新增:
- hjha-console/Program.cs: --stress N 压测模式
- 每局独立日志 stress_logs/round_NNNNN.txt
- 每 50 局进度汇报 + 异常捕获
- docs/stress-test-report.md: 完整分析报告
- P0: 包庄严重高估(5.2%成功) → 需校准阈值
- P1: 75 moves 异常局 → 疑似死循环
- P2: 只出单张不组合 → rollout 优化
- P3: 性能瓶颈分析
- .gitignore: stress_logs/, analyze_stress.py
压测结果: 12.8min, 0 crashes, 1000/1000通过
|
2026-07-07 13:53:46 +08:00 |
|
|
|
ec87d921a3
|
feat: PdkBot — 外挂式自动出牌机器人
架构:
- IPdkBot 接口:外挂接入点,与核心逻辑解耦
- PdkBotView:只传自己手牌+公开信息(MaxPlayCard/ShenYuCard/Rule)
不暴露其他玩家手牌——模拟真人视角
- PdkBot:score-based 最优策略
评分维度:直接获胜>>对手威胁>>牌效率>>炸弹保留>>先手权>>黑桃3
对接:
- PdkGameMain.BotMode=true 启用
- WaitWanJiaShuRu中BuildBotView→bot.DecidePlay/DecideBaoZhuang
- GameBaoZhuang解除WhoPlay=GetNextPos注释以支持逐人轮询
- SetFalseOperation加DeskGameDo null守卫
文件:
- PdkFriendServer/Logic/PdkBot.cs(核心机器人)
- PdkFriendServer/Logic/PdkGameMain.cs(BotMode+对接)
- hjha-console/Program.cs(main.BotMode=true启动)
|
2026-07-07 13:11:13 +08:00 |
|
|
|
7b6c031d44
|
feat: net10.0 Linux Console mode — zero Mono, 0 compile errors
Migrated from net48 (.NET Framework) to net10.0 (cross-platform):
- All 14 csproj: net48 → net10.0, WindowsDesktop SDK → Microsoft.NET.Sdk
- Excluded WinForms files (Form/**, DebugControl, GameControl, etc.)
- Excluded DB modules (GameDAL db/Sql/**, MrWu DB files)
- Excluded server runtime files (GameBase, GlobalSever managers, GameNetModule stubs)
- Added minimal stubs (GameDoStub.cs, NamespaceStubs.cs, ServerCoreStubs.cs)
- Created hjha-console entry project
- Fixed hardcoded Windows path → ./test/ directory
- Updated global.json to SDK 10.0.109
Console test mode: PdkGameMain(null).Test() → 发牌→包庄→打牌→结算
Verified: dotnet build 0 errors, dotnet run outputs game state machine
|
2026-07-07 12:47:59 +08:00 |
|