Cities and Complexity – Understanding Cities with Cellular Automata, Agent–Based Models, and Fractals