A methodology for the simulation-based prototyping of distributed agent systems