Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

[Projeto] Treinando um agente para atravessar em segurança o frozen lake usando Q-learning

#instalando as bibliotecas
!pip install gymnasium numpy

#importando as bibliotecas
import gymnasium as gym
import numpy as np
import random
import matplotlib.pyplot as plt

# Inicializar o ambiente FrozenLake-v1
# is_slippery=False para um ambiente determinístico (mais fácil de aprender inicialmente)
env = gym.make('FrozenLake-v1', is_slippery=False, render_mode='ansi')

# Obter o número de estados e ações
num_states = env.observation_space.n
num_actions = env.action_space.n

print(f"Ambiente FrozenLake-v1 inicializado.")
print(f"Número de estados: {num_states}")
print(f"Número de ações: {num_actions}")

# Visualizar o ambiente (opcional, requer render_mode='human' ou 'rgb_array')
# Para visualização em texto, podemos imprimir o estado inicial
initial_observation, info = env.reset()
print("\nEstado inicial do ambiente:")
print(env.render())

# 2. Definir os hiperparâmetros do agente
alpha = 0.1  # Taxa de aprendizado (learning rate)
gamma = 0.99  # Fator de desconto (discount factor)
epsilon = 1.0  # Taxa de exploração inicial (exploration rate)
epsilon_decay_rate = 0.001 # Taxa de decaimento de epsilon
min_epsilon = 0.01 # Epsilon mínimo

# Número de episódios para treinamento
num_episodes = 20000

# 2.1. Inicializar a Q-table com zeros
q_table = np.zeros((num_states, num_actions))

print(f"Q-table inicializada com dimensões: {q_table.shape}")
print(f"Taxa de aprendizado (alpha): {alpha}")
print(f"Fator de desconto (gamma): {gamma}")
print(f"Taxa de exploração inicial (epsilon): {epsilon}")
print(f"Taxa de decaimento de epsilon: {epsilon_decay_rate}")
print(f"Número de episódios de treinamento: {num_episodes}")