@echo off REM ============================================================ REM PoolCoach - Thi nghiem 20/07/2026 toi (double-click de chay) REM REM Dataset 10k (seed 124) da sanity PASS: Q xb2 0.874 (~2k: 0.877), REM b2_lucky 44.6%%, ~87 combo/ban, 12/10000 ban 0-pot, co luu combos. REM REM Phase 1: Relabel canonical + sweep pocket-margin {0.05,0.10,0.15} REM + ban --limit 2000 (tach hieu ung N vs label rule) REM Phase 2: BC train tren tung ban relabel REM -> nhin val MSE per-component co THOAT variance baseline khong REM Phase 3: Eval 1000 cu tung model REM -> GATE G1: Q|pot > 0.65 va pot >= 10%% REM Phase 4: Eval 1000 cu 2 model BC v1 (bang FAIL chinh thuc cho luan van) REM REM Uoc luong: relabel ~giay; moi BC train ~vai phut; moi eval 1000 ~2-4 phut. REM ============================================================ if "%~1"=="_go" goto :inner cmd /k "%~f0" _go exit /b :inner set "VENV=D:\Khoa luan\poolcoach-env\Scripts\activate.bat" set "REPO=D:\Khoa luan\poolcoach-rl" set "DS=data\bc_dataset_10000_124.npz" if not exist "%VENV%" ( echo [loi] Khong tim thay venv: "%VENV%" goto :eof ) call "%VENV%" cd /d "%REPO%" echo. echo ===== Phase 1: Relabel (5 ban) ===== python scripts\relabel_bc_dataset.py %DS% python scripts\relabel_bc_dataset.py %DS% --pocket-margin 0.05 python scripts\relabel_bc_dataset.py %DS% --pocket-margin 0.10 python scripts\relabel_bc_dataset.py %DS% --pocket-margin 0.15 python scripts\relabel_bc_dataset.py %DS% --limit 2000 echo. echo ===== Phase 2: BC train (5 run) ===== python scripts\train_bc.py --dataset data\bc_dataset_10000_124_canon.npz --run-name bc_canon_20260720 python scripts\train_bc.py --dataset data\bc_dataset_10000_124_canon_p0.05.npz --run-name bc_canon_p005_20260720 python scripts\train_bc.py --dataset data\bc_dataset_10000_124_canon_p0.1.npz --run-name bc_canon_p010_20260720 python scripts\train_bc.py --dataset data\bc_dataset_10000_124_canon_p0.15.npz --run-name bc_canon_p015_20260720 python scripts\train_bc.py --dataset data\bc_dataset_10000_124_canon_n2000.npz --run-name bc_canon_n2000_20260720 echo. echo ===== Phase 3: Eval 1000 cu (gate G1: Q^|pot ^> 0.65, pot ^>= 10%%) ===== python scripts\eval_position.py models\bc_canon_20260720\bc_model.zip --episodes 1000 --aim-mode any python scripts\eval_position.py models\bc_canon_p005_20260720\bc_model.zip --episodes 1000 --aim-mode any python scripts\eval_position.py models\bc_canon_p010_20260720\bc_model.zip --episodes 1000 --aim-mode any python scripts\eval_position.py models\bc_canon_p015_20260720\bc_model.zip --episodes 1000 --aim-mode any python scripts\eval_position.py models\bc_canon_n2000_20260720\bc_model.zip --episodes 1000 --aim-mode any echo. echo ===== Phase 4: Moc FAIL BC v1 cho bang luan van (eval 1000) ===== python scripts\eval_position.py models\bc_b2_20260720_023456\bc_model.zip --episodes 1000 --aim-mode any python scripts\eval_position.py models\bc_xb2_20260720_023456\bc_model.zip --episodes 1000 --aim-mode any echo. echo ============================================================ echo XONG. Doc ket qua theo thu tu: echo 1. Phase 1: %% ban giu lai theo pocket-margin (retention vs sach) echo 2. Phase 2: val MSE per-component - THOAT variance baseline chua? echo (train_bc tu canh bao neu ^>=2 component van dinh baseline) echo 3. Phase 3: GATE G1 = Q^|pot ^> 0.65 va pot ^>= 10%% echo - PASS -^> chot label rule, sang buoc fine-tune PPO --init-from echo - FAIL -^> v3: pocket-id conditioning / classification head echo ============================================================