🎯Discrete Benchmark
Classic Control & Box2D Results
SLM Lab v5.2 validates algorithms on Gymnasium discrete environments using the TorchArc architecture. These benchmarks cover:
Classic Control: CartPole, Acrobot, Pendulum—simple physics tasks ideal for algorithm validation
Box2D: LunarLander—2D physics with more complex dynamics
Results below are from February–March 2026 benchmark runs using Gymnasium v5 environments. TorchArc specs for existing algorithms; CrossQ uses standard MLP specs.
All trained models and metrics are publicly available on HuggingFace.
Methodology
Results show Trial-level performance:
Trial = 4 Sessions with different random seeds
Session = One complete training run
Score = Final 100-checkpoint moving average (
total_reward_ma)
The trial score is the mean across 4 sessions, providing statistically meaningful results.
Standardized Settings
Classic Control
4
2e5-3e5
500
1e4
Box2D
8
3e5
1000
5e4
The grace_period is the minimum frames before ASHA early stopping can terminate underperforming trials.
v5 vs v4 Difficulty: Gymnasium environments have stricter termination and reward handling:
LunarLander-v3 is notably harder than v2—stricter landing criteria, lower typical scores
Pendulum-v1 uses different reward scaling than v0
Expect 5-15% lower scores compared to OpenAI Gym benchmarks
See Gymnasium docs for environment-specific changes.
Running Benchmarks
Local - runs on your machine (Classic Control completes in minutes on CPU):
Remote - cloud GPU via dstack, auto-syncs to HuggingFace:
Remote setup: cp .env.example .env then set HF_TOKEN. See Remote Training for dstack config.
Download and Replay
Results
Classic Control
CartPole-v1
Docs | State: Box(4) | Action: Discrete(2) | Target: >400
Settings: max_frame 2e5 | num_envs 4 | max_session 4 | log_frequency 500
REINFORCE
✅
483.31
reinforce_cartpole_arc
SARSA
✅
430.95
sarsa_boltzmann_cartpole_arc
DQN
⚠️
239.94
dqn_boltzmann_cartpole_arc
DDQN+PER
✅
451.51
ddqn_per_boltzmann_cartpole_arc
A2C
✅
496.68
a2c_gae_cartpole_arc
PPO
✅
498.94
ppo_cartpole_arc
SAC
✅
406.09
sac_cartpole_arc
CrossQ
⚠️
334.59
crossq_cartpole

Acrobot-v1
Docs | State: Box(6) | Action: Discrete(3) | Target: >-100
Settings: max_frame 3e5 | num_envs 4 | max_session 4 | log_frequency 500
DQN
✅
-94.17
dqn_boltzmann_acrobot_arc
DDQN+PER
✅
-83.92
ddqn_per_acrobot_arc
A2C
✅
-83.99
a2c_gae_acrobot_arc
PPO
✅
-81.28
ppo_acrobot_arc
SAC
✅
-92.60
sac_acrobot_arc
CrossQ
✅
-103.13
crossq_acrobot

Pendulum-v1
Docs | State: Box(3) | Action: Box(1) | Target: >-200
Settings: max_frame 3e5 | num_envs 4 | max_session 4 | log_frequency 500
A2C
❌
-820.74
a2c_gae_pendulum_arc
PPO
✅
-174.87
ppo_pendulum_arc
SAC
✅
-150.97
sac_pendulum_arc
CrossQ
✅
-145.66
crossq_pendulum

Box2D
LunarLander-v3 (Discrete)
Docs | State: Box(8) | Action: Discrete(4) | Target: >200
Settings: max_frame 3e5 | num_envs 8 | max_session 4 | log_frequency 1000
DQN
⚠️
195.21
dqn_concat_lunar_arc
DDQN+PER
✅
265.90
ddqn_per_concat_lunar_arc
A2C
❌
27.38
a2c_gae_lunar_arc
PPO
⚠️
183.30
ppo_lunar_arc
SAC
⚠️
106.17
sac_lunar_arc
CrossQ
❌
139.21
crossq_lunar

LunarLander-v3 (Continuous)
Docs | State: Box(8) | Action: Box(2) | Target: >200
Settings: max_frame 3e5 | num_envs 8 | max_session 4 | log_frequency 1000
A2C
❌
-76.81
a2c_gae_lunar_continuous_arc
PPO
⚠️
132.58
ppo_lunar_continuous_arc
SAC
⚠️
125.00
sac_lunar_continuous_arc
CrossQ
✅
268.91
crossq_lunar_continuous

Legend: ✅ Solved | ⚠️ Close (>80%) | ❌ Failed
Historical Results (v4)
For the full Atari benchmark, see Atari Benchmark.
Last updated
Was this helpful?