32
1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids The StarLogo Team at MIT: Prof. Mitchel Resnick Brian Silverman Andrew Begel Bill Thies Vanessa Colella

1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

Embed Size (px)

Citation preview

Page 1: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

1/32

StarLogo

Andrew BegelUniversity of California, Berkeley

Agent Simulation WorkshopOctober 16, 1999

Building a Modeling

Construction Kit for Kids

The StarLogo Team at MIT:Prof. Mitchel ResnickBrian SilvermanAndrew BegelBill ThiesVanessa Colella

Page 2: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

2/32

Big Ideas

• StarLogo: a programmable modeling environment

• Intended for non-expert users and non-programmers– Great for kids, great for researchers!

• Emphasis on decentralized behaviors with local interactions.

Page 3: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

3/32

Talk Outline

• History of StarLogo

• Models of Parallelism

• Parallel Communication

• Parallel Debugging

• StarLogo Workshop

• StarLogo for Java

Page 4: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

4/32

History

• 1990’s: *Logo on the Connection Machine 2 (a massively parallel computer)

• 1994: MacStarLogo on 68K and PPC Macs• 1999: StarLogo in Java

Page 5: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

5/32

Logo

• Developed by Feurzeig and Papert in 60’s

• Based on Lisp– simpler syntax– incorporates elements of natural language.

• Interactive programming environment

Page 6: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

6/32

Turtle Logo

• Turtle can move around a grid-based world.

• The turtle is an “object to think with.”– body syntonics

• Example Code:

to squarependownrepeat 4 [forward 10 right 90]end

Page 7: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

7/32

StarLogo• Thousands of turtles instead of

just one (can be organized in groups called breeds).

• Background grid of patches can run Logo code.

• The user is the observer and can discover and modify global characteristics of the model.

Page 8: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

8/32

time

1 2 43 5

StarLogo Parallelism

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1Cmd #1

Cmd #2

Cmd #3

Cmd #5

Cmd #6

Cmd #4

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1Cmd #1

Cmd #2

Cmd #3

Cmd #5

Cmd #6

Cmd #4

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1Cmd #1

Cmd #2

Cmd #3

Cmd #5

Cmd #6

Cmd #4

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1Cmd #1

Cmd #2

Cmd #3

Cmd #5

Cmd #6

Cmd #4

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1Cmd #1

Cmd #2

Cmd #3

Cmd #5

Cmd #6

Cmd #4

Job #2

Job #1

Page 9: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

9/32

1 2 43 5

CM2 *Logo Parallelism (SIMD)

Turtles run commands in lockstep.Each job executes in series.

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1Cmd #1 Cmd #1 Cmd #1 Cmd #1 Cmd #1

Cmd #2 Cmd #2 Cmd #2 Cmd #2 Cmd #2

Cmd #3 Cmd #3 Cmd #3 Cmd #3 Cmd #3

Cmd #5 Cmd #5 Cmd #5 Cmd #5 Cmd #5

Cmd #6 Cmd #6 Cmd #6 Cmd #6 Cmd #6

Cmd #4 Cmd #4 Cmd #4 Cmd #4 Cmd #4

timeJob #2

Job #1

Page 10: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

10/32

Simulating Parallelism

• How do you simulate parallelism on a computer with one processor?

• Our goal is realistic looking parallelism.– Preemptive multi-threading

• Switch threads every n milliseconds.

– Cooperative multi-threading• Switch threads at carefully chosen program points.

• Fine-granularity vs. coarse granularity

• We context switch after each command, but not each reporter.

Page 11: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

11/32

1 2 43 5

MacStarLogo Parallelism

Each job executes in series.Turtles are switched one after another.

Turtles may get out of sync.

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1Cmd #1

Cmd #2

Cmd #3

Cmd #5

Cmd #6

Cmd #4

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1Cmd #1

Cmd #2

Cmd #3

Cmd #5

Cmd #6

Cmd #4

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1Cmd #1

Cmd #2

Cmd #3

Cmd #5

Cmd #6

Cmd #4

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1Cmd #1

Cmd #2

Cmd #3

Cmd #5

Cmd #6

Cmd #4

Cmd #6

Cmd #5

Cmd #4

Cmd #3

Cmd #2

Cmd #1Cmd #1

Cmd #2

Cmd #3

Cmd #5

Cmd #6

