Economics with Heterogeneous Interacting Agents: A practical guide to Agent-Based Modeling