計程車

../../../_images/taxi.gif

此環境是 Toy Text 環境的一部分,其中包含有關環境的一般資訊。

動作空間

Discrete(6)

觀察空間

Discrete(500)

import

gymnasium.make("Taxi-v3")

計程車問題涉及在網格世界中導航至乘客,接載他們並將他們送到四個地點之一。

描述

在 5x5 網格世界中有四個指定的接載和下車地點(紅色、綠色、黃色和藍色)。計程車從隨機方格開始,乘客在其中一個指定地點。

目標是將計程車移動到乘客的位置,接載乘客,移動到乘客期望的目的地,然後放下乘客。一旦乘客被放下,此回合結束。

玩家因成功將乘客送到正確地點而獲得正向獎勵。因不正確嘗試接載/放下乘客以及未收到其他獎勵的每個步驟而獲得負向獎勵。

地圖

    +---------+
    |R: | : :G|
    | : | : : |
    | : : : : |
    | | : | : |
    |Y| : |B: |
    +---------+

出自 Tom Dietterich 的 "Hierarchical Reinforcement Learning with the MAXQ Value Function Decomposition" [1]。

動作空間

動作形狀為 (1,),範圍為 {0, 5},表示移動計程車的方向或接載/放下乘客。

  • 0:向南移動(向下)

  • 1:向北移動(向上)

  • 2:向東移動(向右)

  • 3:向西移動(向左)

  • 4:接載乘客

  • 5:放下乘客

觀察空間

由於有 25 個計程車位置、乘客的 5 個可能位置(包括乘客在計程車中的情況)和 4 個目的地位置,因此有 500 個離散狀態。

地圖上的目的地以顏色的第一個字母表示。

乘客位置

  • 0:紅色

  • 1:綠色

  • 2:黃色

  • 3:藍色

  • 4:在計程車中

目的地

  • 0:紅色

  • 1:綠色

  • 2:黃色

  • 3:藍色

觀察值以 int() 傳回,其編碼對應的狀態,計算方式為 ((taxi_row * 5 + taxi_col) * 5 + passenger_location) * 4 + destination

請注意,在一個回合中實際可以達到 400 個狀態。遺失的狀態對應於乘客與其目的地位於同一位置的情況,因為這通常表示回合結束。在成功回合後,當乘客和計程車都位於目的地時,可以觀察到另外四個狀態。這總共給出 404 個可到達的離散狀態。

起始狀態

初始狀態是從可能的狀態中均勻採樣的,其中乘客既不在目的地也不在計程車內。有 300 個可能的初始狀態:25 個計程車位置、4 個乘客位置(不包括在計程車內)和 3 個目的地(不包括乘客目前的位置)。

獎勵

  • 每步 -1,除非觸發其他獎勵。

  • +20 交付乘客。

  • -10 非法執行 “接載” 和 “放下” 動作。

導致空操作的動作(例如撞牆)將產生時間步懲罰。可以透過採樣 info 中傳回的 action_mask 來避免空操作。

回合結束

如果發生以下情況,回合結束

  • 終止:1. 計程車放下乘客。

  • 截斷(當使用 time_limit wrapper 時):1. 回合長度為 200。

資訊

step()reset() 傳回具有以下鍵的 dict

  • p - 狀態的轉換機率。

  • action_mask - 動作是否會導致轉換到新狀態。

由於計程車不是隨機的,因此轉換機率始終為 1.0。實作符合 Dietterich 論文(‘The fickle taxi task’)的轉換機率是一個待辦事項。

在某些情況下,採取動作對回合的狀態沒有影響。在 v0.25.0 中,info["action_mask"] 包含一個 np.ndarray,用於指定動作是否會改變狀態的每個動作。

若要採樣修改動作,請使用 action = env.action_space.sample(info["action_mask"]) 或使用基於 Q 值的演算法 action = np.argmax(q_values[obs, np.where(info["action_mask"] == 1)[0]])

引數

import gymnasium as gym
gym.make('Taxi-v3')

參考文獻

[1] T. G. Dietterich, “Hierarchical Reinforcement Learning with the MAXQ Value Function Decomposition,” Journal of Artificial Intelligence Research, vol. 13, pp. 227–303, Nov. 2000, doi: 10.1613/jair.639.

版本歷史

  • v3:地圖修正 + 更清晰的領域描述,v0.25.0 動作遮罩新增至 reset 和 step 資訊

  • v2:不允許計程車起始位置 = 目標位置,更新 rollout 中的計程車觀察值,更新計程車獎勵閾值。

  • v1:從 locs 中移除 (3,2),新增 passidx<4 檢查

  • v0:初始版本發佈