John,
I probably made the hash table sound more significant than it really was. The hash table is irrelevant to the larger (strategic) question of how the simulator works. It's just a place where we keep stuff that has some nice performance-related properties. We probably have hundreds of different hash tables, and lists, and other bags of data in the simulator. We where just using one in a situation where we needed a particular ordering and weren't getting it. We changed the kind of has table we were using and now everything is okay.
For the larger question of emergent behavior - I like to think about
John Conway's game of life. It's played out on a grid, each cell is either on or off, and there are only 4 rules. No randomness at all. From those four rules, you can get all kinds of exciting behaviors out of the cells based on the initial construction. The Reynolds steering behaviors, in my mind, are the same. You can create a flocking behavior using only
3 specific rules. But, there are no random numbers, and the behavior of the flock is completely pre-determined by the initial state of the simulation.
In terms of correlating the simulation to real evacuation behavior, I'm hoping that our simulator uses a rough enough approximation of behavior that the answer it gives you after a single run can be interpreted as an average. And that if you were to do 100 evacuations with real humans, the average of the real evacuations would look like the simulated evacuation. Real humans have a super-complex initial state and can do some weird stuff. In other words: 100 similar evacuations with real humans might have a large standard deviation, but 100 similar Pathfinder simulations should have a small standard deviation. That's my hope anyway, we haven't done enough V&V work yet for me to make any promises.
- Charlie