Benutzerdefinierte Gymnasium-Umgebungen
gym.Env-Unterklasse, Beobachtungs-/Aktionsräume, step/reset/render, Registrieren einer benutzerdefinierten Umgebung.
Benutzerdefinierte Gymnasium-Umgebungen ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was ist Gymnasium?
Gymnasium (der gepflegte Nachfolger von OpenAI Gym) ist die Standard-API für RL-Umgebungen. Jeder Agent, der diese Schnittstelle einhält, funktioniert mit jeder kompatiblen Umgebung. Wenn Sie eine eigene Umgebung erstellen, können Sie RL daher für individuelle Probleme einsetzen.
pip install gymnasium
import gymnasium as gymgymnasium.Env ableiten
Eine benutzerdefinierte Umgebung leitet sich von gymnasium.Env ab und implementiert vier Dinge: die Aktions- und Beobachtungsräume sowie reset und step. Dieser Vertrag umfasst alles, was ein Agent benötigt.
class GridWorld(gym.Env):
def __init__(self):
super().__init__()Der Aktionsraum
action_space legt fest, welche Aktionen gültig sind. Discrete(n) bedeutet n Auswahlmöglichkeiten (z. B. oben, unten, links und rechts); Box definiert kontinuierliche Wertebereiche für Aktionen wie das Lenken.
self.action_space = gym.spaces.Discrete(4) # 4 movesDer Beobachtungsraum
observation_space beschreibt, was der Agent sieht. Ein Box-Raum legt die Form und Wertebereiche des Beobachtungsvektors fest, damit die Algorithmen die Eingabedimensionen kennen.
self.observation_space = gym.spaces.Box(
low=0, high=10, shape=(2,), dtype=float
) # agent (x, y) positionDie Methode reset
reset startet eine neue Episode und gibt ein Tupel (observation, info) zurück. Die Methode akzeptiert einen seed, um die Reproduzierbarkeit zu gewährleisten. Geben Sie hier immer die anfängliche Beobachtung zurück.
def reset(self, seed=None, options=None):
super().reset(seed=seed)
self.pos = [0, 0]
obs = self._get_obs()
info = {}
return obs, infoDie Methode step
step(action) lässt die Umgebung einen Zeitschritt voranschreiten. Die Methode gibt fünf Werte zurück: (obs, reward, terminated, truncated, info). Für die Kompatibilität ist es entscheidend, diese Signatur korrekt einzuhalten.
def step(self, action):
self._move(action)
obs = self._get_obs()
...terminated im Vergleich zu truncated
Es gibt zwei getrennte Flags: terminated bedeutet, dass die Aufgabe auf natürliche Weise beendet wurde (das Ziel wurde erreicht oder die Aufgabe ist fehlgeschlagen); truncated bedeutet, dass sie vorzeitig abgebrochen wurde (z. B. wegen eines Zeitlimits). Durch diese Aufteilung können Algorithmen beide Fälle korrekt behandeln.
terminated = (self.pos == self.goal)
truncated = (self.steps >= self.max_steps)
reward = 1.0 if terminated else -0.01
return obs, reward, terminated, truncated, {}Die Belohnung entwerfen
Die Belohnungsfunktion definiert das Ziel. Gestalten Sie sie sorgfältig: Eine kleine Strafe pro Schritt plus eine Zielbelohnung ermutigt dazu, das Ziel schnell zu erreichen. Eine schlechte Gestaltung der Belohnung ist die häufigste Ursache für Fehler beim RL.
Die Umgebung registrieren
Registrieren Sie Ihre Umgebung mit einer ID, damit Sie sie über gym.make erstellen können – entsprechend der Konvention integrierter Umgebungen.
gym.register(id="GridWorld-v0", entry_point=GridWorld)
env = gym.make("GridWorld-v0")Sie mit einem Agenten verwenden
Da Ihre benutzerdefinierte Umgebung der Standard-API folgt, können Sie sie direkt in Bibliotheken wie Stable-Baselines3 einbinden, ohne zusätzlichen Integrationsaufwand.
from stable_baselines3 import PPO
env = gym.make("GridWorld-v0")
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=50_000)Die standardisierte Interaktionsschleife
Jede RL-Schleife sieht gleich aus: Rufen Sie reset auf, um die erste Beobachtung zu erhalten, wählen Sie anschließend wiederholt eine Aktion aus, rufen Sie step auf und beenden Sie die Schleife, sobald terminated oder truncated wahr ist. Diese Einheitlichkeit ist der eigentliche Zweck von 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 truncatedKurzer Test
Testen Sie Ihr Wissen über Gymnasium.
Rückblick: Benutzerdefinierte Gymnasium-Umgebungen
Sie haben eine benutzerdefinierte Umgebung erstellt, indem Sie gymnasium.Env abgeleitet, action_space und observation_space definiert, reset() (gibt obs, info zurück) und step() (gibt obs, reward, terminated, truncated, info zurück) implementiert und eine Belohnung entworfen haben. Durch die Einhaltung der Standard-API kann jede RL-Bibliothek die Umgebung zum Trainieren verwenden.
Lerne Python mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 53
- Lektionen
- 225
Häufig gestellte Fragen
Ist die Lektion „Benutzerdefinierte Gymnasium-Umgebungen“ kostenlos?
Ja — der vollständige Text von „Benutzerdefinierte Gymnasium-Umgebungen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Benutzerdefinierte Gymnasium-Umgebungen“?
gym.Env-Unterklasse, Beobachtungs-/Aktionsräume, step/reset/render, Registrieren einer benutzerdefinierten Umgebung. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn AI with Python zu starten?
Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Benutzerdefinierte Gymnasium-Umgebungen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?
Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Policy-Gradient-Verfahren: REINFORCE
- Actor-Critic-Verfahren (A2C)
- Proximal Policy Optimization (PPO)
- Benutzerdefinierte Gymnasium-Umgebungen