doo*_*oob 4 blackjack python-3.x openai-gym
我尝试使用 openAI Gym 学习在二十一点中应用的 MC-蒙特卡罗方法。我不明白这些行:
def __init__(self, natural=False):
self.action_space = spaces.Discrete(2)
self.observation_space = spaces.Tuple((
spaces.Discrete(32),
spaces.Discrete(11),
spaces.Discrete(2)))
self.seed()
Run Code Online (Sandbox Code Playgroud)
来源:https : //github.com/openai/gym/blob/master/gym/envs/toy_text/blackjack.py
观察空间和动作空间已在此处的评论中定义
观察空间:
The observation of a 3-tuple of: the player's current sum,
the dealer's one showing card (1-10 where 1 is ace),
and whether or not the player holds a usable ace (0 or 1).
eg: (14, 9, False) means the current sum is 14, card shown is 9 and there is no usable ace(because ace can be used as 1 or 11)
Run Code Online (Sandbox Code Playgroud)
动作空间:
The player can request additional cards (hit=1) until they decide to stop
(stick=0) or exceed 21 (bust).
Run Code Online (Sandbox Code Playgroud)
当我们要在环境中定义离散的动作/观察空间时,就会使用离散空间。所以spaces.Discrete(2)意味着我们有一个离散变量,它可以取两个可能的值之一。
在 Blackjack 环境中,
self.action_space = spaces.Discrete(2)
# here spaces.Discrete(2) means that action can either be True or False.
self.observation_space = spaces.Tuple((
spaces.Discrete(32),
spaces.Discrete(11),
spaces.Discrete(2)))
# here spaces.Discrete(32) corresponds to the 32 possible sum of card number possible
# here spaces.Discrete(11) corresponds to the 11 possible cards which can be dealed
# by the dealer: [1,2,3,4,5,6,7,8,9,10(king,queen,jack),11(ace if possible)]
# here spaces.Discrete(2) corresponds to the two possible uses of the ace: [True, False]
# True if it can be used as 11.
Run Code Online (Sandbox Code Playgroud)