I funksjonen timer_fired
dersom app.auto_mode
er True
, skal vi, i stedet for å flytte agenten tilfeldig, gjøre følgende steg:
- Bruk
$\epsilon$ -grådig strategi til å velge en retning$a_t$ ved å kalle funksjonendirection = get_direction(...)
fralaby_ai.py
. - Beregn belønningen
$R(s_t, a_t)$ ved å kallereward_function
fralaby_ai.py
. - Lagre
app.agent_pos
i en ny variabelprev_pos
. Tenk påprev_pos
som$s_t$ . - Flytt agenten i retning
direction
ved å kallemove_agent_in_direction
fralaby_maze.py
. Nå erapp.agent_pos
lik$s_{t+1}$ . - Finn den nåværende Q-verdien
$Q(s_t, a_t)$ iapp.q_table
ved å brukeprev_pos
ogdirection
. - Finn estimert fremtidig belønning
$\max_{a\in\mathcal{A}}Q(s_{t+1}, a)$ ved å kalleget_maximum_q_value
medapp.agent_pos
ogapp.q_table
. - Regn ut den nye Q-verdien med formelen
$(1-\alpha)Q(s_t, a_t) + \alpha\left(R(s_t, a_t) + \gamma\max_{a\in\mathcal{A}}Q(s_{t+1}, a)\right)$ . - Oppdater
$Q(s_t, a_t)$ til å være den nye Q-verdien fra forrige steg.