Learn AI with Python · Lección

Entornos personalizados de Gymnasium

Subclase gym.Env, espacios de observación/acción, step/reset/render y registro de un entorno personalizado.

Lección 4 de 413 pasos

Entornos personalizados de Gymnasium es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué es Gymnasium?

Gymnasium (el sucesor mantenido de OpenAI Gym) es la API estándar para los entornos de RL. Cualquier agente que siga su interfaz funciona con cualquier entorno compatible, por lo que crear uno propio permite aplicar RL a problemas personalizados.

pip install gymnasium

import gymnasium as gym

Crear una subclase de gymnasium.Env

Un entorno personalizado hereda de gymnasium.Env e implementa cuatro elementos: los espacios de acciones y observaciones, además de reset y step. Ese contrato es todo lo que necesita un agente.

class GridWorld(gym.Env):
    def __init__(self):
        super().__init__()

El espacio de acciones

action_space declara qué acciones son válidas. Discrete(n) significa que hay n opciones (por ejemplo, arriba/abajo/izquierda/derecha); Box define rangos continuos para acciones como dirigir.

self.action_space = gym.spaces.Discrete(4)  # 4 moves

El espacio de observaciones

observation_space describe lo que observa el agente. Un espacio Box establece la forma y los límites de valores del vector de observación, para que los algoritmos conozcan las dimensiones de entrada.

self.observation_space = gym.spaces.Box(
    low=0, high=10, shape=(2,), dtype=float
)  # agent (x, y) position

El método reset

reset inicia un episodio nuevo y devuelve una tupla (observation, info). Acepta un seed para garantizar la reproducibilidad. Devuelva siempre aquí la observación inicial.

def reset(self, seed=None, options=None):
    super().reset(seed=seed)
    self.pos = [0, 0]
    obs = self._get_obs()
    info = {}
    return obs, info

El método step

step(action) hace avanzar el entorno un instante. Devuelve cinco valores: (obs, reward, terminated, truncated, info). Respetar esta signatura es esencial para la compatibilidad.

def step(self, action):
    self._move(action)
    obs = self._get_obs()
    ...

terminated frente a truncated

Hay dos indicadores separados: terminated significa que la tarea terminó de forma natural (se alcanzó el objetivo o se produjo un fallo); truncated significa que se interrumpió (por ejemplo, debido a un límite de tiempo). Separarlos permite que los algoritmos gestionen cada caso correctamente.

    terminated = (self.pos == self.goal)
    truncated = (self.steps >= self.max_steps)
    reward = 1.0 if terminated else -0.01
    return obs, reward, terminated, truncated, {}

Diseño de la recompensa

La función de recompensa define el objetivo. Diseñela con cuidado: una pequeña penalización por paso junto con una bonificación por alcanzar el objetivo fomenta llegar rápidamente al destino. Un mal diseño de la recompensa es la causa más común de los fallos en RL.

Registro del entorno

Registre su entorno con un ID para poder crearlo mediante gym.make, siguiendo la convención de los entornos integrados.

gym.register(id="GridWorld-v0", entry_point=GridWorld)
env = gym.make("GridWorld-v0")

Uso con un agente

Como sigue la API estándar, su entorno personalizado se integra directamente con bibliotecas como Stable-Baselines3, sin necesidad de código adicional de adaptación.

from stable_baselines3 import PPO

env = gym.make("GridWorld-v0")
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=50_000)

El bucle de interacción estándar

Todos los bucles de RL tienen el mismo aspecto: reinicie para obtener la primera observación, elija una acción repetidamente, llame a step y deténgase cuando terminated o truncated sea verdadero. Esta uniformidad es precisamente el objetivo de Gymnasium.

obs, info = env.reset()
done = False
while not done:
    action = env.action_space.sample()
    obs, reward, terminated, truncated, info = env.step(action)
    done = terminated or truncated

Comprobación rápida

Compruebe sus conocimientos sobre Gymnasium.

Resumen: entornos personalizados de Gymnasium

Creó un entorno personalizado heredando de gymnasium.Env, definiendo action_space y observation_space, implementando reset() (devuelve obs, info) y step() (devuelve obs, reward, terminated, truncated, info), y diseñando una recompensa. Seguir la API estándar permite que cualquier biblioteca de RL lo utilice para entrenar.

Gratis para empezar

Aprende Python con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
53
Lecciones
225

Preguntas frecuentes

¿La lección «Entornos personalizados de Gymnasium» es gratis?

Sí — el texto completo de «Entornos personalizados de Gymnasium» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué aprenderé en «Entornos personalizados de Gymnasium»?

Subclase gym.Env, espacios de observación/acción, step/reset/render y registro de un entorno personalizado. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn AI with Python?

No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Entornos personalizados de Gymnasium»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?

Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Métodos de gradiente de política: REINFORCE
  2. Métodos actor-crítico (A2C)
  3. Optimización de política proximal (PPO)
  4. Entornos personalizados de Gymnasium
← Volver a Learn AI with Python