OpenAI Gym的一些基礎使用方法

2022-07-05 15:18:09 字數 1884 閱讀 7974

import gym

from gym import envs

# 檢視當前gym註冊了哪些環境

env_specs = gym.envs.registry.all()

env_ids = [env_specs.id for env_specs in env_specs]

print(env_ids)

# 執行結果

['copy-v0', 'repeatcopy-v0', 'reversedaddition-v0', 'reversedaddition3-v0', 'duplicatedinput-v0', 'reverse-v0', 'cartpole-v0', 'cartpole-v1', 'mountaincar-v0', 'mountaincarcontinuous-v0', 'pendulum-v0', 'acrobot-v1', 'lunarlander-v2', 'lunarlandercontinuous-v2', 'bipedalwalker-v3', 'bipedalwalkerhardcore-v3', 'carracing-v0', 'blackjack-v0', 'kellycoinflip-v0', 'kellycoinflipgeneralized-v0', 'frozenlake-v0', 'frozenlake8x8-v0', 'cliffwalking-v0', 'nchain-v0', 'roulette-v0', 'taxi-v3', 'guessinggame-v0', 'hottercolder-v0', 'reacher-v2', 'pusher-v2', 'thrower-v2', 'striker-v2', 'invertedpendulum-v2', 'inverteddoublependulum-v2', 'halfcheetah-v2', 'halfcheetah-v3', 'hopper-v2', 'hopper-v3', 'swimmer-v2', 'swimmer-v3',

………

import gym

from gym import envs

# 觀測空間和動作空間

env = gym.make('mountaincar-v0')

obs_space = env.observation_space

obs_space_dim = obs_space.shape[0]

obs_space_high = obs_space.high

obs_space_low = obs_space.low

print(obs_space, obs_space_dim, obs_space_high, obs_space_low)

act_space = env.action_space

act_dim = act_space.n

print(act_space, act_dim)

# 執行結果

box(-1.2000000476837158, 0.6000000238418579, (2,), float32) 2 [0.6 0.07] [-1.2 -0.07]

discrete(3) 3

在gym中連續空間為box,離散空間為discrete;

連續空間(box)下,例如絕大多數的觀測空間和部分環境的動作空間,通常使用env.observation_space.shape[0]來獲得連續空間的維度,而離散空間(discrete)需要使用env.action_space.n獲得離散空間的維度;

連續空間下,例如env.observation.high,返回的該連續空間各個維度下的最高閾值;最低範圍同理。

env.seed(0)
可以設定隨機種子,主要用來結果精確復現,一般可以忽略

關於Mutex semaphore的一些使用總結

一般用於執行緒對資源的保護,不能在中斷使用 在所有的執行緒同步方法中,恐怕互斥鎖 mutex 的出場率遠遠高於其它方法。互斥鎖的理解和基本使用方法都很容易,這裡不做更多介紹了。mutex可以分為遞迴鎖 recursive mutex 和非遞迴鎖 non recursive mutex 可遞迴鎖也可稱...

CArrary SetSize及陣列一些使用發現

carray 使用不當會產生記憶體碎片,應先呼叫setsize 但具體怎麼用還不是太清楚,先看 執行結果 1,0x2bcf58,0x2bcf98,2 2,0x2b9e78,0x2b9e78,2 3,0x2b9ec0,0x2b9ec0,80 從以上結果看出,第一種方法未用setsize是錯的,執行ar...

一些基礎的東西

在c 中宣告變數使用下述的語法 但是在c 中有變數初始化的要求,即c 編譯器需要用某個初始值對變數進行初始化,之後才能在操作中引用該變數。c 有兩個方法可確保變數在使用前進行了初始化 變數是類 class 或結構 struct 中的字段 field 如果沒有顯式初始化,在預設狀態下建立這些變數時,其...