Design of Agent-Based Models