使用Openai Gym(21点)制作AI

时间:2019-01-12 14:37:18

标签: python reinforcement-learning openai-gym

我正在使用openai体育馆制作二十一点的AI。

但是我不擅长python和Gym,所以idk如何完成代码。

我一直在尝试编写一个简单的代码以使用Q学习来制作AI。

但是我对开放式AI体育馆和python不够熟悉。

我不知道如何检查状态的大小(env.observation_space.n不起作用。仅env.action_space.n向我显示其“ 2”) 我的代码是健身游戏(frozenlake)其他示例的副本

帮我完成此简单代码,以便我自己改善DQN之类的功能。

import gym
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np

env=gym.make('Blackjack-v0')

Q=np.zeros([400,env.action_space.n])

num_episodes=10000
dis=0.99
rList=[]

for i in range(num_episodes):
    state = env.reset()
    rALL = 0
    done = False

    while not done: 
        action=np.argmax(Q[state,:]+np.random.randn(1
        ,env.action_space.n)/(i+1))


        new_state,reward,done,_=env.step(action)

        Q[state, action] = reward + dis * np.max(Q[new_state, :])
        print(rList)
        rALL += reward
        state = new_state

    rList.append(rALL)\


print(Q)

我想看看奖励列表(rList)持续增加(如果我的算法有效)

,并且还想知道如何很好地使用Gym模块。

1 个答案:

答案 0 :(得分:0)

当我了解您的确切要求后,我将更新此回复

  • 对于第一个要评论的问题,如果使用最新版本的env.observation_space.n,则可以使用env.unwrapped.get_action_meanings()来获取操作数,并使用gym来获取其含义。
  • 对于第三个问题,您可以使用env.render()来形象化游戏。

这是一个最小的工作示例,它使用python3和最新版本的Gym版本'0.10.9'(您可以通过gym.__version__获得Gym版本)来渲染游戏:

import time
import gym

# Create a breakout environment
env = gym.make('SpaceInvaders-v4')

# Reset it, returns the starting frame
frame = env.reset()

# Render
env.render()

is_done = False

while not is_done:
    # Perform a random action, returns the new frame, reward and whether the game is over
    frame, reward, is_done, _ = env.step(env.action_space.sample())
    # Render
    env.render()

    time.sleep(0.01)
    if is_done:
        env.close()
        break