Look up corewar if you'd like some inspiration on a simulation environment. If you can't absolutely ensure that each 'bot' would have equal execution time etc then having the bots compete one after another against some form of fixed environment would be worth considering.

Due to task schedulers in modern OSs it's not even possible to ensure that single threadded sequential execution would give equal time to each.

The corewar way is to essentially have a VM where it can ensure that the same number of instructions are run for each bot. If you write any utility functions available to the coders in the same VM then you can give a count of VM instructions for each one.

I'd reccomend using REMobjects Pascalscript, you can pry open the VM part and insert counters, break out of execution, store any internal register values etc

-----

If you're thinking much higher level then perhaps a server/client setup with a provided client framework, in a similar concept to 3rd party bots connecting to a quake server. Perhaps a maze or other such task for the bots to complete.