diff --git a/SAC_LSTM_Bot/docs/campaign_dashboard.svg b/SAC_LSTM_Bot/docs/campaign_dashboard.svg index f678f5f..0ef8c26 100644 --- a/SAC_LSTM_Bot/docs/campaign_dashboard.svg +++ b/SAC_LSTM_Bot/docs/campaign_dashboard.svg @@ -1,7 +1,7 @@ SAC-LSTM campaign dashboard - live run (current only) -generated 2026-08-23 10:25:46 - auto-reloads every 60 s (open this file in Chrome) +generated 2026-08-23 10:29:53 - auto-reloads every 60 s (open this file in Chrome) Test matches - win % vs opponents raw dots = single test matches, thick = rolling-mean-10 @@ -12,22 +12,24 @@ - -10 - -20 - -30 - -40 - -50 - -60 - -70 - -80 + +10 + +20 + +30 + +40 + +50 + +60 + +70 + +80 + +90 0 @@ -43,278 +45,283 @@ test match number (each opponent) win rate (%) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -Corners - 88 evals +Corners - 90 evals -Crazy - 88 evals +Crazy - 90 evals -Target - 88 evals +Target - 89 evals Real fights - win % per opponent training_log.jsonl only - learning in REAL battles, not tests @@ -325,16 +332,18 @@ - -300 - -600 - -900 - -1200 - -1500 + +300 + +600 + +900 + +1200 + +1500 + +1800 0 @@ -349,26 +358,27 @@ 100 game number (100-game buckets) win % - - - - - - - - - - + + + + + + + + + + + Crazy (420 games) RamFire (420 games) -Target (180 games) +Target (190 games) -SacTwin (170 games) +SacTwin (180 games) -Corners (602 games) +Corners (610 games) Training losses (log scale) training_metrics.jsonl - big early spikes are normal @@ -397,11 +407,11 @@ 46 -91 +92 -136 +138 -181 +183 0.1 @@ -414,8 +424,8 @@ 1e+17 metric line number loss (log) - - + + critic_loss @@ -434,11 +444,11 @@ 46 -91 +92 -136 +138 -181 +183 0 @@ -451,7 +461,7 @@ 1.01 metric line number alpha - + Throughput - games per hour method: training_metrics.jsonl 'epoch' deltas (training_log.jsonl has no timestamps); 1 row = one 10-game chunk @@ -461,26 +471,26 @@ - -18 - -36 - -54 - -72 - -90 - -108 - -126 - -144 - -162 - -180 + +18 + +36 + +54 + +72 + +90 + +108 + +126 + +144 + +162 + +180 0 @@ -494,186 +504,188 @@ chunk interval (10-game chunks) games / hour - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How to read Regenerate anytime: python3 tools/plot_progress.py diff --git a/SAC_LSTM_Bot/tools/plot_progress.py b/SAC_LSTM_Bot/tools/plot_progress.py index 9b2274d..38d1500 100644 --- a/SAC_LSTM_Bot/tools/plot_progress.py +++ b/SAC_LSTM_Bot/tools/plot_progress.py @@ -429,10 +429,10 @@ def panel_throughput(rows, geo): if len(bm) >= 2: ctr = [xm(round((i + 0.5) * len(rates) / len(bm))) for i in range(len(bm))] s += polyline(list(zip(ctr, map(ym, bm))), "#2ca02c", 3.5) + return s # ---------- assembly ---------- - return s def build_dashboard(campaign, metrics_f, games_f, out): series = parse_eval_series(campaign)