используя openai тренажерный зал (блэкджек), чтобы сделать ай - PullRequest
0 голосов
/ 12 января 2019

Я использую тренажерный зал openai, чтобы сделать ИИ для блэкджека.

но я плохо разбираюсь в питоне и спортзале, поэтому не знаю, как завершить код.

Я пытался написать простой код для создания ИИ с использованием Q-learning.

но я недостаточно знаком с open ai gym и 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) продолжает расти (если мой алгоритм работает)

, а также хотите знать, как правильно использовать тренажерный зал.

1 Ответ

0 голосов
/ 12 января 2019

Я буду обновлять этот ответ, как я понимаю, что вы хотите точно

  • Для вашего первого вопроса в комментарии вы можете получить количество действий с помощью env.observation_space.n и их значение на env.unwrapped.get_action_meanings(), если вы используете последнюю версию gym.
  • Для своего третьего вопроса вы можете визуализировать игру, используя env.render().

Вот минимальный рабочий пример, который отображает игру с python3 и последней версией тренажерного зала «0.10.9» (вы можете получить версию для своего спортзала по gym.__version__):

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
...