If you're interested in this, RVO (reciprocal velocity obstacles) is another multi-agent system for collision avoidance with some good reading[0][1][2]. I've been porting the RVO2 library to Python3 over break and it's incredibly natural the way the particles float around each other.
[0] http://gamma.cs.unc.edu/RVO/ [1] http://gamma.cs.unc.edu/RVO2/ [2] http://gamma.cs.unc.edu/HRVO/