Configuración del Entorno de Aprendizaje por Refuerzo: OpenAI Gym

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.

  1. 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 -
  1. 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)
  1. 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
  1. 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 usar import 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 de swig.exe a 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 reinstalarpip 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()

Etiquetas: aprendizaje-por-refuerzo openai-gym gymnasium Python entornos-virtuales

Publicado el 7-23 10:20