I'm wondering whether anybody knows a good way to use MASON for the
rare event simulation technique known as "splitting".
For those who don't know what this is, you can find references by
doing a web search with the search terms "rare event simulation"
and "splitting". Briefly, however, the technique involves
identifying certain system states reached during a simulation--let's
call them "split points"--from which it is desirable to run multiple
continuations of the simulation with different random choices
controlling the events after the split point in each continuation.
Within each continuation, zero or more further split points might be
A key issue is how to restore the simulation state to a split point
after simulating one continuation and before simulating another.
In the kinds of simulations for which splitting is typically applied,
many thousands--perhaps millions--of split points may be chosen
during a simulation run, so checkpointing seems likely to be an
inefficient solution. (I'd be pleasantly surprised to learn
Assuming that it's the user's responsibility to provide an extension
of SimState that can be backtracked (either by recording and restoring
state informaion or by recording and undoing sequences of state change
operations), there remains the issue of restoring the state of the
schedule. The "Schedule" class doesn't implement "Cloneable". And
restoring scheduler state by undoing changes seems problematic both
because there's no support for deleting scheduled events, and because
there's no way short of "reset" to revert the current time.
I suppose I could think of kludges to work around all this, but I don't
want to invent a square wheel if someone already has a round one.
Thanks for whatever advice anyone can offer.