Learn AI with Python · Lezione

Ambienti Gymnasium personalizzati

Sottoclasse gym.Env, spazi di osservazione/azione, step/reset/render, registrazione di un ambiente personalizzato

Lezione 4 di 413 passaggi

Ambienti Gymnasium personalizzati è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.

Che cos'è Gymnasium?

Gymnasium (il successore mantenuto di OpenAI Gym) è l'API standard per gli ambienti RL. Qualsiasi agente che ne segua l'interfaccia funziona con ogni ambiente compatibile; crearne uno proprio permette quindi di applicare l'RL a problemi personalizzati.

pip install gymnasium

import gymnasium as gym

Ereditare da gymnasium.Env

Un ambiente personalizzato eredita da gymnasium.Env e implementa quattro elementi: gli spazi delle azioni e delle osservazioni, oltre a reset e step. Questo contratto è tutto ciò di cui un agente ha bisogno.

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

Lo spazio delle azioni

action_space dichiara quali azioni sono valide. Discrete(n) indica n possibili scelte (ad esempio su/giù/sinistra/destra); Box definisce intervalli continui per azioni come la sterzata.

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

Lo spazio delle osservazioni

observation_space descrive ciò che l'agente osserva. Uno spazio Box definisce la forma e i limiti dei valori del vettore di osservazione, così gli algoritmi conoscono le dimensioni dell'input.

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

Il metodo reset

reset avvia un nuovo episodio e restituisce una tupla (observation, info). Accetta un seed per garantire la riproducibilità. Restituite sempre qui l'osservazione iniziale.

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

Il metodo step

step(action) fa avanzare l'ambiente di un tick. Restituisce cinque valori: (obs, reward, terminated, truncated, info). Rispettare questa firma è essenziale per la compatibilità.

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

terminated e truncated

Si tratta di due flag distinti: terminated indica che l'attività è terminata naturalmente (obiettivo raggiunto o fallimento); truncated indica che è stata interrotta (ad esempio per il limite di tempo). Tenerli separati permette agli algoritmi di gestirli correttamente.

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

Progettare la ricompensa

La funzione di ricompensa definisce l'obiettivo. Progettatela con attenzione: una piccola penalità a ogni passo più un bonus per il raggiungimento dell'obiettivo incoraggia ad arrivare rapidamente al traguardo. Una progettazione inadeguata della ricompensa è la causa più comune dei fallimenti nell'RL.

Registrare l'ambiente

Registrate il vostro ambiente con un ID, così potrete crearlo tramite gym.make, seguendo la convenzione degli ambienti integrati.

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

Utilizzarlo con un agente

Poiché segue l'API standard, il vostro ambiente personalizzato si integra direttamente con librerie come Stable-Baselines3, senza bisogno di codice di collegamento aggiuntivo.

from stable_baselines3 import PPO

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

Il ciclo di interazione standard

Ogni ciclo RL ha lo stesso aspetto: eseguite il reset per ottenere la prima osservazione, quindi scegliete ripetutamente un'azione, chiamate step e fermatevi quando terminated o truncated è impostato. Questa uniformità è l'obiettivo principale di 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

Verifica rapida

Verificate la vostra conoscenza di Gymnasium.

Riepilogo: ambienti Gymnasium personalizzati

Avete creato un ambiente personalizzato ereditando da gymnasium.Env, definendo action_space e observation_space, implementando reset() (che restituisce obs, info) e step() (che restituisce obs, reward, terminated, truncated, info), oltre a progettare una ricompensa. Seguendo l'API standard, qualsiasi libreria RL può eseguire l'addestramento su di esso.

Gratis per iniziare

Impara Python con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
53
Lezioni
225

Domande Frequenti

La lezione «Ambienti Gymnasium personalizzati» è gratuita?

Sì — il testo completo di «Ambienti Gymnasium personalizzati» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.

Cosa imparerò in «Ambienti Gymnasium personalizzati»?

Sottoclasse gym.Env, spazi di osservazione/azione, step/reset/render, registrazione di un ambiente personalizzato Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Learn AI with Python?

Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Ambienti Gymnasium personalizzati»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?

Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Metodi policy gradient: REINFORCE
  2. Metodi actor-critic (A2C)
  3. Proximal Policy Optimization (PPO)
  4. Ambienti Gymnasium personalizzati
← Torna a Learn AI with Python