Teaching Microswimmers How to Navigate Complex Flows via Reinforcement Learning (CME 216 Final Project)
This repository contains the code (written in the form of Jupyter notebooks) for my final project for CME 216 at Stanford University (Spring 2020 quarter). In short, this project involved using reinforcement learning (specifically, Q-learning) to train microswimmers to succesfully navigate a complex flow (a periodic array of Taylor-Green vortices) so as to maximize their elevation (so-called gravitaxis). A full description of the problem and the work that I completed may be found in the project report.
The primary notebooks of interest include main.ipynb (where function and class definitions are given) and the three notebooks phi_0d3_psi_0d3.ipynb, phi_0d3_psi_1.ipynb, and phi_0d3_psi_3.ipynb. Other notebooks, such as those found in the "Additional experiments" folder, explore different parameter regimes but are less polished.