Agent-Based Modeling: Methods and Techniques for Simulating Human Systems