Cmd #4

Cmd #3

time

Page 12: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

12/32

time

1 2 43 5

All jobs are scheduled in parallel.Commands are switched one after another.

Jobs may get out of sync.

StarLogo for Java Parallelism

Cmd #1Cmd #2Cmd #3Cmd #4Cmd #5Cmd #2

Cmd #1Cmd #2Cmd #3Cmd #4Cmd #5Cmd #1Cmd #1Cmd #2Cmd #3Cmd #4Cmd #5Cmd #2

Cmd #1Cmd #2Cmd #3Cmd #4Cmd #5Cmd #1Cmd #1Cmd #2Cmd #3Cmd #4Cmd #5Cmd #2

Cmd #1Cmd #2Cmd #3Cmd #4Cmd #5Cmd #1Cmd #1Cmd #2Cmd #3Cmd #4Cmd #5Cmd #2

Cmd #1Cmd #2Cmd #3Cmd #4Cmd #5Cmd #1Cmd #1Cmd #2Cmd #3Cmd #4Cmd #5Cmd #2

Cmd #1Cmd #2Cmd #3Cmd #4Cmd #5Cmd #1

Page 13: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

13/32

Patch Parallelism

• CM2: – All patches execute the same code in lockstep.

• Mac: – Each patch runs through the code one by one.

– Context switch after each patch has finished.

• Java: – Patches may no longer run code.

Page 14: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

14/32

Observer Execution

• There’s only one observer. • It’s like a lifeguard sitting in a high chair at (0, 0).• May view and modify global characteristics of the

model.– Create turtles.

– Gather statistics about turtles and patches.

• Performs various auxiliary functions:– Plotting, Movies, File I/O, Data Collection

Page 15: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

15/32

Putting It All Together

• In MacStarLogo, how do we run the turtles, patches

and observer?

Forever buttons:

In a loop,1. Run turtles as many times

as you can for 1/60th of a second

2. Run patches once

3. Run one observer forever button

Command Center and Buttons:• Observer code interrupts loop.

• Turtle or patch commands are run after forever button code have finished running once.

• Only one command center function may be running at any time.

Page 16: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

16/32

Putting It All Together (2)

• In StarLogo for Java:• All jobs are scheduled in a round-robin queue.

• Each job has equal priority.

• Forever buttons are the same as normal buttons, but the code has a loop [ button-code ] around it.

• Monitors spawn jobs, too. – While anything is running, monitors are run in a loop

with a wait delay at the end.

– When everything stops, monitors are run once more to show current values.

Page 17: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

17/32

Model Timing

• How do you relate “real time” (in seconds, minutes, hours, days or years) to “model time” (in observer/turtle commands)?

• Answer: It’s not easy. – StarLogo is qualitative, not quantitative.– One idea: Use the observer to time how long

the turtles take to finish one cycle.

Page 18: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

18/32

Parallel Communication

• Goal: Turtles must communicate with each other.– Message passing– Action at a distance

• How can we do it?

1. Set a global variable

2. Set a patch variable

3. Set a turtle variable

Page 19: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

19/32

• Visible from anywhere in the world.

• There’s only one copy, so it better not change quickly (else only monotonically) in order that all turtles have a chance to see it.

• Example (next slide).

Communicating Through Globals

Page 20: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

20/32

globals [season [fall winter spring summer]]

to goevery 10 [change-seasons]end

to change-seasonscase season [fall [set season winter] winter [set season spring] spring [set season summer] summer [set season fall]]end

to grow-grasscase season [spring [repeat 100 [plant-grass]] summer [repeat 85 [plant-grass]] fall [turn-all-grass-brown] winter [kill-all-grass]]end

Page 21: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

21/32

Communicating Through Patches

• Only visible on that patch• Useful for communicating information to all turtles on

that location (i.e. infection)• Example (next slide)

Page 22: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

22/32

patches-own [sick-here?]turtles-own [sick?]

to infect ifelse sick? [set sick-here? true] ;; I’m sick. [if sick-here? [set sick? true]] ;; healthy wiggleend

to wiggle right random 100 left random 100 if sick? and count-turtles-here-with [sick?] = 1 [set sick-here? false] forward 1end

Page 23: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

23/32

Communication via Turtles

• Directly read and modify other turtles’ variables.

turtles-own [dead?] to kill :turtle-id

