Home Download Help Forum Resources Extensions FAQ NetLogo Publications Contact Us Donate Models: Library Community Modeling Commons Beginners Interactive NetLogo Dictionary (BIND) NetLogo Dictionary User Manuals: Web Printable Chinese Czech Farsi / Persian Japanese Spanish
|
NetLogo Models Library: |
Note: If you download the NetLogo application, every model in the Models Library is included. |
This model is a very simple illustration of how to use the time extension for discrete event simulation: scheduling model actions (specific agents executing specific procedures) at future times. In this example, all events happen at integer ticks.
The model simulates the "Whack-a-mole" arcade game. In that game, mechanical "moles" pop up from beneath the surface at unpredictable times and the person playing the game tries to "whack" the moles by hitting them with a hammer.
This model uses one "mole", a turtle that moves randomly among patches and appears and disappears at random times. The slider mole-speed
controls how rapidly the mole moves around.
The player is represented by the Observer (procedure take-a-whack
). When the player sees a mole, it strikes one of patches near the mole, representing a person swinging rapidly and missing often. If the player hits the mole, the mole briefly turns red and then disappears. The player keeps swinging until it hits the mole or the mole moves. The monitor "Fraction of moles whacked" reports the fraction of mole appearances on which the player successfully whacked it.
Each tick represents one second. When trying to whack the mole, the player swings once per tick. The time that a mole remains visible in one patch is drawn randomly from a uniform integer distribution ranging from 1 second to an upper limit determined from the mole-speed
slider. When the mole hides, it remains hidden for a random interval equal to 0, 1, or 2 seconds. The game stops at 120 seconds.
Use SETUP to initialize the model, and GO to start it. Hitting GO again will pause the simulation at the end of the current minute. The STEP button executes one tick (minute) at a time.
The mole-speed
slider controls how rapidly the mole moves among patches. Use NetLogo's speed control to slow execution down enough to see the action.
The procedures hide
and appear
illustrate use of the time extension's schedule-event
primitive to cause an agent to execute a procedure or block of code at a future tick.
The go
procedure uses two statements to advance the simulation clock and execute the scheduled events. tick
advances NetLogo's tick counter, as in any model. time:go-until ticks
causes execution of any events scheduled for execution after the previous tick and up to the current tick. If more than one event is scheduled for the same tick, they are executed in the order they were scheduled.
The procedure take-a-whack
uses the primitive clear-schedule
to cancel all the events scheduled for future execution. It is needed because the mole, which has already been scheduled to hide at a future time, has now been whacked and needs to hide immediately. Failing to clear the schedule would cause it to hide twice--and because each execution of hide
schedules a future appear
, etc., there would be a whole chain of undesired events.
The Discrete Event Mousetrap model (in the NetLogo Models Library > Code Examples > Extension Examples > time) also demonstrates use of the time extension for discrete event simulation. That model differs from this one in not using ticks at all: it has no go
procedure; instead, all events in the Mousetrap model are scheduled ("triggered") by other events. It illustrates how to set up and start such a model.
The Discrete Event Distribution Center model illustrates more of the time extensions capabilities: representing model time as real dates and times, scheduling events at non-integer times, and logging events by the time they were executed.
Prepared by Steve Railsback January 2022.
(back to the NetLogo Models Library)