E· Universitetreinforcement-learning· ca 60 min· utvecklande· verifierad 2026-09-20
Miljöer och simulering
Kunna bygga en enkel miljö med Gym-liknande gränssnitt.
Förkunskaper
Intuition
En RL-miljö är ett objekt med två metoder: reset() → första observationen; step(a) → (observation, belöning, klar, info). Det är Gymnasium-gränssnittet, och allt — från CartPole till en handelssimulator eller en «elev som svarar på övningar» — kan uttryckas så.
Designval som avgör om agenten lär sig något:
- Observation: tillräckligt för att fatta beslut (Markov), inte mer.
- Belöning: tät nog att ge signal, men det du faktiskt vill. Belöna «nära målet» och agenten lär sig snurra nära målet.
- Terminering: mål nått, tidsgräns, fel.
- Determinism:
reset(seed=…)för reproducerbar utvärdering.
Testa miljön innan agenten: slumpagent ska ge rimliga belöningar; ett handskrivet «rätt» beteende ska ge hög belöning. Många RL-buggar är miljöbuggar.
Kod
import numpy as np
class Rutnat:
"""4×4-rutnät: start (0,0), mål (3,3), ett hål på (1,1). Handlingar 0–3 = upp/höger/ner/vänster."""
def __init__(self, max_steg=30):
self.max_steg = max_steg; self.rng = np.random.default_rng()
def reset(self, seed=None):
self.rng = np.random.default_rng(seed); self.pos = np.array([0, 0]); self.t = 0
return self._obs()
def _obs(self):
return int(self.pos[0] * 4 + self.pos[1])
def step(self, a):
d = [(-1, 0), (0, 1), (1, 0), (0, -1)][a]
self.pos = np.clip(self.pos + d, 0, 3); self.t += 1
if (self.pos == [1, 1]).all(): return self._obs(), -1.0, True, {"why": "hål"}
if (self.pos == [3, 3]).all(): return self._obs(), 1.0, True, {"why": "mål"}
return self._obs(), -0.01, self.t >= self.max_steg, {}
env = Rutnat(); obs = env.reset(seed=0); tot = 0
for _ in range(30):
obs, r, done, info = env.step(env.rng.integers(4)); tot += r
if done: break
print(tot, info)
Små negativa steg-belöningar (−0,01) uppmuntrar korta vägar utan att dominera målbelöningen.
Behärskning innebär
- Bygger en miljö med reset/step-gränssnitt
- Definierar observationsrum, handlingsrum och belöning
- Testar miljön med en slumpagent och ett deterministiskt frö
Logga in för att göra övningarna och bygga upp din behärskning.