set dead?-of :turtle-id trueend

to check-if-dead if dead? [die]end

Page 24: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

24/32

Turtle-TurtleCommunication Issues

• Must be able to find a turtle to talk to it.– one-of-turtles-here, one-of-frogs, one-of-turtles-with [color = red]

• Must remember its name to talk to it more than once.– i.e. one-of-turtles-here changes over time.

– Other turtles never stop moving.

• Communication is asymmetric. – Just because turtle #1 talks to turtle #2 doesn’t mean that

turtle #2 talks to turtle #1.

Page 25: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

25/32

Example: Turtle Mating• Buggy MacStarLogo code:

breeds [girls guys]turtles-own [father-color mygene child-gene]

to procreateask-girls [if count-guys-here > 1 [setfather-color color-of one-of-guys-here setchild-gene combine mygene mygene-of one-of-guys-here hatch [ifelse (random 2) = 0 [setbreed guys] [setbreed girls] setmygene child-gene setcolor father-color]]]end

Page 26: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

26/32

Example: Turtle Mating (2)• Correct MacStarLogo code:

breeds [girls guys]turtles-own [partner father-color mygene child-gene]

to procreateask-girls [if count-guys-here > 1 [set partner one-of-guys-here setfather-color color-of partner setchild-gene combine mygene mygene-of partner hatch [ifelse (random 2) = 0 [setbreed guys] [setbreed girls] setmygene child-gene setcolor father-color]]]end

Page 27: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

27/32

Grab!• StarLogo for Java

breeds [girls guys]

turtles-own [mygene child-gene father-color]

to procreateif breed = girls [grab one-of-guys-here [set father-color color-of partner set child-gene combine mygene mygene-of partner hatch [ifelse (random 2) = 0 [set breed guys] [set breed girls] set mygene child-gene set color father-color]]]end

Page 28: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

28/32

Parallel Debugging

• In MacStarLogo, with 2000 turtles, how do you figure out if something went wrong?

• Stack overflow (too many nested functions) and divide by zero in turtles and patches are ignored.

• Unexpected behaviors due to not knowing how the compiler interpreted your code.

• Look at turtle or patch state:– Oops, no print capability for turtles or patches.

– Use turtle monitors to view all variables for a turtle.

– Use command center to ask turtles or patches to set observer variables (or set turtle variables that are visible from the turtle monitor).

Page 29: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

29/32

Parallel Debugging (2)• Java StarLogo

o Simpler programming model (separate turtle and observer procedures) to eliminate certain kinds of programming bugs.

– Turtles and observer can use print (output shows up in the appropriate command center).

– Runtime errors in turtles and observer pop up in a dialog box.

• (What happens if all 2000 turtles have the error? 2000 dialog boxes?)

– Much better compiler error messages. They even report the line number of the error!

– Turtle monitors and patch monitors will be added soon.

Page 30: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

30/32

StarLogo for Java: New Features

• Works on PC, Mac and Unix!• Rectangular (non-square) patch grid.• Turtles and observer can play sounds.• (count, one-of, list-of)-(turtles, breeds)-(here, at,

towards) reporters.• 64-bit double math.• Unlimited number of turtles and number of variables.• All math and list operations work for both turtles and observer.• New primitives: case, let, loop, wait-until, random-

gaussian, pick, kill, nmin, nmin4, nmax, nmax4, diffuse4

Page 31: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

31/32

Workshops• Teacher and student workshops held at Santa

Fe Institute in Summer ‘99.– Learning through Adaptive Agent Computer Models

(Pictures: http://www.taumoda.com/web/sfi99/)– Run by Vanessa Colella, Eric Klopfer and Monica

Linden from MIT, Larry Latour from U. Maine, and Nigel Snoad from SFI

– Project Building (StarLogo Workbook Challenges)– Group Activities (StarPeople)– Predator/Prey Badge Activity

Page 32: 1/32 StarLogo Andrew Begel University of California, Berkeley Agent Simulation Workshop October 16, 1999 Building a Modeling Construction Kit for Kids

32/32

What’s next?

• Jan 2000: Finish StarLogo for Java 1.0– Plotting, Shapes, Paint Tools, Turtle and Patch Monitors,

Output and Information Windows – StarLogo Project Web Player– GIS Support

• Finish StarLogo Workbook

• For more information:

http://www.media.mit.edu/starlogo