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()

```