Maciej Latek and I are working on a revised version of the Schedule  
which is somewhat more complex but is expected to perform better when  
you have larger numbers of agents and a small number of orderings per  
timestep.  The downside is that it must use a Hashtable internally to  
retain various Bags, and the hashing  provides a constant overhead.   
So it might or might not be faster for your application.

In MASON you can just drop in a replacement for your Schedule, like  

     public HeatBugs(long seed)
         this(seed, 100, 100, 100);
	schedule = new Schedule2();    // dump the old Schedule, use  
Schedule2 instead

So this means that we might offer as an option rather  
than replacing if people like it.

Let me know what you think -- did it make your simulation faster?