Saraswati/Stable_Baselines3
import gym import numpy as np
from stablebaselines3 import PPO from stablebaselines3.common.vecenv import DummyVecEnv, SubprocVecEnv from stablebaselines3.common.envutil import makevecenv from stablebaselines3.common.utils import setrandomseed
def makeenv(envid, rank, seed=0): """ Utility function for multiprocessed env.
:param envid: (str) the environment ID :param numenv: (int) the number of environments you wish to have in subprocesses :param seed: (int) the inital seed for RNG :param rank: (int) index of the subprocess """ def init(): env = gym.make(envid) env.seed(seed + rank) return env setrandomseed(seed) return _init
if _name == 'main': envid = "CartPole-v1" numcpu = 4 # Number of processes to use # Create the vectorized environment env = SubprocVecEnv([makeenv(envid, i) for i in range(numcpu)])
# Stable Baselines provides you with makevecenv() helper # which does exactly the previous steps for you. # You can choose between DummyVecEnv (usually faster) and SubprocVecEnv # env = makevecenv(envid, nenvs=numcpu, seed=0, vecenv_cls=SubprocVecEnv)
model = PPO('MlpPolicy', env, verbose=1) model.learn(totaltimesteps=25000)
obs = env.reset() for in range(1000): action, states = model.predict(obs) obs, rewards, dones, info = env.step(action) env.render()
