It looks like it should be okay for the moment, but doesn't protected abstract double getNextTime(SimState state, double currentTime); force the user to make use of Mason's random number generator, which if I recall only supports uniform and Gaussian distributions? Granted, you can use those to generate random variates of other types, but I'm not sure what the performance impact might be. I might be wrong on that assumption though. On Fri, Jul 20, 2012 at 7:58 PM, Eric 'Siggy' Scott <[log in to unmask]> wrote: > I find this acceptable. > > It's true, however, that the need for this behavior is quite common -- so > eventually it would be nice to have a more unified/integrated solution, IMO. > That may require rolling out own distributions library, though. > > Siggy > > On Fri, Jul 20, 2012 at 6:58 PM, Sean Luke <[log in to unmask]> wrote: >> >> Okay, here's a first cut at an approach to allow repeats drawn from a >> distribution. If there are certain very common distribution needs, we could >> make those built into the class, but for now you have to roll you own. >> >> The revised code (which is NOT out on SVN) is attached. The modified >> files are Schedule.java, Repeat.java, RandomRepeat.java, all of which should >> be placed into sim/engine/ >> >> >> >> >> Let's say you want to schedule something which repeatedly reschedules >> itself using the absolute value of a standard normal distribution, plus 1.0. >> You could say this: >> >> >> Steppable step = ... >> double initialTime = 5.0; >> int initialOrdering = 0; >> >> RandomRepeat repeat = new RandomRepeat(step, initialOrdering, false) // >> use 'true' if multithreaded >> { >> protected double getNextTime(SimState state, double currentTime) >> { >> return currentTime + Math.abs(state.random.nextGaussian()) >> + 1.0; >> } >> }; >> >> state.schedule.scheduleOnce(initialTIme, initialOrdering, repeat); >> >> >> >> This code was written at 12:50 at night and has not been tested or even >> tried. But there is a slight chance it might work right. Anyway, it's a >> first draft which uses an abstract superclass and anonymous subclass to get >> around the issue of a multitude of distribution APIs in >> sim.util.distribution. Opinions? >> >> Sean >> >> > > > > -- > Ph.D. Student in Computer Science > Volgenau School of Engineering > George Mason University >