/taxi-rl

Vahvistusoppimista Q-learning algoritmilla Gymin Taxi-v3 ympäristössä

Primary LanguagePython

Vahvistusoppimista OpenAI Gym ympäristössä

Projektin tarkoituksena oli luoda oppiva tekoälyagentti johonkin ympäristöön. Algoritmiksi valitsin Q-learningin ja ympäristöksi OpenAI Gym Taxi-v3 ympäristön. Ympäristössä on tavoitteena viedä asiakas määränpäähän liikuttamalla taksia. Asiakkaan ja määränpään sijainti vaihtelevat satunnaisesti eri pelikeroilla. Projekti tehty osana yliopiston soveltava projekti kurssia.

Luokkien ja metodien kuvaus

Agentit

/agents kansiossa on abstrakti yliluokka Agent, jolla kaksi metodia get_action ja get_policy

  • get_action palauttaa toimen (ei välttämättä policyn mukainen)
  • get_policy palauttaa policyn mukaisen toimen

Kansiossa on myös Q-learning algoritmia käyttävä agentti QLearningAgent sekä satunnaisia toimia valitseva agentti RandomAgent. Nämä luokat perivät Agentin ja toteuttavat metodit. QLearningAgent omaa myös metodin update, jolla päivitetään Q-taulun arvoja toiminnan jälkeen.

Agentin treenaus ja evaluointi

main.py tiedostossa on kaksi metodia:

  • training() metodi on agentin treenausta varten
  • evaluate() metodi on agentin suorituksen arviointia varten

main.py tiedoston suoritus alustaa Gymin Taxi-v3 ympäristön, treenaa Q-learning agentin sekä arvioi opetetun agentin sekä vertailun vuoksi satunnaisia toimia tekevän agentin.

Jupyter Notebook

Mukana olevassa notebook.ipynb tiedostossa on koodia erilaisten kaavioiden/diagrammien luomista varten. Tämän saa avattua Jupyter Notebook nimisellä ohjelmalla.

Ohjelman suoritus

pip install -r requirements.txt
python main.py

Video

Q learning video