NetLogo User Community Models
by Cem D (Submitted: 01/21/2007)
WHAT IS IT?
This is a simplified model of what takes place in an economic market. In each time step, agents choose one of two sides, 0 or 1, and those on the minority side win a point. This problem is inspired by the "El Farol" bar problem. Each agent uses a finite set of strategies to make their decision based upon past record; however, the record consists only of which side, 0 or 1, was in the minority, not the actual population count of how many chose each side. There are 2 types of agents, majority-preferring(MAJ) agents and minority-preferring(MIN) agents.
HOW IT WORKS
Each agent begins with a score of 0 and STRATEGIES-PER-AGENT strategies. Initially, they choose a random one of these strategies to use. The initial historical record is generated randomly. If they are a MIN (MAJ) their current strategy correctly predicted whether 0 or 1 would be the minority (majority), they add one point to their score. Each strategy also earns virtual points according to if it would have been correct or not. From then on, the agents will then use their strategy with the highest virtual point total to predict whether they should select 0 or 1.
This strategy consist of a list of 1's and 0's that is 2^MEMORY long. The choice the turtle then makes is based off of the history of past choices. This history is also a list of 1's and 0's that is MEMORY long, but it is encoded into a binary number. The binary number is then used as an index into the strategy list to determine the choice.
This means that once the number of agents, the number of strategies, and the length of the historical record are chosen, all parameters are fixed and the behavior of the system is of interest.
HOW TO USE IT
GO: Starts and stops the model.
SETUP: Resets the simulation according to the parameters set by the sliders.
NUMBER: Sets the number of agents to participate. This is always odd to insure a minority.
MEMORY: Sets the length of the history which the agents use to predict their behavior. Most interesting between 3 and 12, though there is some interesting behavior at 1 and 2. Note that when using a MEMORY of 1, the STRATEGIES-PER-AGENT needs to be 4 or less.
STRATEGIES-PER-AGENT: Sets the number of strategies each agent has in their toolbox. Five is typically a good value. However, this can be changed for investigative purposes using the slider, if desired.
MAJORITY-PREFERER-PERCENTAGE: Sets the fraction of agents who are of type MAJ. If this is set to 0, game is a MG and if it is set to 1 then the game is a majority game.
COLOR-BY: "Choice" represents the agents changing their colors depending on if they have chosen 0 (red) or 1 (blue). "Success" represents the agents changing their color depending upon their success rate (the number of times they have been in the minority divided by the number of selections). An agent is green if they are within one standard deviation above or below the mean success rate, red if they are more than one standard deviation above, and blue if they are more than one standard deviation below.
**RECOMMENDED SETTINGS: NUMBER=501, MEMORY=6, STRATEGIES-PER-AGENT=5, MAJORITY-PREFERER-PERCENTAGE=.50 (Should be loaded by default)
**CAUTION: If you are on a slow computer and the model is likewise slow, try turning off the shapes in the view. You could also turn off the view as the plots show everything the view does, just in a different representation. Also, beware setting the MEMORY slider to higher values. It scales exponentially (2^MEMORY), however this only has an affect when SETUP is run. This means that for each increased unit of MEMORY, it takes twice as long for SETUP to run.
THINGS TO NOTICE
There are two extremes possible for each turn in MG: the size of the minority is 1 agent or (NUMBER-1)/2 agents (since NUMBER is always odd). The former would represent a "wasting of resources", while the latter represents a situation which is more "for the common good." However, each agent acts in an inherently selfish manner, as they care only if they and they alone are in the minority. Nevertheless, the latter situation is prevalent. Does this represent unintended cooperation between agents, or merely coordination and well developed powers of prediction?
The agents move according to how successful they are relative to the mean success rate. After running for about 100 time steps (at just about any parameter setting), how do the fastest and slowest agents compare? What does this imply?
There are two extremes possible for each turn in Majority Game: the size of the minority is (NUMBER-1)/2 agents or 0 agents (since NUMBER is always odd). The former would represent a "wasting of resources", while the latter represents a situation which is more "for the common good." However, each agent acts in an inherently selfish manner, as they care only if they and they alone are in the minority. Nevertheless, a situation closer to the latter situation is prevalent when memory is kept less than 7.
THINGS TO TRY
How do things change if you keep everything the same but change the STRATEGIES-PER-AGENT?
In Majority Game:
How do things change if you play the game with a mixed population?
EXTENDING THE MODEL
There are a few evolutionary possibilities for this model which could be coded.
(1) Maybe after some (long) amount of time, the least successful agent is replaced by a clone of the most successful agent, with zeroed scores and possibly mutated strategies. How would things change then?
(2) Similar to (1), you could start the agents with a very small memory value, and again replace the least successful agent with a clone of the most successful agent. But this time instead of just zeroing the scores and giving mutated strategies, you also add or subtract one unit of memory for the new agent. What would happen here? Would their brains continue to get bigger or find some happy value? Would people with small memory be altogether eliminated, or would they survive (maybe even still thrive)?
One feature which was instrumental to this program was the n-values primitive. When setting up strategies for each player, they are binary numbers (stored in lists) of 2^MEMORY values. If this was done by starting with an empty list and calling fput 2^MEMORY times for each agent and for each strategy, you are calling fput NUMBER * STRATEGIES-PER-AGENT * (2^MEMORY) times. Using n-values sped this up by about 2 or 3 orders of magnitude.
The primitives map and reduce were also used to simplify code.
Any of the Prisoner's Dilemma models
CREDITS AND REFERENCES
Final implementation: Cem Dilmegani (only added the majority-preferring agents slidebar and its related functionality and representation (graphs)
Original implementation: Daniel B. Stouffer, for the Center for Connected Learning and Computer-Based Modeling.
This model was based upon studies by Dr. Damien Challet, et al.
Challet, D. and Zhang, Y.-C. Emergence of Cooperation and Organization in an Evolutionary Game. Physica A 246, 407 (1997).
Zhang, Y.-C. Modeling Market Mechanism with Evolutionary Games. Europhys. News 29, 51 (1998).
To refer to this model in academic publications, please use: Wilensky, U. (2004). NetLogo Minority Game model. http://ccl.northwestern.edu/netlogo/models/MinorityGame. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
(back to the NetLogo User Community Models)