Skip to content

Instantly share code, notes, and snippets.

View araffin's full-sized avatar

Antonin RAFFIN araffin

View GitHub Profile
@araffin
araffin / optimize_ppo.py
Last active April 25, 2025 09:23
Example on how to use Optuna for automatic hyperparamer optimization with RL and SB3
"""Optuna example that optimizes the hyperparameters of
a reinforcement learning agent using PPO implementation from Stable-Baselines3
on a Gymnasium environment.
This is a simplified version of what can be found in https://github.com/DLR-RM/rl-baselines3-zoo.
You can run this example as follows:
$ python optimize_ppo.py
"""
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from gymnasium import spaces
from stable_baselines3 import PPO
from stable_baselines3.common.env_util import make_vec_env
from stable_baselines3.common.vec_env import VecEnvWrapper
sns.set_theme()
"""
A simple GUI to collect human feedback.
It writes the rating to a file "gui_value.txt" next to the script.
The rating can be reset by removing or emptying the text file.
Nicegui is the only dependency.
If you use `uv` you can do `uv run feedback_gui.py`.
Author: Antonin Raffin (2024)
MIT License
import sbx
import shimmy
import stable_baselines3 as sb3
from dm_control import suite
from gymnasium.wrappers import FlattenObservation
from stable_baselines3.common.env_checker import check_env
# Available envs:
# suite._DOMAINS
# suite.dog.SUITE
@araffin
araffin / halfcheetah_minimal.py
Last active September 10, 2024 12:48
Minimal implementation to solve the HalfCheetah env using open-loop oscillators
import gymnasium as gym
import numpy as np
from gymnasium.envs.mujoco.mujoco_env import MujocoEnv
# Env initialization
env = gym.make("HalfCheetah-v4", render_mode="human")
# Wrap to have reward statistics
env = gym.wrappers.RecordEpisodeStatistics(env)
mujoco_env = env.unwrapped
n_joints = 6
import gymnasium as gym
import numpy as np
from gymnasium.envs.mujoco.mujoco_env import MujocoEnv
# Env initialization
env = gym.make("Swimmer-v4", render_mode="human")
# Wrap to have reward statistics
env = gym.wrappers.RecordEpisodeStatistics(env)
mujoco_env = env.unwrapped
n_joints = 2
@araffin
araffin / download_local_google_fonts.mjs
Created November 3, 2022 14:35
Download Google fonts locally
// https://github.com/datalogix/google-fonts-helper
// npm install google-fonts-helper
import { download } from 'google-fonts-helper'
const downloader = download('https://fonts.googleapis.com/css?family=Montserrat:400,700%7CRoboto:400,400italic,700%7CRoboto+Mono&display=swap', {
base64: false,
overwriting: false,
outputDir: './',
stylePath: 'fonts.css',
fontsDir: 'fonts',
@araffin
araffin / RL_CMAES.py
Last active April 19, 2021 08:54
Mixing Reinforcement Learning (RL) and Evolution Strategy (ES) using Stable-Baselines
import gym
import numpy as np
import cma
from collections import OrderedDict
from stable_baselines import A2C
def flatten(params):
"""
import pytest
import numpy as np
from stable_baselines import A2C, ACER, ACKTR, DQN, DDPG, PPO1, PPO2, TRPO
from stable_baselines.common import set_global_seeds
MODEL_LIST_DISCRETE = [
A2C,
ACER,
ACKTR,
@araffin
araffin / launch_tensorboard.sh
Created September 18, 2018 09:37
Stable Baselines - Tensorboard integration for RL
tensorboard --logdir /tmp/a2c_cartpole_tensorboard/