An Introduction to Agent Based Simulation