Skip to content

🏋️ Gymnasium Integration

This guide explains how to use Gymnasium environments with PAMIQ Core framework.

Installation

To use the Gymnasium integration, install PAMIQ Core with the gym extra:

pip install pamiq-core[gym]

Overview

The pamiq_core.gym module provides seamless integration between Gymnasium (the fork of OpenAI Gym) and PAMIQ Core's interaction system. This allows you to use any Gymnasium environment as a PAMIQ Core environment.

Key Components

GymEnvironment

GymEnvironment wraps any Gymnasium environment to make it compatible with PAMIQ Core's Environment interface:

from pamiq_core.gym import GymEnvironment

# Create from environment ID
env = GymEnvironment("CartPole-v1")

# Or use existing Gymnasium environment
import gymnasium as gym
gym_env = gym.make("CartPole-v1", render_mode="human")
env = GymEnvironment(gym_env)

GymAgent

GymAgent is an abstract base class for implementing agents that interact with Gymnasium environments:

from pamiq_core.gym import GymAgent
import numpy as np

class MyCartPoleAgent(GymAgent[np.ndarray, int]):
    def on_reset(self, obs, info):
        """Called when environment resets."""
        return 0  # Initial action

    def on_step(self, obs, reward, terminated, truncated, info):
        """Called at each environment step."""
        # Simple policy: move right if pole is tilting right
        return 1 if obs[2] > 0 else 0

Advanced Features

Manual Environment Reset

Agents can request environment reset by setting the need_reset flag:

class EarlyStoppingAgent(GymAgent[np.ndarray, int]):
    def on_step(self, obs, reward, terminated, truncated, info):
        # Request reset if pole angle is too large
        if abs(obs[2]) > 0.5:
            self.need_reset = True
        return 1 if obs[2] > 0 else 0

API Reference

More details, Checkout to the API Reference