  Congestion in transport networks is a topic of theoretical interest and
practical importance. In this paper we study the flow of vehicles in urban
street networks. In particular, we use a cellular automata model to simulate
the motion of vehicles along streets, coupled with a congestion-aware routing
at street crossings. Such routing makes use of the knowledge of agents about
traffic in nearby roads and allows the vehicles to dynamically update the
routes towards their destinations. By implementing the model in real urban
street patterns of various cities, we show that it is possible to achieve a
global traffic optimization based on local agent decisions.
