SyncVectorEnv

class gymnasium.vector.SyncVectorEnv(env_fns: Iterator[Callable[[], Env]] | Sequence[Callable[[], Env]], copy: bool = True, observation_mode: str | Space = 'same', autoreset_mode: str | AutoresetMode = AutoresetMode.NEXT_STEP)[source]

序列執行多個環境的向量化環境。

示例

>>> import gymnasium as gym
>>> envs = gym.make_vec("Pendulum-v1", num_envs=2, vectorization_mode="sync")
>>> envs
SyncVectorEnv(Pendulum-v1, num_envs=2)
>>> envs = gym.vector.SyncVectorEnv([
...     lambda: gym.make("Pendulum-v1", g=9.81),
...     lambda: gym.make("Pendulum-v1", g=1.62)
... ])
>>> envs
SyncVectorEnv(num_envs=2)
>>> obs, infos = envs.reset(seed=42)
>>> obs
array([[-0.14995256,  0.9886932 , -0.12224312],
       [ 0.5760367 ,  0.8174238 , -0.91244936]], dtype=float32)
>>> infos
{}
>>> _ = envs.action_space.seed(42)
>>> actions = envs.action_space.sample()
>>> obs, rewards, terminates, truncates, infos = envs.step(actions)
>>> obs
array([[-0.1878752 ,  0.98219293,  0.7695615 ],
       [ 0.6102389 ,  0.79221743, -0.8498053 ]], dtype=float32)
>>> rewards
array([-2.96562607, -0.99902063])
>>> terminates
array([False, False])
>>> truncates
array([False, False])
>>> infos
{}
>>> envs.close()
引數:
  • env_fns – 可呼叫函式的可迭代物件,用於建立環境。

  • copy – 如果為 True,則 reset()step() 方法返回觀測的副本。

  • observation_mode – 定義環境觀測空間應如何批次處理。'same' 定義應有 n 個相同空間的副本。'different' 定義可以有多個觀測空間,它們長度相同但高/低值不同,可以批次處理。傳遞 Space 物件允許使用者設定 'same' 或 'different' 未涵蓋的自定義觀測空間模式。

  • autoreset_mode – 使用的自動重置模式,更多資訊請參閱 https://farama.org/Vector-Autoreset-Mode

丟擲:

RuntimeError – 如果某些子環境的觀測空間與 observation_space 不匹配(或者,預設情況下,與第一個子環境的觀測空間不匹配)。

reset(*, seed: int | list[int | None] | None = None, options: dict[str, Any] | None = None) tuple[ObsType, dict[str, Any]][source]

重置每個子環境並將結果合併。

引數:
  • seed – 用於重置子環境的種子,可以是: * None - 所有環境的隨機種子 * int - [seed, seed+1, ..., seed+n] * int 列表 - [1, 2, 3, ..., n]

  • options – 用於每個子環境的選項資訊。

返回:

每個子環境的合併觀測和資訊。

step(actions: ActType) tuple[ObsType, ArrayType, ArrayType, ArrayType, dict[str, Any]][source]

逐步執行每個環境並返回批次結果。

返回:

批次環境步進結果。

close(**kwargs: Any)

關閉所有並行環境並釋放資源。

它還會關閉所有現有的影像檢視器,然後呼叫 close_extras() 並將 closed 設定為 True

警告

此函式本身不關閉環境,應在 close_extras() 中處理。這對於同步和異步向量化環境都是通用的。

注意

當垃圾回收或程式退出時,此函式將自動呼叫。

引數:

**kwargs – 傳遞給 close_extras() 的關鍵字引數。

call(name: str, *args: Any, **kwargs: Any) tuple[Any, ...][source]

呼叫一個帶有 name 的子環境方法,並應用 argskwargs

引數:
  • name – 方法名稱。

  • *args – 方法引數。

  • **kwargs – 方法關鍵字引數。

返回:

結果元組。

get_attr(name: str) tuple[Any, ...][source]

從每個並行環境獲取一個屬性。

引數:

name (str) – 要從每個獨立環境獲取的屬性名稱。

返回:

帶有 name 的屬性。

set_attr(name: str, values: list[Any] | tuple[Any, ...] | Any)[source]

設定子環境的一個屬性。

引數:
  • name – 要更改的屬性名稱。

  • values – 要設定的屬性值。如果 values 是列表或元組,則它對應於每個獨立環境的值;否則,將為所有環境設定單個值。

丟擲:

ValueErrorvalues 必須是列表或元組,其長度等於環境數量。

附加方法

property SyncVectorEnv.np_random: tuple[Generator, ...]

返回封裝環境的 NumPy 偽隨機數生成器元組。

property SyncVectorEnv.np_random_seed: tuple[int, ...]

返回封裝環境的 NumPy 隨機種子元組。