Q270 – Computational Models of Collective Behavior
Professor Robert Goldstone
Part A.
In the ÒCollective sumÓ game that you participated in, your task was to contribute a number to the groupÕs total (the sum of everybodyÕs contributions) so that the groupÕs total equaled a randomly selected target value. After each round, you received either Òtoo high/too lowÓ feedback, or numeric feedback telling you how far off (positive or negative) the groupÕs sum was compared to the computerÕs selected number.
Question 1: Describe an algorithm that, if it were followed by each of the agents in a group, would allow the group to efficiently sum to the mystery number in the Òtoo high/too lowÓ feedback condition. If each agent randomly guesses a number on each round, the group would eventually stumble on the right sum, but this wouldnÕt be very efficient. Describe an algorithm that would typically find solutions in less than 10 rounds. You donÕt have to provide any computer programming, but you should describe the algorithm explicitly enough so that one could easily imagine how it might be implemented in a program.
Question 2: In Question 1, I had you
describe an algorithm that was followed by each of the agents. However, having variability in
the algorithms used by agents might actually speed up the time required
for the group to find a solution.
Why might this be the case?
Explain by describing exactly
how algorithmic variability could be introduced, and why this would be
expected to have a beneficial effect.
Part B.
Your second assignment is to make a Netlogo 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 Netlogo 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:
Patches-own [party]
to
setup
ca
ask
patches [ifelse (random 100) < density
[set party 1] [set party 0]
ifelse party = 1 [set pcolor yellow] [set pcolor blue]]
end
This assumes that you have a slider called ÒdensityÓ that goes from 0 to 100.
Hint 3: Each patch should own a variable: party . This variable says whether the patch is Democrat (1) or Republican (0). In my program, I also create a temporary variable for each patch, Òsumz,Ó that contains the sum of the party variables of its neighbors, and accordingly looks like
[let sumz (nsum
party)
if sumz < 4É]
Hint 4: YouÕll definitely 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 Netlogo 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 the statement:
[let sumz (nsum party) if sumz <4].... like you probably had earlier, use a command like:
[let sumz (nsum
party) + (random randomness) – (random randomness)
if sumz < 4É]
What this code does is it creates a
ÒnoisyÓ sum of patches that is the actual sum of party states plus a bit of
randomness minus a bit of randomness.
YouÕll also need to create a slider called ÒrandomnessÓ with a range
from 0 to about 10. Start with a random configuration with a
density of 50%. As you increase
randomness (individuality) from 0 to 3, how does the distribution of democrats
and republicans change? Do the
party regions become larger or smaller as randomness increases? WHY?
Question 4: With randomness set to 2, what happens over time if the initial density of democrats is 56%? 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?