Linear Function Approximation in Mountain Car Environment
[1]:
import numpy as np
import matplotlib.pyplot as plt
import gymnasium as gym
from rlforge.experiments import ExperimentRunner
from rlforge.agents.semi_gradient import LinearQAgent
[2]:
env = gym.make("MountainCar-v0")
agent = LinearQAgent(step_size=0.5/8,
discount=1,
num_actions=env.action_space.n,
dims_ranges=((-1.2,0.6),(-0.07,0.07)),
epsilon=0.1,
iht_size=4096,
num_tilings=8,
num_tiles=8)
[3]:
runner = ExperimentRunner(env, agent)
results = runner.run_episodic(
num_runs=10,
num_episodes=500,
max_steps_per_episode=500
)
runner.summary(last_n=10)
============================================================
Experiment Summary (Episodic)
============================================================
Runs: 10
Average runtime per run: 5.919 seconds
Episodes per run: 500
First episode mean reward: -500.000
Last episode mean reward: -149.200
Overall mean reward: -159.885
Mean reward (last 10 episodes): -143.650
First episode mean steps: 500.0
Last episode mean steps: 149.2
Overall mean steps: 159.9
============================================================
[4]:
plt.plot(results['mean_rewards'])
plt.grid()
[5]:
plt.plot(results['mean_steps'])
plt.grid()