I would not use Mathematica, Python, or any other interpreted language for this (especially not R which is probably the slowest of the bunch). Except maybe for prototyping.
Mathematica is very flexible, but not fast, especially for this type of code, which often requires procedural programming. People have done agent-based models in Mathematica. You will find a few posts on this website. But once you're done with a prototype and know how your simulation needs to work, you might easily get very frustrated with the performance.
I would write the simulation in a low-level language such as C++, C or Java, then control it form Mathematica. Expect orders of magnitude higher performance when programmed carefully. If you go this route and decide to integrate the simulation into Mathematica, take a look at LibraryLink for C/C++ and J/Link for Java. If you go with LibraryLink, also take a look at my package LTemplate. I hope eventually I'll have time to post some examples about how to easily integrate simulation code into Mathematica.
NetLogo may be worth trying even if it is a high level language. I am not very familiar with its performance characteristics, but it does have some significant advantages:
- it is specifically made for agent based modelling, so it should be quick to set up a prototype
- as I remember it can solve some sorts of simple PDEs, e.g. diffusion
- it can be controlled from Mathematica!