chore: rename libs→common_libs, all bot dirs to _garage suffix, fix all path refs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-08-27 18:18:41 +02:00
parent f8c0c871c6
commit b509195ee9
832 changed files with 4967 additions and 368 deletions
+187
View File
@@ -0,0 +1,187 @@
# PPO Curriculum — Running State File
Chunk 1 of larger campaign. Source of truth for resuming.
Bots (easy->hard order): Fire, MyFirstDroid, Target, MyFirstLeader, Crazy, MyFirstBot, PaintingBot, Corners.
Protocol: BLOCK (train to N+200) -> GATE (frozen eval to N+350, PASS >=148/150) -> snapshot best_<Bot>_r<N+350>.
Maintenance from 3rd mastered bot on: frozen eval 100 rounds per mastered bot; bar >=97/100; else replay.
GATE bar: >=148/150. MAINT bar: >=97/100. Max 3 attempts per bot.
## Baseline (verified pre-chunk)
- round_counter.txt = 10905
- Weights proven (frozen eval): Fire/Target/Crazy/MyFirstDroid/MyFirstLeader 100%,
MyFirstBot/PaintingBot 99%, Corners 93%, VelocityBot 10%, TrackFire/RamFire/SpinBot/Walls 0%,
MyFirstTeam 0% (1v5, flagged).
- Bot launchers chmod-fixed. Logs rotate per phase. Snapshots = cp -a of weights/latest.
---
## Bot 1: Fire
- block1: 2026-08-19 16:41, counter 10905 -> 11105 (200 train rounds, 200 train lines, 199W/1L, 0 NaN, no crash)
log: logs/train_Fire_block1_20260819_164245.jsonl
- gate1: 2026-08-19 16:42, eval to 11255 (150 rounds, 0 train lines, 149W) -> PASS >=148
log: logs/eval_Fire_gate_20260819_164311.jsonl
- SNAPSHOT best_Fire_r11255: MISSING (operator error: snapshots/ dir absent; cp failed, training overwrote weights before retry). RECOVERY below.
- block2 (REDO): 2026-08-19 16:46, counter 11605 -> 11805 (200 train, 200W, 0 NaN). Log: logs/train_Fire_block2_20260819_164631.jsonl
- gate2 (REDO): 2026-08-19 16:47, eval to 11955 (150 rounds, 0 train lines, 150W) -> PASS. Log: logs/eval_Fire_gate2_20260819_164740.jsonl
- SNAPSHOT: snapshots/best_Fire_r11955 (40 files)
- STATUS: PASS (150/150)
- maint (post-Target): 100/100 PASS. Log: logs/eval_Fire_maint_20260819_164849.jsonl
## Bot 2: MyFirstDroid
- block1: 2026-08-19 16:43, counter 11255 -> 11455 (200 train rounds, 200 train lines, 200W, 0 NaN)
ANOMALY: operator Ctrl-C at round ~127 triggered run.sh crash-restart (">>> Restart #2, 73 rounds remaining"); round sequence in log continuous (11256..11455, no gaps), slice valid. Log: logs/train_MyFirstDroid_block1_20260819_164349.jsonl
- gate1: 2026-08-19 16:44, eval to 11605 (150 rounds, 0 train lines, 150W) -> PASS. Log: logs/eval_MyFirstDroid_gate_20260819_164506.jsonl
- SNAPSHOT: snapshots/best_MyFirstDroid_r11605 (40 files)
- STATUS: PASS (150/150)
- maint (post-Target): 100/100 PASS. Log: logs/eval_MyFirstDroid_maint_20260819_164919.jsonl
## Bot 3: Target
- block1: 2026-08-19 16:48, counter 11955 -> 12155 (200 train, 200W, 0 NaN). Log: logs/train_Target_block1_20260819_164823.jsonl
- gate1: 2026-08-19 16:49, eval to 12305 (150 rounds, 0 train lines, 150W) -> PASS. Log: logs/eval_Target_gate_20260819_164928.jsonl
- SNAPSHOT: snapshots/best_Target_r12305 (40 files)
- STATUS: PASS (150/150)
- maint (post-self): 100/100 PASS. Log: logs/eval_Target_maint_20260819_165033.jsonl
- MAINTENANCE ROUND 1 (post-Target): Fire 100/100, MyFirstDroid 100/100, Target 100/100. NO regressions. No replays.
## Bot 4: MyFirstLeader
- block1: 2026-08-19 17:06, counter 12605 -> 12805 (200 train, 200W, 0 NaN). Log: logs/train_MyFirstLeader_block1_20260819_170632.jsonl
- gate1: 2026-08-19 17:07, eval to 12955 (150 rounds, 0 train, 150W) -> PASS. Log: logs/eval_MyFirstLeader_gate_20260819_170720.jsonl
- SNAPSHOT: snapshots/best_MyFirstLeader_r12955 (40 files)
- STATUS: PASS (150/150)
- maint r2 (post-self): 100/100 PASS. Log: logs/eval_MyFirstLeader_maint_20260819_171104.jsonl
- maint r3 (post-Crazy): 100/100 PASS. Log: logs/eval_MyFirstLeader_maint_20260819_171246.jsonl
- MAINTENANCE ROUND 2 (post-Leader): Fire 100, MyFirstDroid 100, Target 100, MyFirstLeader 100 -> NO regressions, no replays.
## Bot 5: Crazy
- block1: 2026-08-19 17:12, counter 13355 -> 13555 (200 train, 200W, 0 NaN). Log: logs/train_Crazy_block1_20260819_171246.jsonl
- gate1: 2026-08-19 17:13, eval to 13705 (150 rounds, 0 train, 150W) -> PASS. Log: logs/eval_Crazy_gate_20260819_171346.jsonl
- SNAPSHOT: snapshots/best_Crazy_r13705 (40 files)
- STATUS: PASS (150/150)
- maint r3 (post-self): 99/100 PASS. Log: logs/eval_Crazy_maint_20260819_171623.jsonl
- MAINTENANCE ROUND 3 (post-Crazy): Fire 99, MyFirstDroid 100, Target 100, MyFirstLeader 100, Crazy 99 -> NO regressions, no replays.
ANOMALY (logs): mid-run log rename at 17:00:44 (before Droid maint eval finished) split Droid/Target round lines across files; win evidence intact
(Droid 100 game lines win, Target 100 game lines win). Logs: eval_MyFirstDroid_maint_20260819_170044.jsonl (85 round+100 game),
eval_Target_maint_20260819_170055.jsonl (100 game). No crash; counter continuity verified (13805->13905->14005).
## Bot 6: MyFirstBot
- block1: 2026-08-19 17:18, counter 14205 -> 14405 (200 train, 0W/200L, 0 NaN) — REGRESSION vs baseline 99%; policy loses every round.
Log: logs/train_MyFirstBot_block1_20260819_171827.jsonl
- gate1: eval to 14555: 0/150 FAIL. Log: logs/eval_MyFirstBot_gate1_20260819_171920.jsonl
- block2: 2026-08-19 17:22, counter 14555 -> 14955 (400 train, 0W/400L). Log: logs/train_MyFirstBot_block2_20260819_172215.jsonl
- gate2: eval to 15105: 0/150 FAIL. Log: logs/eval_MyFirstBot_gate2_20260819_172327.jsonl
- block3: 2026-08-19 17:24, counter 15105 -> 15505 (400 train, 0W/400L). Log: logs/train_MyFirstBot_block3_20260819_172448.jsonl
- gate3: eval to 15655: 0/150 FAIL. Log: logs/eval_MyFirstBot_gate3_20260819_172625.jsonl
- STATUS: OPEN (3 attempts, 1000 train + 450 gate rounds, 0 wins total; eval mechanicals verified: 0 train lines in gates, counter advances, no NaN). Likely policy basin shift (aggressive brawler vs stationary out-damager). Snapshot anyway: snapshots/best_MyFirstBot_r15655.
- Chunk 2/3 to revisit (possibly via PaintingBot/Corners transfer).
## Bot 7: PaintingBot
- CATASTROPHE (previous session overshoot): run.sh ran unbounded from 15655 to 31694 (16039 rounds)
vs PaintingBot; 3/16027 wins (0%). Policy collapsed. Log: logs/train_PaintingBot_catastrophe_20260819_191718.jsonl
(0 NaN, no coredump, but weights destroyed by repeated loss signal).
- RECOVERY: 2026-08-19 19:17 — restored weights from snapshots/best_Crazy_r13705; round_counter stays 31694.
ROOT CAUSE: Crazy-snapshot weights cannot beat PaintingBot (chunk training caused catastrophic forgetting;
baseline 99% was from pre-chunk Fire-campaign weights). best_Fire_r11955 (closest to baseline) needed.
- block1: 2026-08-19 19:18, counter 31694 -> 31894 (200 train rounds from Crazy restore; 0/200 wins)
log: logs/train_PaintingBot_block1_20260819_192027.jsonl
- gate1: 2026-08-19 19:21, eval to 32044 (150 rounds, 0 train lines, 0/150) -> FAIL
log: logs/eval_PaintingBot_gate1_20260819_192129.jsonl
- RESTORE: best_Fire_r11955 (pre-chunk-adjacent, known 99% vs PaintingBot). Counter stays 32044.
- block2: 2026-08-19 19:23, counter 32044 -> 32444 (400 train rounds, 400/400 wins, 0 NaN)
log: logs/train_PaintingBot_block2_20260819_192325.jsonl
- gate2: 2026-08-19 19:24, eval to 32594 (150 rounds, 0 train lines, 146/150) -> FAIL (bar >=148)
log: logs/eval_PaintingBot_gate2_20260819_192401.jsonl
- block3: 2026-08-19 19:24, counter 32594 -> 32994 (400 train rounds, 400/400 wins, 0 NaN)
log: logs/train_PaintingBot_block3_20260819_192507.jsonl
- gate3: 2026-08-19 19:26, eval to 33144 (150 rounds, 0 train lines, 147/150) -> FAIL (bar >=148)
log: logs/eval_PaintingBot_gate3_20260819_192630.jsonl
- STATUS: OPEN (3 attempts: block1 0/200 from Crazy, block2 400/400 from Fire, block3 400/400 from Fire;
gate results 0/150, 146/150, 147/150 — high variance, bar missed by 1-4 in gates 2+3).
Likely issue: gate runs single JVM with Corners-like random-state dependency (initial corner selection for
PaintingBot = random; policy may be sensitive to specific PaintingBot seed/state at eval time).
Snapshot: snapshots/best_PaintingBot_r33144.
- MAINTENANCE (post-OPEN, 2026-08-19 19:27): Fire 100, MyFirstDroid 100, Target 100, MyFirstLeader 100,
Crazy 99 — NO regressions. No replays.
Logs: eval_Fire_maint_20260819_192658.jsonl, eval_MyFirstDroid_maint_20260819_XXXXXX.jsonl, etc.
## Bot 8: Corners
- NOTE: Corners bot switches corner on death when losing. Single-JVM gate has fixed initial corner;
policy must handle all 4 corner positions. Training (each JVM = new random corner) cycles all 4.
- block1: 2026-08-19 19:29, counter 33644 -> 33844 (200 train rounds from PaintingBot weights; 78/200 wins,
declining trend: 1/50 in last 50). Training degraded policy.
log: logs/train_Corners_block1_20260819_192947.jsonl
- gate1: 2026-08-19 19:30, eval to 33994 (150 rounds, 0 train, 0/150) -> FAIL
log: logs/eval_Corners_gate1_20260819_193050.jsonl
- RESTORE: best_Fire_r11955 (same as PaintingBot recovery). Counter stays 33994.
- block2: 2026-08-19 19:32, counter 33994 -> 34394 (400 train rounds from Fire restore; 231/400 wins,
improving: 0/50 early, 50/50 last 50; 0 NaN). Policy converges during training.
log: logs/train_Corners_block2_20260819_193239.jsonl
- gate2: 2026-08-19 19:32, eval to 34544 (150 rounds, 0 train, 17/150) -> FAIL.
Gate starts wins then fails: 7 wins (favorable initial corner), then losses (unfavorable corners).
log: logs/eval_Corners_gate2_20260819_193510.jsonl
- block3: 2026-08-19 19:35, counter 34544 -> 34944 (400 train rounds; 343/400 wins, 0/50 early,
50/50 last 50; 0 NaN). log: logs/train_Corners_block3_20260819_193622.jsonl
- gate3: 2026-08-19 19:37, eval to 35094 (150 rounds, 0 train, 148/150) -> PASS (exactly at bar)
log: logs/eval_Corners_gate3_20260819_193705.jsonl
- SNAPSHOT: snapshots/best_Corners_r35094 (40 files)
- STATUS: PASS (148/150, gate3)
- MAINTENANCE ROUND 5 (post-Corners PASS): Fire 100, MyFirstDroid 100, Target 100, MyFirstLeader 100,
Crazy 99 — NO regressions. No replays.
Final counter: 35594.
---
## Chunk 1 Summary
- Mastered: Fire, MyFirstDroid, Target, MyFirstLeader, Crazy, Corners (6 bots)
- OPEN: MyFirstBot, PaintingBot
- Final round_counter: 35594
- Active weights: best_Corners_r35094 restore point
- Snapshots: best_Fire_r11955, best_MyFirstDroid_r11605, best_Target_r12305,
best_MyFirstLeader_r12955, best_Crazy_r13705, best_PaintingBot_r33144, best_Corners_r35094
(best_MyFirstBot_r15655 = OPEN snapshot)
- Key findings: chunk training causes forgetting of PaintingBot/Corners — pre-chunk weights
(best_Fire_r11955 as proxy) needed to re-learn these. Corners gate is corner-position-variance
sensitive (single JVM, single random corner for full eval run).
---
## Chunk 2 (session 2026-08-19, agent: claude-code)
### PaintingBot retry
- Restored best_PaintingBot_r33144 weights
- Training block: 200 rounds, 15.5% win rate (exploration noise; 57% in last 50 rounds)
- Gate eval 1 (frozen, stochastic): 145/150 — FAIL (losses rounds 1-5, cold-start)
- Training block 2: 200 more rounds, 200/200 (100%) in training mode
- Gate eval 2: 147/150 — FAIL (losses rounds 1, 2, 6)
- Gate eval 3: 146/150 — FAIL (losses rounds 1, 2, 5, 6)
- Deterministic eval fix attempted (mean action instead of sampling): 0/150 — REVERTED
- Root cause: policy trained with Gaussian noise; mean action is degenerate
- PPOB_EVAL_ONLY already correct: freezes weights but keeps stochastic sampling
- PaintingBot: OPEN (cold-start EnemyTracker history buffer = ~3-5 early-round losses; 97%+ once warmed up)
- Snapshot: best_PaintingBot_r36603
### Maintenance evals (from best_Corners_r35094 restore)
- Fire: 100/100 PASS
- MyFirstDroid: 100/100 PASS
- Target: 100/100 PASS
- MyFirstLeader: 100/100 PASS
- Crazy: 100/100 PASS
- Corners: 93/100 FAIL → replay 200 rounds (200/200 training) → re-eval 100/100 PASS
### MyFirstBot investigation
- 500 training rounds: 17 wins in rounds 1-18 (carry-over), then 0/482
- Total across chunks: ~2400 rounds, near-zero learning signal
- Root cause analysis — architectural hard counter:
1. No bullet-in-flight state representation → can't correlate fire decisions with dodge response
2. Aim space too tight (±12.5% arena around enemy) → can't aim at predicted post-dodge position
3. Credit assignment chain too long: fire → bullet travel → hit → dodge → needed different aim
4. State[15] (enemy turn rate) CAN detect the dodge, but can't ANTICIPATE it
5. MyFirstBot's key mechanic: 90° perpendicular turn on every bullet hit + constant gun sweep
- MyFirstBot: OPEN (needs state/action space architecture changes, not more training)
### Chunk 2 Summary
- Mastered: Fire, MyFirstDroid, Target, MyFirstLeader, Crazy, Corners (6/8 — unchanged)
- OPEN: PaintingBot (cold-start variance, 97%+ capable), MyFirstBot (architectural gap)
- Final round_counter: ~38003
- Active weights: post-maintenance with Corners replay
- Next steps:
- PaintingBot: add EnemyTracker pre-population or warm-up rounds to fix cold-start
- MyFirstBot: add bullet-in-flight features to state vector; widen aim space; or accept as beyond current architecture
Binary file not shown.
+1 -1
View File
@@ -5,7 +5,7 @@ set -uo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
PPO_BOT_SRC="$REPO_ROOT/PPO_Bot"
PPO_BOT_SRC="$REPO_ROOT/PPO_Bot_garage"
# Source hyperparams (but we'll override opponent/rounds/log per phase)
ENV_FILE="$SCRIPT_DIR/training.env"
+1 -1
View File
@@ -32,7 +32,7 @@ export LC_ALL=C
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
PPO_BOT_SRC="$REPO_ROOT/PPO_Bot"
PPO_BOT_SRC="$REPO_ROOT/PPO_Bot_garage"
ENV_FILE="$SCRIPT_DIR/training.env"
[ -f "$ENV_FILE" ] && set -a && . "$ENV_FILE" && set +a
@@ -0,0 +1,74 @@
=== PPO_Bot v2 curriculum retrain — mer 19 ago 2026, 20:56:46, CEST ===
══ Fire (train=200 gate=150) ══
[train] 200 rounds...
=== PPO_Bot v2 curriculum retrain — mer 19 ago 2026, 21:13:27, CEST ===
══ Fire (train=200 gate=150) ══
[train] 200 rounds...
=== PPO_Bot v2 curriculum retrain — mer 19 ago 2026, 21:36:42, CEST ===
══ Fire (train=200 gate=150) ══
[train] 200 rounds...
=== PPO_Bot v2 curriculum retrain — gio 20 ago 2026, 09:52:58, CEST ===
══ Fire (train=200 gate=150) ══
[train] 200 rounds...
[train] done
[eval] 150 rounds...
[gate] FAIL (0
0/150)
══ MyFirstDroid (train=200 gate=150) ══
[train] 200 rounds...
=== PPO_Bot v2 curriculum retrain — gio 20 ago 2026, 10:01:06, CEST ===
══ Fire (train=200 gate=150) ══
[train] 200 rounds...
[train] done
[eval] 150 rounds...
[gate] FAIL (0/150)
══ MyFirstDroid (train=200 gate=150) ══
[train] 200 rounds...
[train] done
[eval] 150 rounds...
[gate] FAIL (141/150)
══ Target (train=200 gate=150) ══
[train] 200 rounds...
[train] done
[eval] 150 rounds...
[gate] FAIL (130/150)
══ MyFirstLeader (train=200 gate=150) ══
[train] 200 rounds...
[train] done
[eval] 150 rounds...
[gate] PASS (150/150)
══ Crazy (train=200 gate=150) ══
[train] 200 rounds...
[train] done
[eval] 150 rounds...
[gate] FAIL (13/150)
══ Corners (train=400 gate=150) ══
[train] 400 rounds...
[train] done
[eval] 150 rounds...
[gate] FAIL (0/150)
══ PaintingBot (train=400 gate=150) ══
[train] 400 rounds...
[train] done
[eval] 150 rounds...
[gate] FAIL (1/150)
══ MyFirstBot (train=1000 gate=150) ══
[train] 1000 rounds...
[train] done
[eval] 150 rounds...
[gate] FAIL (0/150)
=== curriculum complete — gio 20 ago 2026, 10:24:24, CEST ===
@@ -0,0 +1 @@
Error: PPO_BOT_DIR env var not set
@@ -0,0 +1,503 @@
Training: PPO_Bot vs MyFirstBot for 500 rounds
Log: /home/davide/Projects/SirRoboGarage/tools/training_runner/logs/myfirstbot_train1_20260819_202913.jsonl
Round 1/500 — ticks:533 score:182 win:true
Round 2/500 — ticks:414 score:207 win:true
Round 3/500 — ticks:604 score:201 win:true
Round 4/500 — ticks:561 score:86 win:true
Round 5/500 — ticks:588 score:48 win:true
Round 6/500 — ticks:757 score:62 win:true
Round 7/500 — ticks:526 score:18 win:true
Round 8/500 — ticks:754 score:55 win:true
Round 9/500 — ticks:560 score:201 win:true
Round 10/500 — ticks:636 score:16 win:true
Round 11/500 — ticks:603 score:64 win:true
Round 12/500 — ticks:568 score:1 win:true
Round 13/500 — ticks:622 score:33 win:true
Round 14/500 — ticks:523 score:64 win:false
Round 15/500 — ticks:454 score:181 win:true
Round 16/500 — ticks:746 score:112 win:true
Round 17/500 — ticks:604 score:64 win:true
Round 18/500 — ticks:677 score:80 win:true
Round 19/500 — ticks:663 score:80 win:false
Round 20/500 — ticks:638 score:33 win:false
Round 21/500 — ticks:595 score:49 win:false
Round 22/500 — ticks:599 score:32 win:false
Round 23/500 — ticks:607 score:40 win:false
Round 24/500 — ticks:551 score:3 win:false
Round 25/500 — ticks:466 score:48 win:false
Round 26/500 — ticks:673 score:65 win:false
Round 27/500 — ticks:409 score:77 win:false
Round 28/500 — ticks:604 score:64 win:false
Round 29/500 — ticks:635 score:48 win:false
Round 30/500 — ticks:635 score:79 win:false
Round 31/500 — ticks:792 score:98 win:false
Round 32/500 — ticks:747 score:108 win:false
Round 33/500 — ticks:657 score:197 win:false
Round 34/500 — ticks:764 score:88 win:false
Round 35/500 — ticks:635 score:51 win:false
Round 36/500 — ticks:416 score:194 win:false
Round 37/500 — ticks:534 score:177 win:false
Round 38/500 — ticks:663 score:67 win:false
Round 39/500 — ticks:597 score:66 win:false
Round 40/500 — ticks:786 score:89 win:false
Round 41/500 — ticks:749 score:78 win:false
Round 42/500 — ticks:574 score:32 win:false
Round 43/500 — ticks:569 score:70 win:false
Round 44/500 — ticks:518 score:98 win:false
Round 45/500 — ticks:680 score:57 win:false
Round 46/500 — ticks:805 score:103 win:false
Round 47/500 — ticks:678 score:64 win:false
Round 48/500 — ticks:749 score:66 win:false
Round 49/500 — ticks:812 score:96 win:false
Round 50/500 — ticks:679 score:73 win:false
Round 51/500 — ticks:661 score:48 win:false
Round 52/500 — ticks:684 score:49 win:false
Round 53/500 — ticks:558 score:32 win:false
Round 54/500 — ticks:767 score:81 win:false
Round 55/500 — ticks:694 score:50 win:false
Round 56/500 — ticks:631 score:64 win:false
Round 57/500 — ticks:639 score:64 win:false
Round 58/500 — ticks:630 score:201 win:false
Round 59/500 — ticks:589 score:196 win:false
Round 60/500 — ticks:586 score:51 win:false
Round 61/500 — ticks:709 score:64 win:false
Round 62/500 — ticks:694 score:192 win:false
Round 63/500 — ticks:529 score:200 win:false
Round 64/500 — ticks:538 score:204 win:false
Round 65/500 — ticks:611 score:50 win:false
Round 66/500 — ticks:609 score:214 win:false
Round 67/500 — ticks:479 score:0 win:false
Round 68/500 — ticks:669 score:100 win:false
Round 69/500 — ticks:788 score:112 win:false
Round 70/500 — ticks:640 score:85 win:false
Round 71/500 — ticks:423 score:62 win:false
Round 72/500 — ticks:786 score:81 win:false
Round 73/500 — ticks:509 score:49 win:false
Round 74/500 — ticks:685 score:47 win:false
Round 75/500 — ticks:310 score:55 win:false
Round 76/500 — ticks:695 score:81 win:false
Round 77/500 — ticks:668 score:63 win:false
Round 78/500 — ticks:710 score:52 win:false
Round 79/500 — ticks:611 score:9 win:false
Round 80/500 — ticks:465 score:170 win:false
Round 81/500 — ticks:521 score:49 win:false
Round 82/500 — ticks:634 score:178 win:false
Round 83/500 — ticks:787 score:97 win:false
Round 84/500 — ticks:660 score:60 win:false
Round 85/500 — ticks:390 score:158 win:false
Round 86/500 — ticks:756 score:59 win:false
Round 87/500 — ticks:607 score:33 win:false
Round 88/500 — ticks:607 score:32 win:false
Round 89/500 — ticks:613 score:68 win:false
Round 90/500 — ticks:770 score:112 win:false
Round 91/500 — ticks:483 score:48 win:false
Round 92/500 — ticks:665 score:64 win:false
Round 93/500 — ticks:708 score:80 win:false
Round 94/500 — ticks:526 score:17 win:false
Round 95/500 — ticks:641 score:39 win:false
Round 96/500 — ticks:709 score:47 win:false
Round 97/500 — ticks:676 score:80 win:false
Round 98/500 — ticks:593 score:33 win:false
Round 99/500 — ticks:839 score:97 win:false
Round 100/500 — ticks:637 score:65 win:false
Round 101/500 — ticks:792 score:80 win:false
Round 102/500 — ticks:611 score:32 win:false
Round 103/500 — ticks:639 score:32 win:false
Round 104/500 — ticks:622 score:43 win:false
Round 105/500 — ticks:396 score:171 win:false
Round 106/500 — ticks:674 score:85 win:false
Round 107/500 — ticks:410 score:43 win:false
Round 108/500 — ticks:634 score:33 win:false
Round 109/500 — ticks:734 score:48 win:false
Round 110/500 — ticks:707 score:207 win:false
Round 111/500 — ticks:700 score:66 win:false
Round 112/500 — ticks:754 score:96 win:false
Round 113/500 — ticks:703 score:66 win:false
Round 114/500 — ticks:637 score:49 win:false
Round 115/500 — ticks:677 score:51 win:false
Round 116/500 — ticks:656 score:35 win:false
Round 117/500 — ticks:441 score:206 win:false
Round 118/500 — ticks:653 score:64 win:false
Round 119/500 — ticks:517 score:121 win:false
Round 120/500 — ticks:750 score:60 win:false
Round 121/500 — ticks:609 score:32 win:false
Round 122/500 — ticks:807 score:48 win:false
Round 123/500 — ticks:640 score:33 win:false
Round 124/500 — ticks:385 score:24 win:false
Round 125/500 — ticks:860 score:113 win:false
Round 126/500 — ticks:734 score:49 win:false
Round 127/500 — ticks:757 score:81 win:false
Round 128/500 — ticks:630 score:49 win:false
Round 129/500 — ticks:587 score:32 win:false
Round 130/500 — ticks:702 score:73 win:false
Round 131/500 — ticks:564 score:16 win:false
Round 132/500 — ticks:632 score:93 win:false
Round 133/500 — ticks:692 score:82 win:false
Round 134/500 — ticks:743 score:116 win:false
Round 135/500 — ticks:758 score:76 win:false
Round 136/500 — ticks:575 score:46 win:false
Round 137/500 — ticks:386 score:88 win:false
Round 138/500 — ticks:626 score:17 win:false
Round 139/500 — ticks:821 score:85 win:false
Round 140/500 — ticks:640 score:169 win:false
Round 141/500 — ticks:735 score:49 win:false
Round 142/500 — ticks:558 score:18 win:false
Round 143/500 — ticks:654 score:30 win:false
Round 144/500 — ticks:604 score:32 win:false
Round 145/500 — ticks:710 score:56 win:false
Round 146/500 — ticks:688 score:196 win:false
Round 147/500 — ticks:714 score:50 win:false
Round 148/500 — ticks:690 score:42 win:false
Round 149/500 — ticks:387 score:186 win:false
Round 150/500 — ticks:911 score:84 win:false
Round 151/500 — ticks:653 score:33 win:false
Round 152/500 — ticks:681 score:67 win:false
Round 153/500 — ticks:605 score:17 win:false
Round 154/500 — ticks:734 score:58 win:false
Round 155/500 — ticks:793 score:105 win:false
Round 156/500 — ticks:784 score:78 win:false
Round 157/500 — ticks:620 score:32 win:false
Round 158/500 — ticks:713 score:48 win:false
Round 159/500 — ticks:669 score:67 win:false
Round 160/500 — ticks:594 score:30 win:false
Round 161/500 — ticks:558 score:17 win:false
Round 162/500 — ticks:609 score:48 win:false
Round 163/500 — ticks:658 score:50 win:false
Round 164/500 — ticks:596 score:32 win:false
Round 165/500 — ticks:684 score:64 win:false
Round 166/500 — ticks:579 score:234 win:false
Round 167/500 — ticks:827 score:100 win:false
Round 168/500 — ticks:562 score:80 win:false
Round 169/500 — ticks:727 score:64 win:false
Round 170/500 — ticks:865 score:17 win:false
Round 171/500 — ticks:704 score:48 win:false
Round 172/500 — ticks:533 score:16 win:false
Round 173/500 — ticks:684 score:91 win:false
Round 174/500 — ticks:600 score:33 win:false
Round 175/500 — ticks:786 score:64 win:false
Round 176/500 — ticks:767 score:65 win:false
Round 177/500 — ticks:877 score:98 win:false
Round 178/500 — ticks:734 score:64 win:false
Round 179/500 — ticks:592 score:34 win:false
Round 180/500 — ticks:730 score:53 win:false
Round 181/500 — ticks:672 score:176 win:false
Round 182/500 — ticks:484 score:33 win:false
Round 183/500 — ticks:600 score:18 win:false
Round 184/500 — ticks:628 score:21 win:false
Round 185/500 — ticks:729 score:36 win:false
Round 186/500 — ticks:822 score:61 win:false
Round 187/500 — ticks:764 score:64 win:false
Round 188/500 — ticks:715 score:199 win:false
Round 189/500 — ticks:556 score:77 win:false
Round 190/500 — ticks:574 score:21 win:false
Round 191/500 — ticks:708 score:65 win:false
Round 192/500 — ticks:580 score:2 win:false
Round 193/500 — ticks:771 score:66 win:false
Round 194/500 — ticks:692 score:33 win:false
Round 195/500 — ticks:759 score:48 win:false
Round 196/500 — ticks:829 score:63 win:false
Round 197/500 — ticks:767 score:65 win:false
Round 198/500 — ticks:246 score:115 win:false
Round 199/500 — ticks:642 score:47 win:false
Round 200/500 — ticks:712 score:27 win:false
Round 201/500 — ticks:711 score:51 win:false
Round 202/500 — ticks:752 score:49 win:false
Round 203/500 — ticks:654 score:48 win:false
Round 204/500 — ticks:602 score:33 win:false
Round 205/500 — ticks:556 score:20 win:false
Round 206/500 — ticks:799 score:73 win:false
Round 207/500 — ticks:874 score:81 win:false
Round 208/500 — ticks:917 score:95 win:false
Round 209/500 — ticks:615 score:16 win:false
Round 210/500 — ticks:776 score:86 win:false
Round 211/500 — ticks:869 score:113 win:false
Round 212/500 — ticks:887 score:81 win:false
Round 213/500 — ticks:675 score:66 win:false
Round 214/500 — ticks:541 score:2 win:false
Round 215/500 — ticks:717 score:45 win:false
Round 216/500 — ticks:817 score:55 win:false
Round 217/500 — ticks:760 score:66 win:false
Round 218/500 — ticks:688 score:33 win:false
Round 219/500 — ticks:658 score:44 win:false
Round 220/500 — ticks:492 score:205 win:false
Round 221/500 — ticks:753 score:50 win:false
Round 222/500 — ticks:882 score:97 win:false
Round 223/500 — ticks:782 score:100 win:false
Round 224/500 — ticks:650 score:49 win:false
Round 225/500 — ticks:712 score:44 win:false
Round 226/500 — ticks:734 score:57 win:false
Round 227/500 — ticks:580 score:201 win:false
Round 228/500 — ticks:708 score:212 win:false
Round 229/500 — ticks:710 score:4 win:false
Round 230/500 — ticks:655 score:37 win:false
Round 231/500 — ticks:677 score:31 win:false
Round 232/500 — ticks:549 score:132 win:false
Round 233/500 — ticks:474 score:22 win:false
Round 234/500 — ticks:819 score:80 win:false
Round 235/500 — ticks:872 score:127 win:false
Round 236/500 — ticks:691 score:70 win:false
Round 237/500 — ticks:680 score:30 win:false
Round 238/500 — ticks:645 score:31 win:false
Round 239/500 — ticks:628 score:76 win:false
Round 240/500 — ticks:681 score:52 win:false
Round 241/500 — ticks:555 score:2 win:false
Round 242/500 — ticks:811 score:78 win:false
Round 243/500 — ticks:777 score:115 win:false
Round 244/500 — ticks:649 score:33 win:false
Round 245/500 — ticks:500 score:55 win:false
Round 246/500 — ticks:751 score:49 win:false
Round 247/500 — ticks:847 score:62 win:false
Round 248/500 — ticks:726 score:17 win:false
Round 249/500 — ticks:639 score:64 win:false
Round 250/500 — ticks:696 score:54 win:false
Round 251/500 — ticks:757 score:83 win:false
Round 252/500 — ticks:860 score:193 win:false
Round 253/500 — ticks:596 score:1 win:false
Round 254/500 — ticks:765 score:91 win:false
Round 255/500 — ticks:748 score:96 win:false
Round 256/500 — ticks:841 score:90 win:false
Round 257/500 — ticks:675 score:66 win:false
Round 258/500 — ticks:573 score:92 win:false
Round 259/500 — ticks:762 score:69 win:false
Round 260/500 — ticks:678 score:64 win:false
Round 261/500 — ticks:647 score:64 win:false
Round 262/500 — ticks:668 score:33 win:false
Round 263/500 — ticks:752 score:20 win:false
Round 264/500 — ticks:774 score:66 win:false
Round 265/500 — ticks:642 score:72 win:false
Round 266/500 — ticks:668 score:32 win:false
Round 267/500 — ticks:678 score:38 win:false
Round 268/500 — ticks:603 score:230 win:false
Round 269/500 — ticks:711 score:46 win:false
Round 270/500 — ticks:937 score:65 win:false
Round 271/500 — ticks:683 score:66 win:false
Round 272/500 — ticks:755 score:65 win:false
Round 273/500 — ticks:554 score:0 win:false
Round 274/500 — ticks:750 score:33 win:false
Round 275/500 — ticks:901 score:113 win:false
Round 276/500 — ticks:812 score:109 win:false
Round 277/500 — ticks:704 score:82 win:false
Round 278/500 — ticks:663 score:101 win:false
Round 279/500 — ticks:636 score:48 win:false
Round 280/500 — ticks:484 score:201 win:false
Round 281/500 — ticks:634 score:68 win:false
Round 282/500 — ticks:766 score:58 win:false
Round 283/500 — ticks:886 score:112 win:false
Round 284/500 — ticks:676 score:115 win:false
Round 285/500 — ticks:530 score:200 win:false
Round 286/500 — ticks:531 score:17 win:false
Round 287/500 — ticks:463 score:203 win:false
Round 288/500 — ticks:599 score:17 win:false
Round 289/500 — ticks:636 score:46 win:false
Round 290/500 — ticks:832 score:79 win:false
Round 291/500 — ticks:557 score:69 win:false
Round 292/500 — ticks:763 score:81 win:false
Round 293/500 — ticks:566 score:192 win:false
Round 294/500 — ticks:807 score:54 win:false
Round 295/500 — ticks:698 score:81 win:false
Round 296/500 — ticks:694 score:185 win:false
Round 297/500 — ticks:806 score:56 win:false
Round 298/500 — ticks:852 score:113 win:false
Round 299/500 — ticks:681 score:209 win:false
Round 300/500 — ticks:530 score:1 win:false
Round 301/500 — ticks:508 score:17 win:false
Round 302/500 — ticks:220 score:79 win:false
Round 303/500 — ticks:712 score:65 win:false
Round 304/500 — ticks:709 score:97 win:false
Round 305/500 — ticks:792 score:198 win:false
Round 306/500 — ticks:825 score:105 win:false
Round 307/500 — ticks:710 score:188 win:false
Round 308/500 — ticks:655 score:72 win:false
Round 309/500 — ticks:807 score:199 win:false
Round 310/500 — ticks:659 score:17 win:false
Round 311/500 — ticks:744 score:50 win:false
Round 312/500 — ticks:674 score:65 win:false
Round 313/500 — ticks:713 score:112 win:false
Round 314/500 — ticks:699 score:48 win:false
Round 315/500 — ticks:753 score:212 win:false
Round 316/500 — ticks:832 score:185 win:false
Round 317/500 — ticks:617 score:46 win:false
Round 318/500 — ticks:839 score:95 win:false
Round 319/500 — ticks:718 score:96 win:false
Round 320/500 — ticks:369 score:101 win:false
Round 321/500 — ticks:532 score:18 win:false
Round 322/500 — ticks:570 score:130 win:false
Round 323/500 — ticks:476 score:33 win:false
Round 324/500 — ticks:548 score:17 win:false
Round 325/500 — ticks:693 score:83 win:false
Round 326/500 — ticks:498 score:96 win:false
Round 327/500 — ticks:782 score:200 win:false
Round 328/500 — ticks:500 score:210 win:false
Round 329/500 — ticks:685 score:52 win:false
Round 330/500 — ticks:579 score:16 win:false
Round 331/500 — ticks:751 score:50 win:false
Round 332/500 — ticks:649 score:20 win:false
Round 333/500 — ticks:512 score:63 win:false
Round 334/500 — ticks:681 score:90 win:false
Round 335/500 — ticks:656 score:50 win:false
Round 336/500 — ticks:647 score:80 win:false
Round 337/500 — ticks:639 score:82 win:false
Round 338/500 — ticks:592 score:51 win:false
Round 339/500 — ticks:552 score:59 win:false
Round 340/500 — ticks:738 score:108 win:false
Round 341/500 — ticks:677 score:63 win:false
Round 342/500 — ticks:793 score:96 win:false
Round 343/500 — ticks:907 score:95 win:false
Round 344/500 — ticks:644 score:208 win:false
Round 345/500 — ticks:438 score:62 win:false
Round 346/500 — ticks:760 score:98 win:false
Round 347/500 — ticks:605 score:40 win:false
Round 348/500 — ticks:639 score:86 win:false
Round 349/500 — ticks:510 score:32 win:false
Round 350/500 — ticks:184 score:213 win:false
Round 351/500 — ticks:590 score:213 win:false
Round 352/500 — ticks:977 score:68 win:false
Round 353/500 — ticks:639 score:50 win:false
Round 354/500 — ticks:547 score:33 win:false
Round 355/500 — ticks:597 score:65 win:false
Round 356/500 — ticks:828 score:80 win:false
Round 357/500 — ticks:640 score:38 win:false
Round 358/500 — ticks:663 score:206 win:false
Round 359/500 — ticks:678 score:176 win:false
Round 360/500 — ticks:561 score:33 win:false
Round 361/500 — ticks:614 score:59 win:false
Round 362/500 — ticks:744 score:40 win:false
Round 363/500 — ticks:653 score:208 win:false
Round 364/500 — ticks:665 score:49 win:false
Round 365/500 — ticks:593 score:47 win:false
Round 366/500 — ticks:782 score:65 win:false
Round 367/500 — ticks:665 score:82 win:false
Round 368/500 — ticks:647 score:65 win:false
Round 369/500 — ticks:629 score:96 win:false
Round 370/500 — ticks:534 score:196 win:false
Round 371/500 — ticks:715 score:33 win:false
Round 372/500 — ticks:635 score:49 win:false
Round 373/500 — ticks:627 score:71 win:false
Round 374/500 — ticks:792 score:74 win:false
Round 375/500 — ticks:599 score:80 win:false
Round 376/500 — ticks:788 score:205 win:false
Round 377/500 — ticks:729 score:65 win:false
Round 378/500 — ticks:484 score:192 win:false
Round 379/500 — ticks:562 score:40 win:false
Round 380/500 — ticks:367 score:175 win:false
Round 381/500 — ticks:638 score:33 win:false
Round 382/500 — ticks:636 score:2 win:false
Round 383/500 — ticks:663 score:99 win:false
Round 384/500 — ticks:860 score:48 win:false
Round 385/500 — ticks:672 score:65 win:false
Round 386/500 — ticks:347 score:71 win:false
Round 387/500 — ticks:684 score:92 win:false
Round 388/500 — ticks:907 score:96 win:false
Round 389/500 — ticks:690 score:32 win:false
Round 390/500 — ticks:876 score:100 win:false
Round 391/500 — ticks:451 score:1 win:false
Round 392/500 — ticks:478 score:0 win:false
Round 393/500 — ticks:666 score:94 win:false
Round 394/500 — ticks:734 score:64 win:false
Round 395/500 — ticks:681 score:66 win:false
Round 396/500 — ticks:682 score:79 win:false
Round 397/500 — ticks:588 score:73 win:false
Round 398/500 — ticks:638 score:46 win:false
Round 399/500 — ticks:619 score:45 win:false
Round 400/500 — ticks:369 score:204 win:false
Round 401/500 — ticks:614 score:49 win:false
Round 402/500 — ticks:786 score:49 win:false
Round 403/500 — ticks:1280 score:103 win:false
Round 404/500 — ticks:683 score:96 win:false
Round 405/500 — ticks:692 score:51 win:false
Round 406/500 — ticks:753 score:77 win:false
Round 407/500 — ticks:547 score:48 win:false
Round 408/500 — ticks:467 score:48 win:false
Round 409/500 — ticks:605 score:146 win:false
Round 410/500 — ticks:601 score:72 win:false
Round 411/500 — ticks:531 score:187 win:false
Round 412/500 — ticks:592 score:64 win:false
Round 413/500 — ticks:715 score:68 win:false
Round 414/500 — ticks:646 score:175 win:false
Round 415/500 — ticks:259 score:235 win:false
Round 416/500 — ticks:667 score:81 win:false
Round 417/500 — ticks:531 score:35 win:false
Round 418/500 — ticks:974 score:97 win:false
Round 419/500 — ticks:636 score:37 win:false
Round 420/500 — ticks:769 score:33 win:false
Round 421/500 — ticks:667 score:64 win:false
Round 422/500 — ticks:565 score:64 win:false
Round 423/500 — ticks:904 score:101 win:false
Round 424/500 — ticks:621 score:63 win:false
Round 425/500 — ticks:798 score:97 win:false
Round 426/500 — ticks:805 score:97 win:false
Round 427/500 — ticks:660 score:17 win:false
Round 428/500 — ticks:720 score:48 win:false
Round 429/500 — ticks:560 score:32 win:false
Round 430/500 — ticks:901 score:66 win:false
Round 431/500 — ticks:718 score:65 win:false
Round 432/500 — ticks:824 score:62 win:false
Round 433/500 — ticks:904 score:95 win:false
Round 434/500 — ticks:680 score:49 win:false
Round 435/500 — ticks:838 score:103 win:false
Round 436/500 — ticks:761 score:52 win:false
Round 437/500 — ticks:561 score:34 win:false
Round 438/500 — ticks:625 score:59 win:false
Round 439/500 — ticks:789 score:69 win:false
Round 440/500 — ticks:602 score:31 win:false
Round 441/500 — ticks:547 score:39 win:false
Round 442/500 — ticks:790 score:84 win:false
Round 443/500 — ticks:641 score:33 win:false
Round 444/500 — ticks:585 score:54 win:false
Round 445/500 — ticks:578 score:179 win:false
Round 446/500 — ticks:654 score:81 win:false
Round 447/500 — ticks:635 score:6 win:false
Round 448/500 — ticks:697 score:35 win:false
Round 449/500 — ticks:807 score:192 win:false
Round 450/500 — ticks:518 score:0 win:false
Round 451/500 — ticks:834 score:86 win:false
Round 452/500 — ticks:702 score:49 win:false
Round 453/500 — ticks:671 score:86 win:false
Round 454/500 — ticks:525 score:189 win:false
Round 455/500 — ticks:750 score:80 win:false
Round 456/500 — ticks:641 score:32 win:false
Round 457/500 — ticks:600 score:33 win:false
Round 458/500 — ticks:565 score:16 win:false
Round 459/500 — ticks:557 score:2 win:false
Round 460/500 — ticks:686 score:31 win:false
Round 461/500 — ticks:606 score:18 win:false
Round 462/500 — ticks:581 score:33 win:false
Round 463/500 — ticks:707 score:125 win:false
Round 464/500 — ticks:828 score:83 win:false
Round 465/500 — ticks:601 score:17 win:false
Round 466/500 — ticks:644 score:64 win:false
Round 467/500 — ticks:787 score:48 win:false
Round 468/500 — ticks:827 score:81 win:false
Round 469/500 — ticks:601 score:13 win:false
Round 470/500 — ticks:818 score:75 win:false
Round 471/500 — ticks:605 score:34 win:false
Round 472/500 — ticks:748 score:48 win:false
Round 473/500 — ticks:484 score:0 win:false
Round 474/500 — ticks:753 score:48 win:false
Round 475/500 — ticks:675 score:50 win:false
Round 476/500 — ticks:623 score:35 win:false
Round 477/500 — ticks:906 score:95 win:false
Round 478/500 — ticks:683 score:66 win:false
Round 479/500 — ticks:783 score:81 win:false
Round 480/500 — ticks:748 score:110 win:false
Round 481/500 — ticks:690 score:64 win:false
Round 482/500 — ticks:694 score:16 win:false
Round 483/500 — ticks:656 score:30 win:false
Round 484/500 — ticks:688 score:192 win:false
Round 485/500 — ticks:512 score:46 win:false
Round 486/500 — ticks:694 score:77 win:false
Round 487/500 — ticks:474 score:178 win:false
Round 488/500 — ticks:403 score:182 win:false
Round 489/500 — ticks:598 score:36 win:false
Round 490/500 — ticks:199 score:132 win:false
Round 491/500 — ticks:378 score:158 win:false
Round 492/500 — ticks:531 score:33 win:false
Round 493/500 — ticks:749 score:84 win:false
Round 494/500 — ticks:720 score:14 win:false
Round 495/500 — ticks:653 score:79 win:false
Round 496/500 — ticks:828 score:113 win:false
Round 497/500 — ticks:595 score:5 win:false
Round 498/500 — ticks:717 score:198 win:false
Round 499/500 — ticks:794 score:193 win:false
Round 500/500 — ticks:487 score:0 win:false
Counter check passed: 38003 == expected 38003
+1 -1
View File
@@ -5,7 +5,7 @@ set -uo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
PPO_BOT_SRC="$REPO_ROOT/PPO_Bot"
PPO_BOT_SRC="$REPO_ROOT/PPO_Bot_garage"
ENV_FILE="$SCRIPT_DIR/training.env"
[ -f "$ENV_FILE" ] && set -a && . "$ENV_FILE" && set +a
+1 -1
View File
@@ -27,7 +27,7 @@ OPPONENT="${1:-${TRAINING_OPPONENT:-Target}}"
TOTAL_ROUNDS="${2:-${TRAINING_ROUNDS:-100}}"
JAR="${TANK_ROYALE_JAR:-/home/davide/Projects/tank-royale/runner/examples/lib/robocode-tankroyale-runner.jar}"
PPO_BOT_SRC="$REPO_ROOT/PPO_Bot"
PPO_BOT_SRC="$REPO_ROOT/PPO_Bot_garage"
export PPO_BOT_DIR="$PPO_BOT_SRC"
export SAMPLE_BOTS_DIR="${SAMPLE_BOTS_DIR:-/home/davide/Projects/tank-royale/sample-bots/java/build/archive}"
@@ -0,0 +1,13 @@
374720
374720
374720
374720
374720
374720
374720
374720
374720
374720
374720
374720
374720
@@ -0,0 +1,13 @@
381996
381996
381996
381996
381996
381996
381996
381996
381996
381996
381996
381996
381996

Some files were not shown because too many files have changed in this diff Show More