Ошибка подтверждения возникает, когда я запускаю код для блэкджека RL - PullRequest
0 голосов
/ 13 января 2019

точно так же, как и заголовок.

мой код - простое Q-learning для блэкджека. но в обучающей части петля не может быть выполнена. это результат.

"C: \ Program Files \ Anaconda3 \ envs \ untitled4 \ python.exe" C: /Users/USER/PycharmProjects/untitled4/blackjack_RL.py

[]
[-1.0]
[-1.0]
[-1.0, -1]
[-1.0, -1, 1.0]
[-1.0, -1, 1.0]
[-1.0, -1, 1.0, -1]
[-1.0, -1, 1.0, -1, -1]
[-1.0, -1, 1.0, -1, -1]
[-1.0, -1, 1.0, -1, -1]
[-1.0, -1, 1.0, -1, -1, -1]
[-1.0, -1, 1.0, -1, -1, -1]
[-1.0, -1, 1.0, -1, -1, -1, -1.0]
[-1.0, -1, 1.0, -1, -1, -1, -1.0, -1.0]
[-1.0, -1, 1.0, -1, -1, -1, -1.0, -1.0]
[-1.0, -1, 1.0, -1, -1, -1, -1.0, -1.0, 1.0]
[-1.0, -1, 1.0, -1, -1, -1, -1.0, -1.0, 1.0, -1.0]
[-1.0, -1, 1.0, -1, -1, -1, -1.0, -1.0, 1.0, -1.0, -1.0]
[-1.0, -1, 1.0, -1, -1, -1, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0]
[-1.0, -1, 1.0, -1, -1, -1, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0]
[-1.0, -1, 1.0, -1, -1, -1, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0]
Traceback (most recent call last):
  File "C:/Users/USER/PycharmProjects/untitled4/blackjack_RL.py", line 26, in <module>
    new_state,reward,done,_=env.step(action)
  File "C:\Program Files\Anaconda3\envs\untitled4\lib\site-        packages\gym\envs\toy_text\blackjack.py", line 92, in step
    assert self.action_space.contains(action)
AssertionError

Process finished with exit code 1

печатный список - это список наград. Я думаю, что все шло хорошо, но внезапно ошибка появилась и остановила это. Как я могу это исправить? я использую окно и пичарм с анакондой

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
    e=1./((i/100)+1)
    while not done:
        if np.random.rand(1)<e:
            action=env.action_space.sample()
        else:
            action=np.argmax(Q[state,:])



        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('success rate: '+ str(sum(rList)/num_episodes))
print("Final Q-table values")

print(Q)
plt.bar(range(len(rList)),rList,color='blue')
plt.show()
...