In the meantime, I have heuristics like https://github.com/dabreegster/abstreet/blob/ed2f703e859d57d.... They're not great at all. If you're interested in improving these, https://github.com/dabreegster/abstreet/issues/8 is a great bug. ;)
Some traffic signals are adaptive (they'll switch phases sooner/later based on real-time vehicle detection, bus priority, etc) or even centrally controllable. I'm not modeling that yet.