KeyError: 9 в Python для Google Colab - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь изменить среду FrozenLake для применения в моем простом проекте управления доходами, который направлен на оптимизацию. В моем проекте 300 состояний (количество не проданных мест) и 15 акций (разброс цен на места).

Я пытался самостоятельно. префикс для некоторых мест в коде.

import gym
import numpy as np
import time, pickle, os

env = gym.make('FrozenLake-v0')
env.observation_space.n=300
env.action_space.n=15

epsilon = 0.9

total_episodes = 1000
max_steps = 50

lr_rate = 0.81
gamma = 0.96

Q = np.zeros((env.observation_space.n, env.action_space.n))
print(Q)


def choose_action(state):
    action=0
    if np.random.uniform(0, 1) < epsilon:
        action = env.action_space.sample()
    else:
        action = np.argmax(Q[state, :])
    return action

def learn(state, state2, reward, action, action2):
    predict = Q[state, action]
    target = reward + gamma * Q[state2, action2]
    Q[state, action] = Q[state, action] + lr_rate * (target - predict)


# Start
rewards=0

for episode in range(total_episodes):
    t = 0
    state = env.reset()
    action = choose_action(state)

    while t < max_steps:

        state2, reward, done, info = env.step(action)


        action2 = choose_action(state2)

        learn(state, state2, reward, action, action2)

        print("these are env.render(state) and env.render(state2)")
        env.render(state)
        env.render(state2)

        state = state2
        action = action2     
        t += 1
        rewards+=1
        print("Q table for episode",episode,"and time",t,"is:")
        print(Q)

        if done:
            break
  # epsilon = min_epsilon + (max_epsilon - min_epsilon) * np.exp(-decay_rate * episode) 
  # os.system('clear')

        time.sleep(0.1)


print ("Score over time: ", rewards/total_episodes)
print(Q)

Это дает:

KeyError                                  Traceback (most recent call last)
<ipython-input-5-4d1e8742ec38> in <module>()
     55     while t < max_steps:
     56 
---> 57         state2, reward, done, info = env.step(action)
     58 
     59 

Я ожидаю получить таблицу Q, которая отличается от полных нулей.

...