Introducción a OpenAI Gym
En el ámbito del aprendizaje por refuerzo, OpenAI Gym representa una herramienta fundamental y ampliamente utilizada. Se trata de una biblioteca de entornos experimentales para aprendizaje por refuerzo desarrollada por OpenAI, que proporciona a investigadores y desarrolladores una plataforma estandarizada para crear, probar y comparar diversos algoritmos de aprendizaje por refuerzo. En esencia, implementa la componente de entorno en la interacción agente-entorno utilizando el lenguaje Python.
El sitio oficial de Gym: https://gym.openai.com/ Actualmente también existe una rama activa llamada Gymnasium (https://www.gymnasium.farm/), que ha mejorado y extendido la biblioteca original.
Configuración del Entorno
Es recomendable instalar el entorno en un entorno virtual. Para este ejemplo, utilizaremos un entorno virtual en conda.
-Sistema operativo: Windows 11
-Version de Python: 3.9
Gym puede instalarse mediante pip o conda. Antes de la instalación, es buena práctica actualizar las herramientas de instalación:
# Actualización de pip
pip --version
python -m pip install --upgrade pip
pip --version
# Actualización de conda
conda --version
conda update conda
# O actualizar todos los paquetes en el entorno virtual activado
# conda update --all
conda --version
Instalación de Gym
La biblioteca Gym está compuesta por múltiples paquetes, lo que permite instalar versiones mínimas o completas.
Instalación MínimaLa instalación básica de Gym incluye solo los paquetes esenciales:
# Instalación mediante pip
pip install gym
# Instalación mediante conda
conda install gym
Instalación EspecíficaPara instalar todos los componentes de Gym, se puede utilizar el indicador [all]:
# Instalación mediante pip
pip install gym[all]
# Instalación mediante conda
conda install gym[all]
También es posible instalar paquetes específicos como box2d:
# Instalación mediante pip
pip install gym[box2d]
# Instalación mediante conda
conda install gym[box2d]
Es importante notar que la instalación de box2d puede presentar dificultades o fallar, especialmente cuando se intenta mediante el indicador [all].
Componente de la Biblioteca Gym
OpenAI Gym ofrece una variedad de entornos para aprendizaje por refuerzo, divididos en biblioteca principal y extensiones.
- Biblioteca Principal (Obligatoria)
| Nombre del paquete | Función | Comando de instalación | Ejemplos de entornos |
|---|---|---|---|
gym |
Entorno base (controles clásicos, algoritmos simples) | pip install gym |
CartPole-v1, MountainCar-v0 |
gym-notices |
Notificaciones de actualización | Se instala automáticamente con gym |
- |
- Extensiones Comunes (Por categoría)
Control Clásico y Simulación Física
| Nombre del paquete | Tipo de entorno | Comando de instalación | Ejemplos de entornos |
|---|---|---|---|
gym[classic_control] |
Problemas de control clásico | pip install gym[classic_control] |
Pendulum-v1, Acrobot-v1 |
gym[box2d] |
Motor físico 2D (vehículos, robots) | pip install gym[box2d] |
LunarLander-v2, CarRacing-v2 |
Juegos Atari
| Nombre del paquete | Descripción | Comando de instalación | Ejemplos de juegos |
|---|---|---|---|
gym[atari] |
2600 juegos de Atari | pip install gym[atari] |
Pong-v4, Breakout-v4 |
ale-py |
Nuevo emulador de Atari (requerido) | pip install ale-py |
- |
Control de Robots
| Nombrre del paquete | Descripción | Método de instalación | Ejemplos de entornos |
|---|---|---|---|
gym[robotics] |
Simulación de robots con Mujoco | pip install gym[robotics] |
FetchReach-v2 |
mujoco-py |
Enlace del motor Mujoco | Instalación separada (requiere licencia) | - |
Otras Extensiones
| Nombre del paquete | Uso | Comendo de instalación | Notas |
|---|---|---|---|
gym[toy_text] |
Entornos de texto simples | pip install gym[toy_text] |
FrozenLake-v1 |
gym[all] |
Instalación completa de extensiones oficiales | pip install gym[all] |
No recomendado (puede generar errores o conflictos) |
- Bibliotecas de Terceros (No oficiales pero populares)
| Nombre del paquete | Propósito | Comando de instalación | Ejemplo |
|---|---|---|---|
gymnasium |
Rama oficial de Gym (más activa) | pip install gymnasium |
Compatible con Gym, corrige errores |
procgen |
Entornos generados proceduralmente | pip install procgen |
CoinRun-v0 |
pybullet |
Simulación física 3D | pip install pybullet |
AntBulletEnv-v0 |
- Consideraciones de Versión
- Gym 0.26+: Algunos cambios en la API (como
env.step()devuelve 5 valores). - Gymnasium: Recomendado para nuevos proyectos (
pip install gymnasium), es sucesor oficial de Gym con mantenimiento más activo. Para proyectos antiguos, se puede usarimport gym → import gymnasium as gym, pero todas las bibliotecas deben reinstalarse.
Problemas Comunes de Instalación
Se mencionó previamente el problema al instalar gym[box2d]. Esto suele deberse a falta de dependencias de compilación para Box2D (especialmente swig y la cadena de herramientas de compilación C++).
Causa raíz: Box2D es un motor físico C++ y el paquete box2d-py requiere la herramienta swig para generar código de enlace. El error típico indica que swig.exe no se encuentra, lo que significa que falta el entorno de compilación necesario.
Soluciones:
**Solución recomendada (sin compilación)**Instalar directamente el paquete precompilado de Box2D:
conda install -c conda-forge gym-box2d
Esto maneja automáticamente todas las dependencias, incluyendo la versión binaria de box2d-py.
Solución completa
- Paso 1: Instalar SWIG (obligatorio) En el entorno Conda:
conda install -c conda-forge swigO instalar manualmente: Descargar la versión de Windows de SWIG y agregar el directorio deswig.exea la variable de sistema PATH. - Paso 2: Instalar herramientas de compilación de Visual StudioAsegurarse de tener instalado Visual Studio 2022 con los siguientes componentes: "Desarrollo de escritorio con C++" - "SDK de Windows 10/11" O mediante línea de comandos (como administrador):
winget install Microsoft.VisualStudio.2022.BuildTools --override "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended" - Paso 3: Limpiar e reinstalar
pip uninstall box2d-py gym # Limpiar versiones antiguas``conda install -c conda-forge swig # Asegurar SWIG``pip install gym[box2d] --no-cache-dir # Forzar recompilación
Verificación de la instalaciónEjecutar el siguiente código para probar:
import gym
ambiente = gym.make("LunarLander-v2") # Usar entorno Box2D
print("¡Entorno creado exitosamente!")
ambiente.close()