Complex Adaptive Systems

Starlogo/Netlogo Programming Assignment

 

 

1.  Program Chris LangtonÕs ÒVirtual Ants.Ó  You only need to program one ant.  Its behavior will still be complex as it moves around.  The description of this simulation is found in your course pack.  The rules are very simple indeed:

            1.  If the ant is on a black square, the ant turns 90 degrees to the left.

            2.  If the ant is on a white square, the ant turns 90 degrees to the right.

            3.  On each time step, the ant moves forward one square.

            4.  As the ant moves forward, the square it is on changes from white to black, or from black to white.

           

Show the entire program.

            Hint 1: YouÕll definitely want to use the ÒStampÓ command.  Read the manual to see what it does.

            Hint 2: The whole program doesnÕt need to be more than 4 lines long.

 

2.  Your second assignment will be to program a physics model called alternatively ÒIsing modelÓ or ÒSpin-glass.Ó  HereÕs a description of the model, using a socio-political scenario:

            People start with random political affiliations (Democrat or Republican), and the people are spatially positioned in a grid.  Each person has 8 neighbors.  If a person has more Democratic neighbors than Republican neighbors, then the person buckles under the peer pressure, and becomes Democrat.  If a person has more Republican neighbors, they become Republican.  If a person has 4 of each kind of neighbor, they stay whatever they were before.

            Design a Starlogo simulation for this set of rules.  Given this rule set, if you start with the pattern at Time 1, then it should look like the pattern shown in Time 2 after applying the rules once:

 

All of the Democrats are shown by white squares, and all the republicans are shown by black squares.

            Hint 1:  You donÕt need to use turtles at all for this simulation; youÕll only need to worry about patches.

            Hint 2:  Here is a set up routine you can use to randomly create         political affiliations:

            to setup

            ca

            ifelse (random 100) < density

               [setparty 1] [setparty 0]

             ifelse  party = 1 [setpc yellow] [setpc blue]

            end

            This assumes that you have a slider called ÒdensityÓ that goes from 0 to 100.

            Hint 3: Each patch should own two variables: party and count.  Thus, youÕll want to include the statement: patches-own [party count].  ÒPartyÓ says whether the patch is Democrat (1) or Republican (0).  ÒCountÓ says how many Democrat neighbors a cell has.

            Hint 4: YouÕll probably want to use the ÒnsumÓ command, and youÕll probably need at least one ÒifÓ or ÒifelseÓ statement.  The whole program will be about 4 lines long.

 

            Question 1: Show your whole Starlogo program

            Question 2: Given random configurations with 50% Democrat density, what happens over time?  Describe why, as a first pass, this is a reasonable model of how Democrats and Republicans are distributed across the country.

            Question 3: Now, allow your patches to assert their individuality.  Add some random noise to your simulation - so that even if all of oneÕs neighbors are Democrats, one still could be Republican.  So, instead of a statement like:

ifelse (count > 4) .... like you probably had earlier, use a command like:

ifelse (count > (4 + ((random noise) / 10) - (random noise) / 10)).... What this code does is it compares a patchÕs count to 4 plus a bit of noise minus a bit of noise.  YouÕll also need to create a slider called ÒnoiseÓ with a range from 0 to about 50.   Start with a random configuration with a density of 50%.  As you increase noise (individuality), how does the distribution of democrats and republicans change?  Do the party regions become larger or smaller as noise increases?  WHY?

            Question 4: With noise set moderately high, what happens over time if the initial density of democrats is 66%?  Repeat the simulation several times.  This behavior is reasonable for some situations, but it doesnÕt seem like a good behavior for simulating political parties.  WHY NOT?