空間¶
此模組實現了各種空間。
空間描述了數學集合,並在 Gym 中用於指定有效的動作和觀察。每個 Gym 環境都必須具有屬性 action_space 和 observation_space。例如,如果您的環境中可以執行三種可能的動作 (0,1,2),並且觀察是二維單位立方體中的向量,則環境程式碼可能包含以下兩行:
self.action_space = spaces.Discrete(3)
self.observation_space = spaces.Box(0, 1, shape=(2,))
所有空間都繼承自 Space 超類。
- class gymnasium.spaces.Space(shape: Sequence[int] | None = None, dtype: type[Any] | dtype[Any] | _SupportsDType[dtype[Any]] | tuple[Any, Any] | list[Any] | _DTypeDict | str | None = None, seed: int | Generator | None = None)[source]¶
用於定義觀察和動作空間的超類。
空間在 Gym 中被關鍵地用於定義有效動作和觀察的格式。它們有多種用途:
它們清楚地定義瞭如何與環境互動,即指定了動作和觀察的預期形式
它們使我們能夠處理高度結構化的資料(例如,以
Dict空間元素的形式),並輕鬆地將其轉換為可用於學習程式碼的扁平陣列它們提供了一種取樣隨機元素的方法。這對於探索和除錯特別有用。
不同的空間可以透過容器空間(
Tuple和Dict)進行分層組合,以構建更具表現力的空間警告
自定義觀察和動作空間可以繼承自
Space類。然而,大多數用例應該由現有空間類(例如Box、Discrete等)和容器類(Tuple和Dict)覆蓋。請注意,引數化機率分佈(透過Space.sample()方法)和批處理函式(在gym.vector.VectorEnv中)僅對 Gym 預設提供的空間例項有明確定義。此外,一些強化學習演算法的實現可能無法正確處理自定義空間。請謹慎使用自定義空間。- 引數:
shape (可選[序列[int]]) – 如果空間元素是 numpy 陣列,則應指定其形狀。
dtype (可選[型別 | 字串]) – 如果空間元素是 numpy 陣列,則應指定其資料型別。
seed – 可選地,您可以使用此引數為用於從空間取樣的 RNG 設定種子
屬性¶
- 屬性 Space.shape: tuple[int, ...] | None¶
以不可變屬性的形式返回空間的形狀。
- 屬性 Space.dtype¶
返回此空間的資料型別。
- 屬性 Space.is_np_flattenable: bool¶
檢查此空間是否可以展平為
gymnasium.spaces.Box。
方法¶
每個空間都實現了以下函式
- Space.sample(mask: Any | None = None, probability: Any | None = None) T_cov¶
從此空間隨機取樣一個元素。
可以是均勻取樣或非均勻取樣,具體取決於空間的有界性。
二進位制掩碼和機率掩碼不能同時使用。
- 引數:
mask – 用於隨機取樣的掩碼,預期
dtype=np.int8,有關預期形狀,請參閱示例實現。probability – 用於根據給定機率分佈進行取樣的機率掩碼,預期
dtype=np.float64,有關預期形狀,請參閱示例實現。
- 返回:
從空間取樣的動作
- Space.contains(x: Any) bool¶
返回布林值,指示 x 是否為此空間的有效成員,等同於
sample in space。
- Space.seed(seed: int | None = None) int | list[int] | dict[str, int]¶
為此空間(如果適用,還為其子空間)的偽隨機數生成器 (PRNG) 設定種子。
- 引數:
seed – 空間的種子值。對於複合空間,此引數會擴充套件以接受多個值。有關更多詳細資訊,請參閱空間的文件。
- 返回:
用於所有 PRNG 的種子值;對於複合空間,這可以是值元組或字典。
- Space.to_jsonable(sample_n: Sequence[T_cov]) list[Any]¶
將此空間的一批樣本轉換為可 JSON 化的資料型別。
- Space.from_jsonable(sample_n: list[Any]) list[T_cov]¶
將可 JSON 化的資料型別轉換為此空間的一批樣本。
基本空間¶
Gymnasium 包含許多基本空間,這些空間被用作構建更復雜空間的積木。
Box- 支援連續(和離散)向量或矩陣,用於向量觀察、影像等Discrete- 支援單個離散值,並可選地指定值的起始點MultiBinary- 支援單個或矩陣的二進位制值,用於按住按鈕或智慧體是否擁有物體MultiDiscrete- 支援多軸的多個離散值,用於控制器動作Text- 支援字串,用於傳遞智慧體訊息、任務詳情等
複合空間¶
通常,環境空間需要將基本空間連線起來,以實現向量化環境、分離智慧體或提高空間的可讀性。
工具函式¶
Gymnasium 包含許多有用的工具函式,用於展平(flattening)和非展平(unflattening)空間。這對於將資訊傳遞給神經網路可能很重要。
utils.flatdim- 展平空間將包含的維度數量utils.flatten_space- 展平一個空間,其中將包含utils.flattened空間例項utils.flatten- 展平一個空間例項,該例項包含在空間的展平版本中utils.unflatten-utils.flatten_space函式的反向操作
向量工具函式¶
在向量化環境時,需要修改觀察和動作空間以適應新的批處理空間大小。因此,Gymnasium 提供了許多在使用空間與向量環境時使用的附加函式。
vector.utils.batch_space- 將一個空間轉換為等效的n個使用者的空間vector.utils.concatenate- 將一個空間的樣本連線到一個預生成的空間中vector.utils.iterate- 遍歷批處理空間的樣本vector.utils.create_empty_array- 為一個空間建立空樣本(通常與concatenate結合使用)vector.utils.create_shared_memory- 為非同步(多程序)環境建立共享記憶體vector.utils.read_from_shared_memory- 讀取非同步(多程序)環境的共享記憶體vector.utils.write_to_shared_memory- 寫入非同步(多程序)環境的共享記憶體