Crowd Behaviour Modeling: From Cellular Automata to Multi-Agent Systems