调用环境状态元组

时间:2019-09-17 04:40:07

标签: python reinforcement-learning openai-gym

我是Open Ai Gym的新手,目前正在出租车环境中运行强化学习(RL),而我的研究要求我能够调用State元组(或在Taxi.py中称为“ State Space” file)进行一些数据挖掘/状态-动作对操作。

有一个函数可以调用吗?

例如:State(123) = (taxi_row, taxi_col, passenger_location, destination)

在RL中,状态和动作以矩阵形式column = state, row = action表示。

在源代码(taxi.py中,其称为“状态空间由(taxi_rowtaxi_colpassenger_locationdestination)表示”

1 个答案:

答案 0 :(得分:1)

您可以这样做:

>>> import gym
>>> env = gym.make('Taxi-v2')
>>> from gym.envs.toy_text.taxi import *
>>> 
>>> 
>>> x = TaxiEnv()
>>> random_state = 123
>>> taxi_row, taxi_col, passenger_index, destination_index = x.decode(random_state)
>>> taxi_row
1
>>> taxi_col
1
>>> passenger_index
0
>>> destination_index
3

在您的问题中,您需要passenger_locationdestination。但是我使用的代码是返回passenger_indexdestination_index。因此,如果您了解了环境地图,就可以轻松获取位置。

以下是该环境中使用的简单映射:

MAP = [
    "+---------+",
    "|R: | : :G|",
    "| : | : : |",
    "| : : : : |",
    "| | : | : |",
    "|Y| : |B: |",
    "+---------+",
]

在此地图中,我们有四个不同的位置(R,G,Y,B)。现在,您可以像这样轻松地知道索引,从而获得乘客的位置和目的地:

  • 乘客位置:

    • 0:R(ed)
    • 1:G(reen)
    • 2:Y(黄色)
    • 3:B(lue)
    • 4:乘坐出租车
  • 目的地:

    • 0:R(ed)
    • 1:G(reen)
    • 2:Y(黄色)
    • 3:B(lue)

希望这能回答您的问题!