This code is mostly for internal version control of tasks related to my PhD allowing quick experimentation in a modular manner, and as a way of sharing functions and tests with colleagues. The code is experimental and buggy, and only a mad person would try running the whole thing. Interesting pieces in Vissim Folder:
- DQN Agents (Target Networks, Duelling, DoubleDQN, Prioritised Experience Replay, etc.)
- Actor Critic Agents
- Environment and SignalControlUnit interfaces with simulator.
Open Jupyter Notebook. Currently in the middle of some major code rearrangement, so everything needs to be run from Env_Ray.ipynb in the Vissim folder. The controller architecture works in the following way:
There are currently 5 maps:
-
Cross Single Straight (2 phases) - Focus on asymmetric demand. Can be run using programs or phases. No turning.
-
Cross Single Triple (4 phases) - Focus on single intersection complex control. Only the first 4 phases in the diagram below.
-
Cross Single Triple (8 phases) - Same with more complexity on the actions side. Focus on complex control.
-
Five Intersection (8 phases) - Combination of 5 complex intersections in cross, s.t. the incoming cars to the middle intersection have at least gone through one of the outer ones. Focus on platoons and test for communications between controllers.
-
Balance (14 intersections) - Currently training. Focus on real world networks and beating commercial implementations.
Several agents can be deployed:
- DQN
- Double DQN
- Duelling DQN
- Duelling Double DQN
- Actor Critic
Commercial approaches can be used:
- MOVA
- Surtrac
Currently under construction