File size: 1,907 Bytes
06b7120 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | ---
tags:
- deep-reinforcement-learning
- reinforcement-learning
- dqn
- dueling-dqn
- double-dqn
- lunar-lander
- gymnasium
- pytorch
model-index:
- name: jongchullee/lunar-lander-dueling-dqn
results:
- task:
type: reinforcement-learning
name: reinforcement-learning
dataset:
name: LunarLander-v3
type: LunarLander-v3
metrics:
- type: mean_reward
value: 289.2
name: Mean Reward
---
# LunarLander-v3 Dueling Double-DQN Agent
This is a trained **Dueling Double-DQN** agent capable of performing perfect, smooth, and robust landings in the **Gymnasium LunarLander-v3** environment with an evaluation score of **289.2**.
## Algorithm & Training Details
- **Algorithm**: Dueling Double-DQN (D3QN)
- **Framework**: PyTorch + Gymnasium
- **State Space**: 8 dimensions (Position, Velocity, Angle, Angular Velocity, Leg contacts)
- **Action Space**: Discrete(4) - [0: Do Nothing, 1: Fire Left RCS, 2: Fire Main Engine, 3: Fire Right RCS]
- **Exploration (Epsilon)**: $1.0 (100\%) \rightarrow 0.05 (5\%)$
- **Loss Function**: Smooth L1 (Huber Loss)
- **Target Network Update**: Soft Polyak Update ($\tau = 0.005$)
- **Peak Score**: **+289.2**
## How to Run Inference
```python
import torch
import gymnasium as gym
from dqn_agent import DQNAgent
# 1. Initialize environment
env = gym.make("LunarLander-v3", render_mode="human")
state, _ = env.reset()
# 2. Load Agent
agent = DQNAgent(state_dim=8, action_dim=4)
agent.load("best_lunar_lander_dqn.pth")
# 3. Simulate
total_reward = 0
done = False
while not done:
action, _ = agent.select_action(state, evaluate=True)
next_state, reward, terminated, truncated, _ = env.step(action)
done = terminated or truncated
state = next_state
total_reward += reward
print(f"Final Landing Reward: {total_reward:.2f}")
env.close()
```
|