This project is an attempt to implement OpenAI Taxi-v2 in C++.
It uses a simple Q-learning (RL) model written from scratch in C++. For graphical output, SFML (Simple and Fast Multimedia Library) is used.
- C++ compiler
- SFML library
Edit the Makefile
, if necessary, to match your specifications.
Here are the instructions to build and run this app in any Linux system:
- Clone the repo:
git clone https://github.com/VivekThazhathattil/vismartcab
- Navigate to the repo directory:
cd vismartcab
- Execute
make build
from the current directory. This will build the program. Make sure you have SFML libraries in your system.
Run make clean; make
to remove any previous sessions and to start a fresh new session.
You may also replace the file saveData/qTable.dat
with similar file of the same name to resume training for that session.
- Press up arrow and down arrow to slow down/ speed up the simulation/training.
- Autosaves
Reward Table
so that it can be reused if a run is halted for some unforseen reason and the user wishes to continue training. - Displays important information pertaining to the run alongside the graphical window.
saveData/stats.dat
stores the score and time-taken for all the episodes thus far.- Configure your own walls easily using the function
addWall(orientation, length, origin_x, origin_y)
insrc/wall.cpp
. Specifyorientation
to be horizontal using 'h' or vertical using 'v', 1 unit of wall length being sidelength of the grid andorigin_x
andorigin_y
specifies the coordinates of the wall origin. Recompile after configuration to switch to use your wall setup. - Left click on the grid edges to create walls. Right click anywhere inside the window to remove the most recently added wall.
Any issues pertaining to the program may be reported via GitHub Issues. You may also contact me at vivek.thazhathattil@gmail.com for help/feedback.