Central Park Events NetLogo Model
Produced for the book series "Artificial Intelligence";
Author: W. J. Teahan; Publisher: Ventus Publishing Aps, Denmark.
powered by NetLogo
view/download model file: Central-Park-Events.nlogo
WHAT IS IT?
This model visualises a small set of events that an agent needs to perform if they wish to go from the Zoo to the Boat Pond in New York's Central Park. The events are shown using an event map representation, where events are linked to other events on separate streams in an ordered sequence. The idea is that an agent processes events simultaneously on separate streams. The approach is similar to the approach adopted for Event Stream Processing (ESP).
WHAT IS ITS PURPOSE?
The purpose of this model is to show how to visualise a series of events using an event map.
HOW IT WORKS
The model uses turtle agents to represents the states in the event map, and uses links agents to represent the paths between states. States own three variables:
- depth: The depth in the event map tree.
- stream: The stream name (where a stream consists of a sequence of sensory or motor events).
- event: The event - either sensory or motor. (Abstract events are not needed for this particular event map).
A spring layout is used to visualise the event map.
HOW TO USE IT
Press the setup button first. This will usually produce a cluttered layout. To unfold the clutter, press the change-layout button, and then dynamically change the values in the sliders that control the layout. One effective technique is to reduce the value of the spring-length slider to 0, then slowly increase it back up again until the desired length and layout is achieved.
THE INTERFACE
The model's Interface buttons are defined as follows:
- setup: This will clear the environment and variables and (re)-load the event map. Normally, this will appear in a cluttered form and the change-layout button needs to be pressed subsequently.
- change-layout: This can be used to clear some of the clutter by changing the values in the three sliders.
The model's Interface sliders are defined as follows:
- spring-constant: This is a value used by the layout-spring command. Changing it will usually not affect the visualisation of the event map much.
- sprint-length: This modifies the length of the paths between the states of the event map network.
- repulsion-constant: This controls how much each of the states repel each other.
THINGS TO NOTICE
Notice how the repulsion-constant slider can be used to "repel" the states away from each other (for larger values) and "attract" the states towards each other (for smaller values).
Notice that the clutter in the network layout can often be removed by setting the value of the spring-length slider to zero and then increasing it afterwards.
THINGS TO TRY
Try altering the values of the sliders to see what effect this has on the layout.
EXTENDING THE MODEL
Combine this model with the Map Drawing model loaded using the Map Drawing Central Park World. Then show several agents wandering between the Zoo and Boat Pond by animating the map and event map at the same time. This can be done so that each agent ends up with slight variations in the paths they choose since there is the possibility for minor variations to occur between the states of the event map. For example, when turning left, the agent may choose to turn left by slightly more or slightly less than 90 degrees. Similarly, when walking forwards, the agent can choose to walk forwards a distance that varies slightly to other agents applying the same event map.
NETLOGO FEATURES
The model uses the layout-spring command for modifying the layout of the network of states (turtle agents) and paths (link agents).
RELATED MODELS
See the Wall Following Events model and the Knowledge Representation model.
CREDITS AND REFERENCES
This model was created by William John Teahan.
To refer to this model in publications, please use:
Central Park Events NetLogo model.
Teahan, W. J. (2010). Artificial Intelligence. Ventus Publishing Aps.
PROCEDURES
; Central Park Events model.
;
; Draws an event map of some actions of how to go from the
; Zoo to the Boat Pond in Central Park.
;
; Copyright 2010 William John Teahan. All Rights Reserved.
;
breed [states state]
directed-link-breed [paths path]
states-own
[ depth ;; depth in the tree
stream ;; the name of the stream of sensory or motor events
event ;; the sensory or motor event
]
globals
[ root-colour node-colour link-colour ] ;; defines how the event tree gets visualised
to setup
clear-all ;; clear everything
set-default-shape states "circle 2"
set root-colour sky
set node-colour sky
set link-colour sky
add-events
(list
(list "sensing-event" "use-sight")
(list "motor-event" "look-around")
(list "sensed-object-event" "skyscrapers")
(list "motor-event" "walk-to-sensed-object")
(list "motor-event" "turn-left")
(list "motor-event" "walk-until-sensed-object")
(list "sensed-object-event" "74th-Street-sign")
(list "motor-event" "turn-left")
(list "motor-event" "walk-forwards")
(list "sensed-object-event" "lake-or-building"))
reset-layout
end
to reset-layout
repeat 500 [ layout-spring states paths spring-constant spring-length repulsion-constant ]
;; leave space around the edges
ask states [ setxy 0.95 * xcor 0.95 * ycor ]
end
to change-layout
reset-layout
display
end
to set-state-label
;; sets the label for the state
set label (word "[" stream " = " event "] ")
end
to add-events [list-of-events]
;; add events in the list-of-events list to the events tree.
;; each item of the list-of-events list must consist of a two itemed list.
;; e.g. [[hue 0.9] [brightness 0.8]]
let this-depth 0
let this-stream ""
let this-event ""
let this-state nobody
let next-state nobody
let these-states states
let matching-states []
let matched-all-so-far true
foreach list-of-events
[ set this-stream first ?
set this-event last ?
;; check to see if state already exists
set matching-states these-states with [stream = this-stream and event = this-event and depth = this-depth]
ifelse (matched-all-so-far = true) and (count matching-states > 0)
[
set next-state one-of matching-states
ask next-state [ set-state-label ]
set these-states [out-path-neighbors] of next-state ]
[ ;; state does not exist - create it
set matched-all-so-far false
create-states 1
[
set size 8
set depth this-depth
set stream this-stream
set event this-event
set-state-label
ifelse (depth = 0)
[ set label-color root-colour ]
[ set label-color node-colour ]
ifelse (depth = 0)
[ set color root-colour ]
[ set color node-colour ]
set next-state self
]
]
if (this-state != nobody)
[ ask this-state [ create-path-to next-state [ set color link-colour ]]]
;; go down the tree
set this-state next-state
set this-depth this-depth + 1
]
ask links [ set thickness 1.3 ]
end
;
; Copyright 2010 by William John Teahan. All rights reserved.
;
; Permission to use, modify or redistribute this model is hereby granted,
; provided that both of the following requirements are followed:
; a) this copyright notice is included.
; b) this model will not be redistributed for profit without permission
; from William John Teahan.
; Contact William John Teahan for appropriate licenses for redistribution for
; profit.
;
; To refer to this model in publications, please use:
;
; Teahan, W. J. (2010). Central Park Events NetLogo model.
; Artificial Intelligence. Ventus Publishing Aps.
;
