Klaus Auer and Tim Norris (2001)
"ArrierosAlife" a Multi-Agent Approach Simulating the Evolution of a Social System: Modeling the Emergence of Social Networks with "Ascape"
Journal of Artificial Societies and Social Simulation
vol. 4, no. 1,
<http://jasss.soc.surrey.ac.uk/4/1/6.html>
To cite articles published in the Journal of Artificial Societies and Social Simulation, please reference the above information and include paragraph numbers if necessary
Received: 10-Jan-01 Published: 31-Jan-01
Figure 1. Torus |
Figure 2. Von Neumann neighborhood and Moore neighborhood |
[10] | NumAgencyLocations | the number of agency cells |
[10] | MaxAgencyClients | the maximum number of tourists an agency can support |
[1] | MinAgencyClients | the minimum number of tourists an agency will support |
[15] | MaxAgencyTripTime | the maximum trip time for an agency (days) |
[5] | MinAgencyTripTime | the minimum trip time for an agency (days) |
[10] | NumTouristLocations | the initial number of tourist cells |
[5] | MaxTouristClients | the maximum number of independent tourists to appear |
[1] | MinTouristClients | the minimum number of independent tourists to appear |
[10] | MaxTouristTripTime | the maximum trip time for an independent tourist (days) |
[3] | MinTouristTripTime | the minimum trip time for an independent tourist (days) |
[4] | TouristGowBack | the chance for the grid that tourists will appear (as 1/x ) |
[1] | setLocation (as random unoccupied cell in the grid) |
[2] | setVision (random from min to max) |
[3] | setNormVision (as Vision) |
[4] | setChildren (random from min to max) |
[5] | setFieldsOwned (random from min to max) |
[6] | setBurrosOwned (random from min to max accounting for number of fields owned) |
[7] | setWealth (as a product of vision and burros owned) |
[8] | setFriends (as a blank list) |
[9] | setCooperation (as random boolean) |
[10] | setName (as a number according to numerical order in initialization) |
[30] | NumAgents | the number of agents |
[5] | MaxInitialBurros | the maximum initial number burros |
[0] | MinInitialBurros | the minimum initial number of burros |
[2] | MaxInitialFieldSize | the maximum initial field size |
[0] | MinInitialFieldSize | the minimum initial field size |
[5] | MaxVision | the maximum vision |
[1] | MinVision | the minimum vision |
Guide Rule | ||
[5] | BurroRental | the cost to rent a burro from a friend (daily) |
[5] | TripCost | the profit from taking one client to the mountains (daily) |
Live Rule | ||
[100] | BurroCost | the cost to buy a new burro |
[150] | FieldCost | the cost to buy a new field |
[0.33] | FieldForBurro | number of fields needed for maintaining one burro |
[30] | PercentToSave | lower limit on what part of wealth can be spent |
[0.1] | ChildCost | the daily cost to maintain a child |
Change Cooperation Epstein 2D Rule | ||
[0.05] | CoopCutOffFreq | limit on comparing various frequencies of cooperating and not cooperating neighbors (within this limit they are considered equal) |
[0.1] | CoopNoise | factor for agents to change cooperation randomly (01) |
[0.20] | CoopReset | lower limit of cooperating population (%) before cooperation values are reset |
Saving Model Snapshots (not a rule) | ||
[120] | DrawInterval | iteration count between saving snapshots of the model |
Figure 3.1. Snap shot of evolved network after 300 iterations (all actors and all social ties; arrieros = yellow; travel agencies = red; individual travelers = blue) |
Figure 3.2. All Arrieros (N = 100) and their ties of borrowing/lending donkeys are displayed |
Figure 3.3. Only Arrieros who have a borrowing relation established are shown (blue ties are bi-directed; numbers on the lines indicate the frequency) |
/* regular expenses */ [1] Wealth = Wealth - NumChildren * ChildCost /* investment options */ [2] If FieldsOwned > (BurrosOwned + 1) * FieldsForBurro Then [3] If BurroCost < WEALTH(1-PERCENTTOSAVE) THEN [4] BURROSOWNED = BurrosOwned + 1 [5] Wealth = Wealth - BurrosCost [6] End If [7] Else [8] If FieldCost < Wealth(1-PercentToSave) Then [9] FieldsOwned = FieldsOwned + 1 [10] Wealth = Wealth - FieldCost [11] End If [12] End If
Figure 4. Von-Neumann neighborhood - vision two |
[1] If Not Guiding Then [2] VisibleCells[array] = CellsVisible Within Vision (includingCurrentLocation) /* note that VisibleCells[1] is the CurrentLocation of the agent */ [3] BestValue = ResourceValue of VisibleCells[1] [4] Loop Through All VisibleCells[array] [5] If (ResourceValue of VisibleCells[step] > BestValue) Then [6] If (VisibleCells[step] is Available) Then [7] BestValue = ResourceValue of VisibleCells[step] [8] End If [9] End If [10] End Loop /* if the agent found a resource */ [11] If BestValue <> 0 Then /* This if makes sure that the agent is not sitting on a resource */ [12] If Location of BestValue <> CurrentLocation Then [13] Move To Location of BestValue [14] Else [15] Move in Random direction within Vision [16] End If /* if the agent found no resources move randomly */ [17] Else [18] Move in Random direction within Vision [19] End If /* move randomly if agent is Guiding */ [20] Else [21] Move in Random direction within Vision [22] End If
/* the first part is to start consuming a resource and rent burros if needed */ /* if the agent is located at a resource */ [1] If ResourceValue of CurrentLocation > 0 Then /* can the agent consume without help */ [2] If BurrosOwned > ResourceValue of CurrentLocation Then [3] Start Consuming Resource [4] Set Guiding flag to TRUE /* can the agent consume with help of friends */ [5] Else [6] If Can Rent needed burros from Friends[] Then [7] RentBurros from Friends[first with enough] [8] Start Consuming Resource [9] Set Guiding flag TRUE /* can the agent find a new friend to help consume */ [10] Else [11] VisibleAgents[array] = AgentsVisible Within Vision exclude Self [12] Loop Through VisibleAgents[] [13] If VisibleAgent[step] is Cooperating Then [14] If BurrosOwned by VisibleAgent[step] > BurrosNeeded Then [15] RentBurros from VisibleAgent[step] [16] Add VisibleAgent[step] to Friends[] [17] Start Consuming Resource [18] Set Guiding flag to TRUE [19] Set Renting flag TRUE [20] Exit Loop [21] End If [22] End If [23] End Loop [24] End If [25] End If [26] End If /* The second part is to take care current trips and ending trips */ /* if agent is guiding do the bookkeeping */ [27] If Guiding is TRUE Then [28] DayCount = DayCount + 1 /* if the trip is over take care of business */ [29] If DayCount = TripLength Then [30] Wealth = Wealth + (TripLength * NumClients) [31] If Renting is TRUE Then [32] ReturnRentedBurros to Friends[who rented burros] [33] Pay Friends[who rented burros] for Rent [34] Set Renting flag FALSE [35] End If [36] Set Guiding flag FALSE [37] End If [38] End If
Figure 5. Example for the emerging cooperative behavior of 800 agents (simulation run No.201; all defaults; 1100 iterations) |
/* first check to see if noise will not change the cooperation status */ [1] If RandomNumber(0-1) > CoopNoise Then /* make sure we have the minimum agents in view required (3 including self) */ [2] AgentsVisible[array] = AgentsVisibleMoore within NormVision include Self [3] While Size AgentsVisible[] < 3 THEN [4] IF NORMVISION < GRIDSIZE THEN [5] NORMVISION = NormVision + 1 [6] AgentsVisible[array] = AgentsVisibleMoore within NormVision include Self [7] Else [8] Break While [9] End If [10] End While /* get values for plus and minus one from NormVision */ [11] MoreAgentsVisible[array] = AgentsVisibleMoore Within (NormVision + 1) include Self [12] LessAgentsVisible[array] = AgentsVisibleMoore Within (NormVision - 1) include Self /* If the frequency is different with NormVision plus one, then increase NormVision and use the higher NormVision to base decision about changing cooperation status */ [13] If Abs(FreqCooperation(MoreAgentsVisible[array]) - FreqCooperation(AgentsVisible[array])) > CoopCutOffFreq Then [14] If NormVision < GRIDSIZE THEN [15] NORMVISION = NormVision + 1 [16] ChangeCooperationFlag if different from norm shown in FreqCooperation(MoreAgentsVisible[array]) /* takes care of case where we cannot look further */ [17] Else [18] ChangeCooperationFlag if different from norm shown in FreqCooperation(AgentsVisible[array]) [19] End If /* If the frequency is the same with NormVision minus one, then decrease NormVision and use the lower NormVision to base decision about changing cooperation status */ [20] Else [21] If Abs(FreqCooperation(LessAgentsVisible[array]) - FreqCooperation(AgentsVisible[array])) < CoopCutOffFreq Then [22] NormVision = NormVision -1 [23] ChangeCooperationFlag if different from norm shown in FreqCooperation(LessAgentsVisible[array]) /* takes care of case where NormVision will be used to make decision */ [24] Else [25] ChangeCooperationFlag if different from norm shown in FreqCooperation(AgentsVisible[array]) [26] End If [27] End If /* Change due to noise factor */ [18] Else [19] ChangeCooperationFlag Random [20] End If
modelName | InitialConfig.txt | The file to be loaded with the load command. It contains all initial parameters, locations, and characteristics of all players (agents, agencies, and tourists). |
modelName | Settings.txt | This file is for documentation only and is a formatted list of initial parameters. |
modelName | <iteration#>Agents.txt | This file is simply the list of agents with their characteristics. It is formatted to be easily opened with Excel or other graphing software (space delimited). |
modelName | <iteration#> | This is the Social Network matrix formatted to be easily used with social network analysis software (DL files; space delimited). |
Figure 6. Example of coop-butterfly effect (100 agents, all defaults, 120 iterations) |
All simulation runs (N = 13) were started from the same init-config file with the same starting agents, agencies, and tourists. With different random number seeds for the two simulations we can see a good example of the butterfly effect.
Figure 7. Animation of an evolving network |
The executable files for "ArrierosAlife" can be downloaded from http://www.uni-koeln.de/phil-fak/voelkerkunde/forsch/peru/initial-0.htm
AUER, K. 2000. Conservation versus Tourism Development. Local Polotics and Contextual Factors at Parque National Huascarán - Perú. Documentos de Trabajo-IM No.3, Lima
AXELROD, R. 1997. The Complexity of Cooperation. Agent-Based Models of Competition and Collaboration. Princeton
BICCHIERI, C. 1997. Learning to cooperate. In: Bicchieri, C.; Jeffrey, R. and Skyrms, B. The Dynamics of Norms. Cambridge 1997: 17-46
BORGATTI, S. P.; Everett M. G. and Freeman L. C. 1990. UCINET IV. Columbia: Analytic Technologies. http://www.analytictech.com/borgatti
DOREIAN, P. and Stokeman, F. (eds.) 1997. Evolution of Social Networks. Amsterdam
EPSTEIN, J. and Axtell, R. 1996. Growing Artificial Societies. Social Science from the Bottom Up. Washington.
EPSTEIN, J. 2000. Learning to be Thoughtless: Social Norms and Individual Computation. Center on Social Economic Dynamics Working Paper No. 6 revised January 2000. Forthcoming in Computational Economics
FREEMAN, L. 2000. Visualizing Social Networks. Journal of Social Structure, 1, 2000, (1)
FREEMAN, L., Webster, M. and Kirke, M. 1998. Exploring Social Structure Using Dynamic Three-Dimensional Color Images. Social Networks, 20, 1998: 109-118
GILBERT, N. 1995. Simulation: an emergent perspective
GILBERT, N. and Troitzsch, K.. G. 1999. Simulation for the Social Scientist. Milton keynes: Open University Press
GIMBLETT,R., Durnota, B. and Itami, R. 1996. Conflicts in Recreation Use in Natural Areas: A Complex Adaptive Systems Approach. Third Australian Complex Systems Conference. Charles Stuart University. Albury, Australia.
GIMBLETT, R., Itami, R. and Durnota, B. 1996. Issues in Designing and Calibrating Artificial Human Agents.Workshop Comparing Reactive (ALife-ish) and Intentional Agents. Charles Stuart University. Albury, Australia.
GIMBLETT, R. 1997. Simulating Recreation Behaviour in Complex Wilderness Landscapes Using Spatially-Explicit Autonomous Agents. Unpublished Ph.D.dissertation. University of Melbourne, Australia.
HEGSELMANN, R. 1998. Modelling Social Dynamics by Cellular Automata In: Liebrand, W.; Nowak, A. and Hegselmann, R. (eds.) Computer Modeling of Social Processes. London 1998: 37-64
HEGSELMANN, R. and Flache, A. 1998. Understanding Complex Social Dynamics: A Plea For Cellular Automata Based Modeling. Journal of Artificial Societies and Social Simulation vol. 1, no. 3, http://jasss.soc.surrey.ac.uk/1/3/1.html
HEYLIGHEN, F. 1999, http://pespmc1.vub.ac.be:80/papers/PapersFH.html
KAUFFMAN, S. 1993 The Origins of Order. Oxford
KAUFFMAN, S. 1995. At Home in the Universe. The Search for the Laws of Self-Organization and Complexity. Oxford
LORENZ, E. 1993. The Essence of Chaos. Seattle
NICOLIS, G. and Prigogine, I. 1989. Exploring Complexity. An Introduction. New York
PARKER, M. 1998. Ascape: Abstracting Complexity http://www.brook.edu/es/dynamics/models/ascape
SCHWEIZER, T. 1996. Muster sozialer Ordnung: Netzwerkanalyse als Fundament der Sozialethnologie. Berlin.
WASSERMAN, S. and Faust, K. 1994. Social network analysis: Methods and applications. New York.
Return to Contents of this issue
© Copyright Journal of Artificial Societies and Social Simulation, 1999