globals
[
max-resource
num-resource-grown
resource-growth-interval
maximum-resources
percent-best-land ; maximum amount any patch can hold
]
patches-own ;;
[
resource-here ; the current amount of resource on this patch
max-resource-here ; the maximum amount of resource this patch can hold
land-impact
magnifier
cluster
is-settlement?
; impact
]
turtles-own
[
age ; how old a turtle is
wealth ; the amount of resource a turtle has
life-expectancy ; maximum age that a turtle can reach
metabolism ; how much resource a turtle eats each time. Think of this as 'transaction cost'.
vision ; how many patches ahead a turtle can see. Think of this as 'knowledge of the world'.
generation
prestige
am-dead?
my-clients
my-home
am-competing
prestigiousness
global-class
clients-worth
games-won
my-obligations
]
;;;
;;; SETUP AND HELPERS
;;;
to setup
;; (for this model to work with NetLogo's new plotting features,
;; __clear-all-and-reset-ticks should be replaced with clear-all at
;; the beginning of your setup procedure and reset-ticks at the end
;; of the procedure.)
__clear-all-and-reset-ticks
if seed? [random-seed 1066] ;; if the 'seed?' switched is turned on, the same sequence of random numbers will be generated each run. This allows the user to test the effect of different settings, code changes etc.
setup-resources
;; set global variables to appropriate values
set max-resource maximum-resources
;; call other procedures to set up various parts of the world
setup-patches
setup-turtles
ask turtles [set am-dead? false
set am-competing false
set my-clients []
set prestigiousness []
set global-class []
set my-obligations []
]
my-setup-plots
;; plot the initial state of the world
my-update-plots
end
;;;important to note that ticks does not map 1:1 to 'years'. Better to think of things in terms of generations;
to setup-resources ;;; change these settings to better represent the resource under consideration.
if Resource-Settings = "Wild Woodland"
[set resource-growth-interval 4 ;; number of cycles between growth. the lower the number, the more 'permanent' this resource can be treated.
set num-resource-grown 1 ;;how much resource is grown each time the resource-growth-interval allows that to happen
set maximum-resources 100 ;;maximum amount a patch may hold
set percent-best-land 4 ;; density of patches
;;so I'm saying that wild woodland regenerates slowly, and a limited productivity
]
if Resource-Settings = "Coppiced Woodland"
[set resource-growth-interval 2 ;; regenerates periodically
set num-resource-grown 5
set maximum-resources 1000 ;;managed woodland higher productivity, more uses, than wild woodland.
set percent-best-land 4
;;in comparison to wild woodland, coppicing regenerates quicker, and more densely, with more uses, than wild woodland
]
if Resource-Settings = "Mines"
[set resource-growth-interval 1; instant growback means that the seam does not get exhausted.
set num-resource-grown 1000
set maximum-resources 1000000000000000
set percent-best-land 1 ; very rare
;; mines exist, they do not regenerate. *but* they don't get mined out either, in this model. but they can go out of production for other reasons.
]
if Resource-Settings = "Clay"
[set resource-growth-interval 1; instant growback means that the seam does not get exhausted.
set num-resource-grown 1000
set maximum-resources 1000 ;;
set percent-best-land 3 ;; more common
]
end
;; set up the initial amounts of resource each patch has
to setup-patches
;; give some patches the highest amount of resource possible --
;; these patches are the "best land"
ask patches
[ set is-settlement? false
set max-resource-here 0
if (random-float 100.0) <= percent-best-land
[ set max-resource-here max-resource
set resource-here max-resource-here ] ]
;; spread that resource around the window a little and put a little back
;; into the patches that are the "best land" found above
if Resource-Settings = "Wild Woodland" or Resource-Settings = "Coppiced Woodland" ;;smearing a bit different for these ones, in terms of how far.
[repeat 5
[ ask patches with [max-resource-here != 0]
[ set resource-here max-resource-here ]
diffuse resource-here 0.25 ]
repeat 10
[ diffuse resource-here 0.25 ] ;; spread the resource around some more
]
ask patches
[ set resource-here floor resource-here ;; round resource levels to whole numbers
set max-resource-here resource-here ;; initial resource level is also maximum
recolor-patch ]
end
to recolor-patch ;; patch procedure -- use color to indicate resource level
if is-settlement? = false [set pcolor scale-color yellow resource-here 0 max-resource]
end
;;to visualize-land-impact ;; snippet of code to get a visualization of where turtles have been wandering. currently turned off.
;; set pcolor scale-color red land-impact 1000 1
;;
;; end
;; set up the initial values for the turtle variables
;;;nb each turtle can be considered to represent a single family;;
to setup-turtles
set-default-shape turtles "person"
crt num-people
[ move-to one-of patches ;; put turtles on patch centers
set size 1.5 ;; easier to see
set-initial-turtle-vars
set age random life-expectancy ]
recolor-turtles
end
to set-initial-turtle-vars
set age 0
face one-of neighbors4
set life-expectancy life-expectancy-min +
random (life-expectancy-max - life-expectancy-min + 1)
set metabolism 5 + random metabolism-max
ifelse wealth <= 0 [set wealth metabolism + random 50]
[set wealth wealth + (random-float 1 * wealth)];; some wealth carries on over the generations
ifelse (color = blue) [set vision vision + random max-vision]
[ifelse (color = green) [set vision (vision - 2) + random vision]
[set vision 1 + random max-vision]
]
if (vision <= 0) [set vision 1 + random max-vision] ;; blues have a better knowledge of the world, greens slightly less, reds poor. vision - knowledge - is inheritable
set generation generation + 1
if prestige < 0 [set prestige 1]
if generation > 1 [set prestige (random-float 1 * prestige)] ;; not every generation carries the family name well.
end
;; Set the class of the turtles -- if a turtle has less than a third
;; the wealth of the richest turtle, color it red. If between one
;; and two thirds, color it green. If over two thirds, color it blue.
to recolor-turtles
ask turtles
[
let local-turtles turtles in-radius (vision); + (vision * random-float 1))
let max-wealth max [wealth] of local-turtles ;; local status per wealth set according to your local neighborhood. Of course, how far you can see also depends on your color.
ifelse (wealth <= max-wealth / 3)
[ set color red ]
[ ifelse (wealth <= (max-wealth * 2 / 3))
[ set color green ]
[ set color blue ] ]
]
ask turtles[let max-prestige max [prestige] of turtles ;; measuring global prestige. locally, wealth gives you your status. you enhance your prestige locally
;; but you also go to a central place every so often to compete there. success/failure there has reprecussions
ifelse (prestige <= max-prestige / 3)
[ set prestigiousness "low" ]
[ ifelse (prestige <= (max-prestige * 2 / 3))
[ set prestigiousness "mid" ]
[ set prestigiousness "high" ] ]
]
ask turtles [let max-wealth max [wealth] of turtles ;; measuring global class per wealth
ifelse (wealth <= max-wealth / 3)
[ set global-class "low" ]
[ ifelse (wealth <= (max-wealth * 2 / 3))
[ set global-class "mid" ]
[ set global-class "high" ] ]
]
end
;;;
;;; GO AND HELPERS
;;;
to-report generations
report mean ([generation] of turtles)
end
to go
;if count patches with [pcolor = blue] > (count patches * 1 / 10) [print " game over" stop]
if generations >= 50 [print " game over" stop]
ask turtles
[if am-dead? [stop]]
ask turtles
[ turn-towards-resource
] ;; choose direction holding most resource within the turtle's vision
harvest
ask turtles
[ move-eat-age-die ]
recolor-turtles
;; grow resource every resource-growth-interval clock ticks
if ticks mod resource-growth-interval = 0
[ ask patches [ grow-resource ] ]
ask turtles
[euergetism
if ticks mod resource-growth-interval = 0 [calculate-clients-worth
patron-compete];; at the end of each growing cycle, that's when the games of patronage are played; once a season.
]
if ticks mod 25 = 0 [ask patches [grow-settlement]]
tick
my-update-plots
end
;; determine the direction which is most profitable for each turtle in
;; the surrounding patches within the turtles' vision
to turn-towards-resource ;; turtle procedure
set heading 0
let best-direction 0
let best-amount resource-ahead
set heading 45
if (resource-ahead > best-amount)
[ set best-direction 45
set best-amount resource-ahead ]
set heading 90
if (resource-ahead > best-amount)
[ set best-direction 90
set best-amount resource-ahead ]
set heading 135
if (resource-ahead > best-amount)
[ set best-direction 135
set best-amount resource-ahead ]
set heading 180
if (resource-ahead > best-amount)
[ set best-direction 180
set best-amount resource-ahead ]
set heading 225
if (resource-ahead > best-amount)
[ set best-direction 225
set best-amount resource-ahead ]
set heading 270
if (resource-ahead > best-amount)
[ set best-direction 270
set best-amount resource-ahead ]
set heading 315
if (resource-ahead > best-amount)
[ set best-direction 315
set best-amount resource-ahead ]
set heading best-direction
end
to-report resource-ahead ;; turtle procedure
let total 0
let how-far 1
repeat vision
[ set total total + [resource-here] of patch-ahead how-far
set how-far how-far + 1 ]
report total
end
to grow-resource ;; patch procedure
;; if a patch does not have it's maximum amount of resource, add
;; num-resource-grown to its resource amount
if pcolor = blue [set resource-here 0 stop]
if (resource-here < max-resource-here)
[ set resource-here resource-here + num-resource-grown
;; if the new amount of resource on a patch is over its maximum
;; capacity, set it to its maximum
if (resource-here > max-resource-here)
[ set resource-here max-resource-here ] ;;; turned this off; saw no point.
if is-settlement? = false [recolor-patch]
]
end
;; each turtle harvests the resource on its patch. if there are multiple
;; turtles on a patch, divide the resource evenly among the turtles
to harvest
; have turtles harvest before any turtle sets the patch to 0
diffuse magnifier .5 ;;
ask turtles
[ifelse is-settlement? = true
[move-eat-age-die]
[ ifelse resource-here > mean ([resource-here] of patches) or length my-obligations <= 1 ;; want a decision to be made to harvest, even when resource is on the decline.
;; this decision should be based on how embedded in social networks one is.
;; so, if there's lots of resource, no problem
;; but if there isn't, and we're socially embedded, we won't overexploit the resource
;; but if we're not socially embedded (we have no obligations)
;; we'll just go ahead and grab the resource anyway.
[ set wealth floor (wealth + ((resource-here / (count turtles-here))) * magnifier)
set land-impact land-impact + 1
set resource-here 0
recolor-patch
;show "I harvested!!"
]
[ move-eat-age-die] ;;; this *should* mean that we don't exhaust the resource...?
]
;; now that the resource has been harvested, have the turtles make the
;; patches which they are on have no resource
;set family-fortune .5 * wealth
;set wealth wealth - family-fortune ;; we're having families save some coin.
]
;;; ask turtles
;;; [ set land-impact land-impact + 1
;;; set resource-here 0
;;; recolor-patch
;;; ]
diffuse land-impact 0.2
end
to extract-wealth-from-clients
foreach my-clients
[ ask ?
[;show "I am a client"
if wealth = 0 [set wealth 1] ;; we will not beggar our clients
let amount-extracted (.1 * (wealth))
set wealth ([wealth] of ? - amount-extracted)
;show amount-extracted show "wealth I've lost!"
ask myself [set wealth ([wealth] of myself + amount-extracted)
]
]
]
;show wealth show "wealth I've gained!"
end
to move-eat-age-die ;; turtle procedure
fd 1
;; consume some resource according to metabolism
set wealth (wealth - metabolism)
;; grow older
set age (age + 1)
if (wealth < metabolism)
[;show " is asking for help"
ask-for-help]
;; check for death conditions: if you have no resource or
;; you're older than the life expectancy or if some random factor
;; holds, then you "die" and are "reborn" (in fact, your variables
;; are just reset to new random values)
if wealth < 0 or (age >= life-expectancy);; or (family-fortune < 0)
[ set-initial-turtle-vars ]
end
to ask-for-help
ifelse random-float 1 > 0.99 [
let local-turtle one-of (turtles in-radius vision with [prestige >= ([prestige] of self) and self != myself]);; trying to find one of its betters
;show local-turtle
;show wealth
if local-turtle != nobody
[ask local-turtle
[; show "is giving help to " (print myself)
let gift (0.1 * wealth) ; gives one tenth to those who ask
set prestige prestige + gift ;;; and he's getting some prestige
set wealth wealth - gift;
;show gift
; show " gained some prestige by giving to " (print myself)
; show prestige
ask myself [set wealth wealth + gift] ;;; the local turtle needs to set my wealth wealth + gift
set my-clients fput myself my-clients]
set my-obligations fput local-turtle my-obligations
] ;;; so I'm getting a gift
;show " got some help"
;show wealth
]
[stop]
end
;;;to-report top-prestige
;;; let max-prestige max [prestige] of turtles
;;; report count turtles with [prestige > max-prestige * 2 / 3]
;;;end
;;;
;;;to-report low-prestige
;;;let max-prestige max [prestige] of turtles
;;;report count turtles with [prestige <= max-prestige / 3]
;;;end
;;;
;;;to-report mid-prestige
;;; let top top-prestige
;;; let bottom low-prestige
;;; report bottom - top
;;;end
to euergetism
let max-prestige max [prestige] of turtles
if (prestige > (max-prestige * 1 / 2))
[build-super-improvement] ;;; global elites.
if (color = blue) [build-improvement] ;; local elite
end
to build-improvement
let local-value prestige
ask patch-here [set magnifier magnifier + (local-value * 0.1)]
end
to build-super-improvement
let local-value prestige
ask patch-here [set magnifier magnifier + (local-value * 0.5)]
end
to grow-settlement
;visualize-land-impact
;ask patches with [pcolor < 15]
;[set pcolor blue
; set is-settlement? true
; set resource-here 0]
let max-impact max [land-impact] of patches
if (land-impact > (max-impact * (99 / 100)))
[set is-settlement? true
set resource-here 0
set pcolor blue]
end
;;;
;;; PLOTTING
;;;
to my-setup-plots
;set-current-plot "Class Plot"
;set-plot-y-range 0 num-people
set-current-plot "Local Class Histogram"
set-plot-y-range 0 num-people
set-current-plot "Games of Patronage"
;set-plot-y-range 0 num-people
set-current-plot "Global Class Histogram"
;set-plot-y-range 0 num-people
end
to my-update-plots
;update-class-plot
update-local-class-histogram
update-lorenz-and-gini-plots
update-games-plot
update-global-class-histogram
end
;; this does a line plot of the number of people of each class
to update-games-plot
set-current-plot "Games of Patronage"
;; set-plot-pen-color red
;; plot count turtles with [prestigiousness = "low"]
set-current-plot-pen "mid"
; set-plot-pen-color green
plot count turtles with [prestigiousness = "mid"]
; set-plot-pen-color blue
set-current-plot-pen "high"
plot count turtles with [prestigiousness = "high"]
end
to update-class-plot
set-current-plot "Class Plot"
set-current-plot-pen "low"
plot count turtles with [color = red]
set-current-plot-pen "mid"
plot count turtles with [color = green]
set-current-plot-pen "up"
plot count turtles with [color = blue]
end
;; this does a histogram of the number of people of each class
to update-local-class-histogram
set-current-plot "Local Class Histogram"
plot-pen-reset
set-plot-pen-color red
plot count turtles with [color = red]
set-plot-pen-color green
plot count turtles with [color = green]
set-plot-pen-color blue
plot count turtles with [color = blue]
end
to update-global-class-histogram
set-current-plot "Global Class Histogram"
plot-pen-reset
set-plot-pen-color red
plot count turtles with [global-class = "low"]
set-plot-pen-color green
plot count turtles with [global-class = "mid"]
set-plot-pen-color blue
plot count turtles with [global-class = "high"]
end
to update-lorenz-and-gini-plots
set-current-plot "Lorenz Curve"
clear-plot
;; draw a straight line from lower left to upper right
set-current-plot-pen "equal"
plot 0
plot 100
set-current-plot-pen "lorenz"
set-plot-pen-interval 100 / num-people
plot 0
let sorted-wealths sort [wealth] of turtles
let total-wealth sum sorted-wealths
let wealth-sum-so-far 0
let index 0
let gini-index-reserve 0
;; now actually plot the Lorenz curve -- along the way, we also
;; calculate the Gini index.
;; (see the Information tab for a description of the curve and measure)
repeat num-people [
set wealth-sum-so-far (wealth-sum-so-far + item index sorted-wealths)
plot (wealth-sum-so-far / total-wealth) * 100
set index (index + 1)
set gini-index-reserve
gini-index-reserve +
(index / num-people) -
(wealth-sum-so-far / total-wealth)
]
;; plot Gini Index
set-current-plot "Gini-Index v. Time"
plot (gini-index-reserve / num-people) / 0.5
end
to open-file
let file user-new-file
if ( file != false )
[
if ( file-exists? file )
[ file-delete file ]
file-open file
]
end
to write-to-file
file-show my-clients
file-show my-obligations
end
to patron-compete
;show length my-clients
ifelse length my-clients > 1 ;; base line for the competition
[
set my-home patch-here
setxy 0 0
;show "i am about to compete"
;show length my-clients print " and these are how many supporters I have"
compete
]
[stop]
end
to calculate-clients-worth
foreach my-clients
[ ask ?
[ let dosh wealth
ask myself [set clients-worth clients-worth + dosh]
]
]
end
to compete
let competitor one-of turtles-here with [color = [color] of myself and length my-clients > 0] ;; local elites come together, pair off against their peers
ifelse competitor != nobody and competitor != self
[
set am-competing true
;show "I'm competing against"
; ask competitor [show "...yes, against me" ]
ifelse clients-worth >= ([clients-worth] of competitor) or (length my-clients) >= length [my-clients] of competitor ;; quality first, then number of clients! (quality can trump number)
[set prestige prestige + 8
set games-won games-won + 1;;;
extract-wealth-from-clients ;;; this is where obligations are repaid.
ask competitor
[ ;show "I am the competitor, and I lost"
;show ([prestige] of self)
set prestige ([prestige] of self - 10)
;show ([prestige] of self)
set games-won games-won - 1
];; my prestige goes up, but yours goes down more because you lost.
go-home
]
[set prestige prestige - 10
set games-won games-won - 1
ask competitor
[;show "I am the competitor, and I won"
;show ([prestige] of self)
set prestige ([prestige] of self + 8)
;show ([prestige] of self)
extract-wealth-from-clients ;;; nb wealth is a proxy for their support, repaying the gifts that the patron has already given them
set games-won games-won + 1]
go-home
]
]
[go-home]
end
to go-home
while [ patch-here != (my-home)]
[set heading towards (my-home)
;set going-home? true
jump 1
]
set am-competing false
set clients-worth 0
;;setxy my-home
end
; Copyright 1998 Uri Wilensky. All rights reserved.
; The full copyright notice is in the Information tab.
@#$#@#$#@
GRAPHICS-WINDOW
209
22
627
461
25
25
8.0
1
10
1
1
1
0
1
1
1
-25
25
-25
25
1
1
1
ticks
30.0
BUTTON
8
256
79
289
setup
setup
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL
1
BUTTON
108
256
175
289
go
go
T
1
T
OBSERVER
NIL
NIL
NIL
NIL
1
SLIDER
8
72
176
105
max-vision
max-vision
1
15
20
1
1
NIL
HORIZONTAL
SLIDER
8
106
176
139
metabolism-max
metabolism-max
5
25
10
1
1
NIL
HORIZONTAL
SLIDER
8
38
176
71
num-people
num-people
2
1000
235
1
1
NIL
HORIZONTAL
SLIDER
8
174
176
207
life-expectancy-max
life-expectancy-max
1
80
50
1
1
NIL
HORIZONTAL
SLIDER
8
140
176
173
life-expectancy-min
life-expectancy-min
20
100
20
1
1
NIL
HORIZONTAL
PLOT
684
291
896
471
Local Class Histogram
Classes
Turtles
0.0
3.0
0.0
250.0
false
false
"" ""
PENS
"default" 1.0 1 -2674135 true "" ""
PLOT
1012
445
1247
625
Lorenz Curve
Pop %
Wealth%
0.0
100.0
0.0
100.0
false
true
"" ""
PENS
"lorenz" 1.0 0 -2674135 true "" ""
"equal" 100.0 0 -16777216 true "" ""
PLOT
1013
259
1247
439
Gini-Index v. Time
Time
Gini
0.0
50.0
0.0
1.0
true
false
"" ""
PENS
"default" 1.0 0 -13345367 true "" ""
MONITOR
771
69
881
114
# of super prestige
count turtles with [prestigiousness = \"high\"]
0
1
11
MONITOR
1016
33
1250
78
NIL
count patches with [is-settlement?]
17
1
11
BUTTON
28
399
170
432
write socnet
open-file\nask turtles ;with [am-dead? = false]\n[write-to-file]\nfile-close
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL
1
PLOT
1018
105
1246
255
Games of Patronage
NIL
NIL
0.0
3.0
0.0
10.0
true
false
"" ""
PENS
"mid" 1.0 0 -10899396 true "" ""
"high" 1.0 0 -13345367 true "" ""
PLOT
684
124
899
291
Global Class Histogram
NIL
NIL
0.0
3.0
0.0
10.0
true
false
"" ""
PENS
"default" 1.0 1 -16777216 true "" ""
MONITOR
682
69
773
114
Avg # of clients
mean [length my-clients] of turtles
0
1
11
MONITOR
682
24
773
69
max # of clients
max [length my-clients] of turtles
17
1
11
MONITOR
773
24
856
69
# of patrons
count turtles with [length my-clients >= 1]
17
1
11
MONITOR
880
69
960
114
mid prestige
count turtles with [prestigiousness = \"mid\"]
17
1
11
CHOOSER
8
207
176
252
Resource-Settings
Resource-Settings
"Wild Woodland" "Coppiced Woodland" "Mines" "Clay"
0
MONITOR
855
24
920
69
Generation
mean ([generation] of turtles)
0
1
11
SWITCH
353
501
456
534
seed?
seed?
1
1
-1000
TEXTBOX
196
497
346
609
If switched on, the same sequence of random numbers is generated with each run, allowing the user to test the effects of different variables, changes to code, etc.
12
0.0
1
@#$#@#$#@
This model is based on the 'Wealth Distribution' model by Uri Wilensky, itself a reimplementation of the well-known Sugarscape model. The original code info follows at the end. Below, the draft of the text of my writeup concerning this model.
##Draft text of 'Natural Resource Extraction and the Roman Bazaar: An Agent Based Exploratory Lab'
#NB final published text may well differ significantly from this.
Shawn Graham,
406 Paterson Hall, Department of History, 1125 Colonel By Drive, Carleton University, Ottawa Ontario, K1S 5B6 Canada
E-mail: shawn_graham@carleton.ca
Abstract
This paper outlines how agent-based modeling can be used as a laboratory for exploring aspects of ancient economic life. Bang (2006; 2008) has put forth a model of the Roman economy developed from the insights of Clifford Geertz (1979) as an ‘imperial bazaar’. A significant portion of Bang’s model hinges on social networks. Particular network topologies have implications for the flows of materials or ideas through them, and so knowing the kind of network shapes that the ‘bazaar’ might generate should be explored. We can develop an agent based simulation of Bang’s model which as a by-product of its functioning generates social networks. We can then look at under what conditions the generated social network matches social networks known archaeologically from the extractive economy of Roman brick and tile. The simulation thus represents a way of bridging economic theory with the archaeological evidence. Suggestions for extending the model to explore multiple kinds of products and adapting it are presented.
Keywords
Agent based modeling; Roman economic history; simulation; trade, natural resources
##Introduction
This paper explores what the economist Lea Tesfatsion calls ‘agent-based computational economics’ (2012). It uses the Netlogo (Wilensky, 1999) agent based modeling platform to implement a (necessarily) simplified Roman economy. The model generates social networks which can then be measured against known archaeological networks; where there is a degree of congruence, I argue that the model has generated new knowledge. In this regard, what I am building is a ‘computational laboratory’ that takes place in an explicitly spatial environment (Dibble, 2006). In the spirit of open access, I make the model and its code available for experimentation and extension and so the results presented here should be seen as necessarily preliminary.
According to Peter Bang, the Roman economic system is best understood as a complex, agrarian tributary empire, of a kind similar to the Ottoman or Mughal (Bang 2006; 2008). In such states, trade and markets remained locally and regionally fragmented (though there could be overlapping ‘regions’ of different sizes, depending on the product; cf Horden and Purcell 2000: 123-72 on ‘connectivity of microregions’). This was a ‘stable’ economic state, with its own characteristics and patterns. Bang (2006: 72-9) draws attention to the concept of the bazaar. The bazaar was a complete social system that incorporated the small peddler with larger merchants, long distance trade, with a smearing of categories of role and scale. “The bazaar was notorious as a place of high risk and uncertainty where bottlenecks, asymmetries and imbalances were endemic… Bazaar can be used to denote a stable and complex business environment characterised by uncertainty, unpredictability and local segmentation of markets.” (79)
The bazaar emerged from the interplay of instability and fragmentation. The mechanisms developed to cope with these reproduced that same instability and fragmentation. Bang identifies four key mechanisms that did this: small parcels of capital (to combat risk, cf Skydsgaard 1976); little homogenization of products (agricultural output and quality varied year by year, and region by region as Pliny discusses in Naturalis Historia 12 and 18); opportunism; and social networks (80-4). As Bang demonstrates, these characteristics correspond well with the archaeology of the Roman economy and the picture we know from legal and other text. Bang concludes, “…the set of strategies outlined here provided a complex and resistant foundation for trade. But the result was to consolidate tendencies towards market segmentation where economic flows seem to run in separate, compartmentalised channels and networks... The bazaar, to conclude, is the model of agrarian markets we have been looking for.” (84).
It is this last component on which I focus. ‘Networks’ as both a metaphor and a statistical, measurable feature of ancient society have recently begun to invade the literature. Brughmans 2012 gives an overview of the historiography of network approaches to archaeology. He draws attention to the work of Wasserman and Faust (1994: 4) that illustrates the social assumptions of network analysis:
-Actors and their actions are viewed as interdependent rather than independent, autonomous units.
- Relational ties (linkages) between actors are channels for transfer or “flow” of resources (either material or nonmaterial).
- Network models focusing on individuals view the network structural environment as providing opportunities for or constraints on individual action.
- Network models conceptualize structure (social, economic, political, and so forth) as lasting patterns of relations among actors. (Brughamns 2012: An Introduction to SNA).
In a recent application of network theory to the problems of Greek colonization, Malkin (2011: 18-19) argues that since we can never know the exact, perfect ‘wiring’ of any ancient network, it is better to use ‘network analysis’ and its concepts metaphorically. This would miss an opportunity. A network approach should properly not stop at ‘network’ as metaphor. It should outline as fully as possible the connections relevant to the question we are asking, to understand the implications of the topology (pattern of connections) for what they might mean for history. A small-world, in network terms, is one where most connections are local and short, while a handful of individuals have connections that connect otherwise disparate parts of the network. This allows whatever flows through the network to reach all its parts quite quickly (Buchanan 2002; Milgram 1967; Watts and Strogatz 1998; Watts 1999). Consequently, as Brughmans points out, a social network with this pattern of connections would have implications for our understanding of the processes underlying its formation, such as the spread of religious ideas or the establishment of social norms or political power (2010).
Bang’s model of the bazaar (2008; 2006), and the role of social networks within that model, can be simulated computationally. What follows is a speculative attempt to do so, and should be couched in all appropriate caveats and warnings. Networks can be discerned and drawn out from archaeology, prosopography, and historical sources (e.g., Brughmans 2010; Manning 2010; Ruffini 2008; Graham and Ruffini 2007; Graham 2006a). If the networks we see in the ancient evidence correspond to networks generated from the computational simulation of our models for the ancient economy, we have a powerful tool for exploring antiquity, for playing with different ideas about how the ancient world worked (cf. Dibble 2006). Computation might be able to bridge our models and our evidence. In this paper, I develop a simple simulation that represents a starting point for bringing this agenda about, and explore some of its consequences.
##The Bazaar and the New Institutional Economics
The idea of the Roman economy as a kind of bazaar puts the emphasis on the trading institutions of the Roman world. This is a trend that fits into the ‘New Institutional Economics’ (NIE) of Douglass North (1990) and his followers (especially for antiquity as formulated by Frier and Kehoe’s 2007 chapter in the Cambridge Economic History of the Greco-Roman World; cf also Bang’s 2009 review). What North proposed in his NIE was not a rejection of neoclassical economics, but rather a re-assessment of what rationality could mean, especially over time. Over time, what is most costly in any transaction is information. Working out these costs and measuring them are the roots of institutions (Lo Cascio 2006: 219, citing North 1990: 27).
NIE assumes that knowledge is costly to acquire, which limits actors in their ability (or their will) to act. Thus, individuals tend to make ‘good enough’ decisions, that is, ones that are ‘satisficing’. They account for incomplete knowledge through guess work, reliance on social relationships, values and judgements that are necessarily incomplete (Frier and Kehoe 2007: 121-122). Once a particular choice is made, further choices in the same direction are easier (less immediately costly) than perhaps superior alternatives. This is called ‘path dependence’ (Fier and Kehoe 2007: 137, citing North 1990). The development of the slave-based villa economy is an example, where the immediate profits from the system forestalled the development of a more sustainable system that promoted longer-term growth.
Institutions help to regularize and promote the flow of knowledge; it was a strategy to cope with uncertainty. In the ancient world, the institution of the market or fair helped to overcome the problems of asymmetrical knowledge not through some ‘invisible hand’ setting a ‘correct’ price, but through the formation of personal networks. “[more important than bringing buyers and sellers together is] the network of long-term personal relationships that arise within regular markets: patterns of trust and reliance based upon prior experience… cultivating these long-term “relational” contracts is often of more importance than obtaining the lowest price” (Frier and Kehoe 2007: 119)
According to Bang, the key characteristics of a bazaar-type economy lie in poor information, fragmented organization, and little standardisation. Personal connections were used to obtain information and bridge the gaps (2008: 198). The participants in a bazaar market actively sought to minimize uncertainty by establishing a clientele. By trading with a preferred partner, the marketer is sheltered from some risk and uncertainty, but only by fostering particular relationships. Other possibilities might exist, but are not open to the market trader, since he is limited to what can be known through his own network of contacts (5). More generally, Bang finds it telling for instance that transport amphorae never lost their regional characteristics, that despite entering trading networks of long or mid range, they never evolved to a standard type or size. He argues that the world of Roman trade should therefore be modelled not as a ‘generalized market sphere’, but as a patchy, weakly integrated space where trading ‘circuits’ are segmented at different scales: “It was a high-risk, high transaction-cost environment” (194-5).
Despite market irregularities, imperfect knowledge, and differences in social power, the trader should not be seen as passive. Rather, what the NIE suggests is that despite high transaction costs creating so-called ‘market imperfections’, they also create different approaches, different strategies to cope with uncertainty. For Bang, the key is to explore social differences between actors in a market. “[The differences] show the existence of a hierarchy and thus of a particular social system replete with institutionalised forms of behaviour and specialisation of functions. The markets of traditional trade should not be seen in terms only of one of its players, the pedlar, they constituted an entre social universe - the bazaar’. For Bang, ‘the bazaar’ is not the quaint tourist trap of labyrinthine shops and traders, but rather a ‘system and hierarchy’ that includes fairs and markets, stretching from rural hinterlands to inter-urban exchange networks (Bang 2008: 197).
Euergetism or other investments in ‘social capital’ by merchants was ‘sound business’. These investments helped to maintain or improve the fides of the individual, thus proving or signalling the honour and thus credit-worthiness of the individual (260). This idea accords well with the ideas of Shennan (2002: 224-7) on costly signalling, an evolutionary idea where one gains prestige and status, by putting energy into conspicuous display. Game theory experiments suggest that individuals are prepared to accept lower returns from individuals with a perceived higher status (Shennan 225, citing Boone and Kessler 1999:271); the experiments also seem to suggest that individuals who invest in costly signalling also end up at the head of the queue for resources in times of crisis (Shennan 225, citing Boone and Kessler 1999: 262-5). Shennan also draws attention to the fact that individuals who engage in costly signalling also must be able to ‘back up’ the display by providing benefits to the larger social group as a whole. He argues that their display achieves this end also by making it too expensive for other individuals to compete in the same game, thus cementing their role (Shennan 2002: 225). Thus, market activities of merchants taken as a communal whole turn the bazaar into a social system; for Bang, a market was also a “social universe fostering a sense of hierarchy and promoting norms of proper conduct between individual traders” (Bang 2008: 260).
The Piazzale delle Corporazione in Ostia, the collegiae of traders in Lugdunum, the Palmyrene merchants in Palmyra - all of these are evidence, for Bang, of the ways traders banded together into social groups in attempts to mitigate the imperfect knowledge and regional vagaries of the Roman world (Bang 2008: 251-3). Information uncertainty and unpredictability of supply and demand are the ‘ideal-typical’ characteristics of the bazaar (Bang 2008: 4). Building networks was one response to this situation. These then are the economic characteristics and social behaviours that we will seek to model in our computational simulation of the bazaar. Can such a simulation generate social differences between actors? What kinds of hierarchies can emerge? Under what conditions does this computational world resemble the one we see in the archaeology – and what can that tell us about the Roman economy?
##Agent Based Modelling
Agent based modelling is an approach to simulation that focuses on the individual. In an agent based model, the agents or individuals are autonomous computing objects. They are their own programmes. They are allowed to interact within an environment (which frequently represents some real-world physical environment). Every agent has the same suite of variables but each agent’s individual combination of variables is unique (if it was a simulation of an ice-hockey game, every agent would have a ‘speed’ variable, and an ‘ability’ variable, and so the nature of every game would be unique). Agents can be aware of each other and the state of the world (or their location within it), depending on the needs of the simulation. It is a tool to simulate how we believe a particular phenomenon worked in the past (cf Gilbert and Troitzsch 2005:17 on the logic of simulation; Macal and North 2010). When we simulate, we are interrogating our own understandings and beliefs. What is particularly valuable then is that we can build a simulation, and when the agents begin to interact along the patterns of behavior that we have specified (drawn from our understanding of how various processes worked), we have a way of exploring the non-linear, non-intuitive, emergent consequences of those beliefs.
What is more, in order to code a particular behavior, we have to be clear about what we think about that behavior. We have to make our assumptions explicit in order to translate an historical argument into code. A second investigator then can examine the code, critique these assumptions and biases (or indeed, errors) and modify the simulation towards a ‘better’ state. The model is built using the open-source Netlogo modeling environment and language (Wilensky 1999). Examples of agent based models used for archaeological questions include Wilkinson et al.(2007); Graham (2009, 2006b); Graham and Steiner (2008); Kohler et al.(2005).
##The Model Setup and Rules
This model imagines a ‘world’ (‘gameboard’ would not be an inappropriate term) in which help is necessary to find and consume resources. The agents do not know when or where resources will appear or become exhausted. By accumulating resources, and ‘investing’ in improvements to make extraction easier, agents can accrue prestige. When agents get into ‘trouble’ (they run out of resources) they can examine their local area and become a ‘client’ of someone with more prestige than themselves. It is an exceedingly simple simulation, but one that exhibits subtle complexity in its results. (It is an extension of Wilensky’s Wealth Distribution model, 1998). It is always better to start with a simple simulation, even at the expense of fidelity to the phenomenon under consideration, on the grounds that it is easier to understand and interpret outputs. A simple model can always be made more complex when we understand what it is doing and why; a complex model is rather the inverse, its outcomes difficult to isolate and understand.
In this simple world, only one kind of resource is simulated at a time – forest, coppicing, clay, and mining/quarrying. These resources are chosen because of the probable use of broadly similar kinds of strategies to organize the trade (Graham 2005: 111-115, the use of stamps on the product to organize extraction and distribution). There was of course a great deal of difference between these resources in terms of the scale of the organization by the Imperial period (cf Meiggs, 1982:325-370; Hirt 2010: 357-369; for an agent-based simulation of mining in Bronze Age Halstatt see Kowarik et al. 2012). The model takes account of scale and variability by giving each point in the world a chance of holding a certain amount of whatever resource is being simulated (with mines being the least likely, and forests the most). In the model, forest and coppicing regenerate after a set amount of time, while clay pits and mines do not. Each location keeps track of how often it has been ‘harvested’, allowing for exhaustion or depletion of the resource and thus taking it out of play.
Each individual agent represents a single individual who works in this world. Their sole task is to locate and ‘harvest’ the resource. Each agent consumes a portion of whatever is harvested in order to remain active. The amount consumed is set randomly per agent, to a user preset maximum; every individual is different in their abilities. The original simulation calls this ‘metabolism’; we can think of it as representing ‘transaction cost’. Individual agents also have knowledge of the world (which is called ‘vision’ in the model, representing how ‘far’ they can ‘see’ within the environment), to differing degrees (again, to a user preset maximum). We can think of this as representing Bang’s informational uncertainty. These two variables allow the user to simulate worlds of differing economic conditions.
An agent searches the environment within its field of vision, looking for a resource. If it finds some, it may harvest it. If its costs to move are greater than the amount of the resource it has on hand, it is removed from the simulation. A new agent takes its place, representing a generational change-over. If the agent has now consumed all of its resources, it may ask for help (and thus stave off removal). Each agent keeps track of who has given it help and to whom it has given help in turn, which generates a network structure that we may analyse at the conclusion of the simulation.
When an agent asks for help, it examines its local neighbourhood (within its range of vision, ie, knowledge-of-the-world) for a possible patron. A possible patron is one whose prestige is equal to or greater than its own (initially, all agents have the same prestige value; exact values are not as important as having appropriately conceived processes, cf Agar 2003). If a potential patron can be found, and the potential patron accepts the other agent as client (determined by a roll of the die), then the patron gives the client some of its resource. This gift increases the patron’s prestige, and puts the client in its debt. Patrons, in the model, invest some of their resources in improving the yield from a location, thus representing the investment in fides.
At the end of each cycle, the agents compare their resource amount against others whom they ‘know’ (who may be found within the agent’s ‘vision’). The simulation makes the same comparison for the population of all agents as a whole at the same time. The agents set their ‘prestige’ to reflect their local status into top middle, and bottom thirds. Each ‘patron’ (an agent with at least two other agents in its debt) selects another patron to compete against at the same rank (thus local elites compete against other local). Elites compare both the quality and number of their followers against each other. A patron with a few wealthy clients might beat a patron with several poor ones. Winning the game increases prestige, losing reduces prestige. The winner then calls on its clients to support it through gifts of resources (while simplistic, this modeling of ‘patronage’ does not stray from the broad outlines suggested by scholars collected in Wallace-Hadrill, 1989a).
At the end of the simulation, each agent writes its patrons and clients into a single file for network analysis. The network analysis is performed using the Gephi network analysis program (Bastian et al.2009; Kuchar 2011). Data on the state of the model at each time step is written to a spreadsheet, counting the number of agents who are patrons, clients, their degree of prestige, and their classification into high-middle-low status both locally and globally. [Insert Endnote 1 here] What goes in, and what comes out, of an agent based model
A criticism of computational simulation is that one only gets out of it what one puts in; that its results are tautological. This is to misunderstand what an agent based simulation does. As Box and Draper put it, ‘all models are wrong, but some are useful’ (1987: 424). In the model developed here, I put no information into the model about the ‘real world’, the archaeological information against which I measure the results. The model is meant to simulate my understanding of key elements of Bang’s formulation of the ‘Imperial Bazaar’. We measure whether or not this formulation is correct by matching its results against archaeological information which was never incorporated into the agents’ rules, procedures, or starting points. I never pre-specify the shape of the social networks that the agents will employ; rather, I allow them to generate their own social networks which I then measure against those known from archaeology. Social networks can be discerned in archaeological materials since artefacts are the direct result of social relationships (Knappett 2011; Coward 2010; Graham and Ruffini 2007: 325-331).
Our archaeological base line for the networks comes primarily from epigraphy. Clay and timber carried explicit messages on them, in the form of stamps (Graham 2005; Graham 2006a). Other classes of raw materials in the Roman world similarly carried explicit messages on them (such as masons’ marks on marble in the quarries). These messages ranged from the simple name of the maker, to the name of the estate whence they came, to the year in which they were made/cut down/quarried. In essence, the right to extract or use the resource was arranged through locatio-conductio contracts, whether or not the landowner took an active stake in production, which the language of the stamps reflects (Steinby 1993; Setälä 1977; Helen 1975; Aubert 1994). Meiggs supposes that the same system used for letting out public contracts was used in managing the public forests (1982: 329). Hirt discusses the differences between private and public mines/quarries, in much the same terms (2010: 84-93).
It is possible to reconstruct something of the social networks surrounding the exploitation of materials from this epigraphic material. (Additionally, we can see these networks in the archeometry of brick, tile, and other objects, Graham 2006a: 92-113; Malkin et al.2007; for criticism of the approach see Brughmans 2010). The named individuals in brick stamps can be knitted together into a social network. I use network statistics generated from a study of the patterning of co-occurrence of names of individuals, estates, and workshops, as well as patterns of co-exploitation of clay bodies as the control in this study. I set the simulation to run through all combinations of its variables, and then match the shape of the resulting generated social networks against the archaeological ones to identify simulation runs of interest.
If the simulations processes match our understandings of the phenomenon under consideration, then its outputs (the emergent, unpredictable outcomes) must have some validity. If they do not match, it may mean that our understanding we sought to model is incorrect. It is worth noting that this too is an important result.
##Simulation Results
We sweep the ‘parameter space’ to understand how the simulation behaves; ie, the simulation is set to run multiple times with different variable settings. In this case, there are only two agent variables that we are interested in (having already pre-set the environment to reflect different kinds of resources). Because we are ultimately interested in comparing the social networks produced by the model against a known network, the number of agents is set at 235, a number that reflects the networks known from archaeometric and epigraphic analysis of the South Etruria Collection of stamped Roman bricks (Graham 2006a).
Nine different combinations of variables are used to sweep the entire space, twice for each of the four resources, making for 72 different runs over nearly 60 000 iterations of the model. The simulation is set to stop at the arbitrary point of 50 generations (the question of when to halt an experiment is not at all obvious when it comes to simulation. The reader may wish to experiment with changing this; cf Weingart 2012).
Transaction costs (“metabolism”) knowledge of the world (“vision”)
combination 1 Low Low
combination 2 Low Middle
combination 3 Low High
combination 4 Middle Low
combination 5 Middle Middle
combination 6 Middle High
combination 7 High Low
combination 8 High Middle
combination 9 High High
Table 1. Combinations of variables in the ‘sweep’ of the model’s behaviour space.
[insert figure 1 about here]
We should expect some basic trends to emerge. We could expect that:
• increasing the transaction costs should make it much more difficult for agents to survive (i.e., make the simulation reach its arbitrary end-conditions, a point where the average number of generations per agent equals 50) relatively quickly).
• increasing ‘vision’ (we reduce information uncertainty by increasing the amount of the world it is possible to ‘know’) should make it much easier for agents to survive; that the simulation takes a relatively long time to reach its arbitrary end point.
This is in fact what we see (Figure 1). A world where fifty generations are reached quickly might be characterised as unstable, while one that takes some time could be called stable. Combinations 3, 6, and 9 lead to the greatest peaks in stability. If one were to map these against the economic development of the Roman world, one could argue that combinations 9 and 6 would agree with a situation or area where many transport or communications links have still to be developed, though the general lay of the land is well known. Combination 3 would agree with a situation where the transportation or communications networks were at the most developed and secure. Either way, these combinations point to a degree of integration (and the differing circumstances under which integration could be produced, in the simulation).
Combinations 4 and 7, the greatest dips in the graph (and thus worlds of instability), are suggestive of a situation where transaction costs are high and communications are poor. The question is, which of these situations corresponds with the ‘real’ world? We turn to the generated social networks and their comparison with archaeological data.
Social Networks Analysis
Julio-Claudian Flavian Antonine Severan
Clustering Coefficient 0.04 0.06 0.02 0.11
Equivalent on a random graph 0.008 0.005 0.02 0.08
Average Path Length 1.16 1 3.88 2
Equivalent on a random graph 6.76 4 4.3 5
Table 2. Network characteristics of stamped Tiber Valley bricks, based on the epigraphy of the stamps. Shading suggests that small-world conditions might be in evidence (same average path length as in a random graph although the clustering is of an order of magnitude or more higher, Watts: 1999:114). After Graham 2006: 102, Table 6.1
The way individuals are connected carries implications for the ways in which information or other materials flow through that network. Network structure carries implication for the ability to act, and the ways individuals embedded in a network can leverage the information/material that flows through that network. Individuals and their positioning matters. In a network, individual’s local situations give rise to a global network whose dynamics emerge from this local interplay (see for instance Brughmans 2012; Coward 2010; Mitchell 2009: 227-290; Christakis and Fowler 2009; Ruffini 2008; Graham 2006 whose in charge; Barabasi 2002; Watts 1999).
One can compute metrics to understand the implications of an individual’s positioning (such as the number of connections, or the number of paths through the network between every pair of individuals on which this particular individual sits). I use the Gephi network visualization suite (Bastian et al. 2009). Here, since we are not interested in actual individual historic actors, we are more concerned with global metrics. Two in particular allow us to compare the behavior of the generated networks with the ones known from archaeology and epigraphy (Brughmans 2012 gives an excellent overview of the statistical properties of networks and their archaeological implications).
• Clustering coefficient. This is a measurement that looks at how dense the connections are amongst the neighbors of each individual in the network (neighbors are those to whom the individual is connected at ‘one degree’ remove). The coefficient is the average of all the ‘neighborhoods’ (Hanneman and Riddle 2005 Chapter 8).
• Average Path Length. This is a measurement that takes the mean of the number of links between every pair of actor.
Watts (1999) formally identified a network structure that appears in social (and other) systems of all kinds, which he called the ‘small-world’ phenomena. In a small-world, most individuals are tightly connected in small groups or neighborhoods; it is highly ordered. Normally, this means that it takes many links to get from one side of the network to the other. Yet, in a small-world occasionally some individuals have links that connect otherwise disparate parts of the network, a kind of short-circuit (thus an element of randomness). This has the effect of making the entire network much ‘closer’ than its clustering would suggest – it looks ordered but behaves randomly. We can tentatively identify a small-world then as one with a short average path length and a strong clustering coefficient, compared to a randomly connected network with the same number of actors and connections. Watts suggests that a small-world exists when the path lengths are similar but the clustering coefficient is an order of magnitude greater than in the equivalent random network (Watts 1999: 114).
In Roman economic history, discussions of the degree of market integration within and across the regions of the Empire could usefully be recast as a discussion of small-worlds. If small-worlds could be identified in the archaeology (or emerge as a consequence of a simulation of the economy), then we would have a powerful tool for exploring flows of power, information, and materials. Perhaps Rome’s structural growth – or lack thereof – could be understood in terms of the degree to which the imperial economy resembles a small-world (cf the papers in Manning and Morris 2005)? Small-worlds also seem to be a pre-requisite for self-organization, where complex phenomena emerge from the interaction of the constituent parts (Granovetter 2002; Cilliers 1998).
The networks generated from the study of brick stamps are of course a proxy indicator at best. Not everyone (presumably) who made brick stamped it. That said, there are two particular combination of settings that produce results similar to those observed in stamp networks, in terms of their internal structure and the average path length between any two agents. In run 21, the variable settings are those for combination 3, which corresponds to a world where transactions costs are significant (M = 10) and knowledge of the world is deep (V = 20); the resource is ‘forest’. The clustering coefficient and average path length observed for stamped bricks during the second century (Antonines) fall just outside the range of results for multiple runs with these settings (from 0 to 0.018 for the clustering coefficient; and 2 to 8 for the average path length). Small-world conditions do not seem to be fulfilled in the real-world network, which perhaps means that we are dealing with a form of economic activity that does not correspond to the bazaar, that is not emergent: some form of outside control is imposed.
In the second run which produces network statistics very similar to observed real-world brick networks (run 13), the variable settings are those for combination 4, a world where transaction costs are significant (but not prohibitive; M = 10), and knowledge of the world is limited (V = 2); the resource is ‘forest’. The clustering coefficient and average path length observed for stamped bricks during the second century fall within the range of results for multiple runs with these settings (from 0 to 0.034 for the clustering coefficient; and 2 to 14 for the average path length). In the simulation, the rate at which individuals linked together into a network suggests that there was a constant demand for help and support.
There were a number of runs that did not produce any clustering at all (and very little social network growth). Most of those runs occurred when the resource being simulated was coppiced woodland. This would suggest that the nature of the resource is such that social networks do not need to emerge to any great degree (for the most part, they are all dyadic pairs, as small groups of agents exploit the same patch of land over and over again). The implication is that some kinds of resources do not need to be tied into social networks to any great degree in order for them to be exploited successfully (these were also some of the longest model runs, another indicator of stability).
The strongest network cohesion occurred in runs 5 (forest), 28 (mine), and 23 (clay) (table 3). Run 5 occurred in a combination implying a world where transaction costs were low, and knowledge of the world was middling. Run 28 occurred in a combination implying a world where the transactions costs were great, and the knowledge of the world was limited. Run 23 shows a world where the transactions costs were middling, and knowledge of the world was deep. In each case, it is the nature of the resource that makes the difference, rather than the variable settings. The social network which emerges depends on the kind of resource or product involved.
Run 5 23 28
Resource Forest Clay Mine
M 1 10 25
V 10 20 2
N. of Nodes 202 188 200
N. of Links 494 406 446
Average path length 6.2 7.019 7.6
Clustering coefficient 0.01 0.01 0.01
% participation in the social network 86 80 85
Table 3. Network statistics for the greatest participation rates (number of agents tied into the networks)
##Conclusion
What are some of the implications of thinking of the Roman economy as a kind of bazaar? If, despite its flaws, this model correctly encapsulates something of the way the Roman economy worked, we have an idea of, and the ability to explore, some of the circumstances that promoted economic stability. It depends on the nature of the resource and the interplay with the degree of transaction costs and the agents’ knowledge of the world. In some situations, ‘patronage’ (as instantiated in the model) serves as a system for enabling continual extraction; in other situations, patronage does not seem to be a factor.
However, with that said, none of the model runs produced networks that had the characteristics of a small-world. The equivalent random graph in every case had similar clustering coefficients and similar path lengths. This is rather interesting. If we have correctly modeled the way patronage works in the Roman world, and patronage is the key to understanding Rome (cf Verboven 2002), we should have expected that small-worlds would naturally emerge. This suggests that something is missing from the model – or our thinking about patronage is incorrect. We can begin to explore the conundrum by examining the argument made in the code of the simulation, especially in the way agents search for patrons. In the model, it is a local search. There is no way of creating those occasionally long-distance ties. I had initially imagined that the differences in the individual agents’ ‘vision’ would allow some agents to have a greater ability to know more about the world and thus choose from a wider range. In practice, those with greater ‘vision’ were able to find the best patches of resources, indeed, the variability in the distribution of resources allowed these individuals to squat on what was locally best. My ‘competition’ and prestige mechanisms seem to have promoted a kind of path dependence. Perhaps I should have instead included something like a ‘salutatio’, a way for the agents to assess patrons’ fitness or change patrons (cf Graham 2009; Garnsey and Woolf 1989: 154; Drummond 1989: 101; Wallace-Hadrill 1989b: 72-3). Even when models fail, their failures still throw useful light. This failure of my model suggests that we should focus on markets and fairs as not just economic mechanisms, but as social mechanisms that allow individuals to make the long distance links. A subsequent iteration of the model will include just this.
Finally, the model runs on a torus-shaped world (that is, the left and right sides of the environment are connected, as are the top and bottom. If an agent wanders off the top of the screen, it re-appears at the bottom). A more useful model would be instantiated on top of a GIS with the real locations of various resources (and associated infrastructure) known. Perhaps it could be made to work with the transport economics modeled by Scheidel and Meeks and the ORBIS project (this interactive mapping project allows the user to explore the differences in the economic geography of the Roman world depending on time of year, mode of transport, and routes through the Roman world).
This model will come into its own once there is more and better network data drawn from archaeological, epigraphic, historical sources. This will allow the refining of both the set-up of the model and comparanda for the results. The model presented here is a very simple model, with obvious faults and limitations. Nevertheless, it does have the virtue of forcing us to think about how patronage, resource extraction, and social networks intersected in the Roman economy. It produces output that can be directly measured against archaeological data, unlike most models of the Roman economy. When one finds fault with the model (since every model is a simplification), and with the assumptions coded therein, he or she is invited to download the model and to modify it to better reflect his or her understandings. In this way, we develop a laboratory, a petri-dish, to test our beliefs about the Roman economy. I offer this model in that spirit.
##Acknowledgements
The nucleus of this paper was presented at the Land and Natural Resources in the Roman World conference in Brussels, May 2011. I would like to thank Paul Erdkamp and Koen Verboven for inviting me to participate in that conference, and also the participants of that conference for their insight and criticism of these ideas. Various drafts have been seen by various people at various stages, and I thank them for their comments and patience, especially Mark Lawall. Errors of logic or understanding are of course my own.
##Notes
1. For the full model code and the details of its routines, please download at http://figshare.com/authors/Shawn%20Graham/97736 , open with Netlogo 5, and click on the ‘information’ tab. The code itself is annotated with comments explaining what is happening in each procedure, and may be reviewed by clicking on the ‘Code’ button.
##About the Author
Shawn Graham is the Assistant Professor of Digital Humanities in the Department of History at Carleton University. His research interests include agent based simulation of the Roman world, location-based computing, and augmented reality applications for archaeology.
##Classical Authors and Texts
Pliny the Elder, Naturalis Historia
##References
Agar, M.
2003 My kingdom for a function: modeling misadventures of the innumerate. Journal of Artifical Societies and Social Simulation 6.3. Internet Edition: http://jasss.soc.surrey.ac.uk/6/3/8.html
Aubert, J.-J.
1994 Business Managers in Ancient Rome. A Social and Economic Study of Institores, 200 BC – AD 250. Columbia Studies in the Classical Tradition 21. New York: E.J. Brill.
Bang, P.
2006 Imperial Bazaar: towards a comparative understanding of markets in the Roman Empire. In P. Bang, M. Ikeguchi and H. Ziche (eds.), Ancient Economies Modern Methodologies. Archaeology, comparative history, models and institutions, 51-88. Edipuglia: Bari.
2008 The Roman Bazaar. A Comparative Study of Trade and Markets in a Tributary Empire. Cambridge: Cambridge University Press.
2009 The Ancient economy and New Institutional Economics Journal of Roman Studies 99:194-206.
Barabási, A.-L.
2002 Linked: The New Science of Networks. Cambridge MA: Perseus.
Bastian, M., S. Heymann, and M. Jacomy
2009 Gephi: An open source software for exploring and manipulating networks. Third International AAAI Conference on Weblogs and Social Media (ICWSM 2009), San Jose, Ca. 2009. Internet Edition: http://www.aaai.org/ocs/index.php/ICWSM/09/paper/view/154 and http://gephi.org
Boone and Kessler
1999 More status or more children? Social status, fertility reduction, and long-term fitness. Evolution and Human Behaviour 20: 257-277.
Box, G. and N. Draper
1987 Empirical Model-Building and Response Surfaces. Wiley, New York.
Brughmans, T.
2010 Connecting the dots: towards archaeological network analysis. Oxford Journal of Archaeology 29.3: 277-303.
2012 Thinking through networks: a review of formal network methods in archaeology. Journal of Archaeological Method and Theory19.2 Internet Edition: http://www.springerlink.com.proxy.library.carleton.ca/content/6363261115784070/?MUD=MP
Buchanan
2002 Nexus: Small Worlds and the Groundbreaking Science of Networks. New York: W.W. Norton.
Christakis and Fowler
2009 Connected: the Surprising Power of our Social Networks and How they Shape our Lives. New York: Little, Brown, and Company.
Cilliers, P.
1998 Complexity and Postmodernism: Understanding Complex Systems. London: Routledge.
Coward, F.
2010 Small worlds, material culture and Near Eastern social networks Proceedings of the British Academy 158:449-479. Internet edition: http://www.fcoward.co.uk/Cowardsmallworlds.pdf
Dibble, C.
2006 Computational laboratories for spatial agent-based models. In L. Tesfatsion and K. Judd (eds.), Handbook of Computational Economics, Vol. 2: Agent-Based Computational Economics, 1511-1550. Amsterdam: Elsevier.
Drummond, A.
1989 Early Roman clientes. In A. Wallace-Hadrill (ed.) Patronage in Ancient Society, 89-116. London: Routledge.
Frier, B and D. Kehoe
2007 Law and economic institutions in W. Scheidel, I. Morris, R. Saller (eds.), The Cambridge Economic History of the Greco-Roman World. Cambridge, 113-143. Cambridge: Cambridge University Press.
Garnsey, P. and G. Woolf.
1989 Patronage of the rural poor in the Roman world. In A. Wallace-Hadrill (ed.), Patronage in Ancient Society. 153-170. London: Routledge.
Geertz, C.
1979 Suq: the bazaar economy in Sefrou. In C. Geertz, H. Geertz and L. Roan (ed), Meaning and Order in Moroccan Society, 123-313. Cambridge: Cambridge University Press.
Gilbert, N. and K. Troitzsch
2005 Simulation for the Social Scientist, 2nd ed. Milton Keynes: Open University Press.
Graham, S.
2005 Of lumberjacks and brick stamps: working with the Tiber as infrastructure. In A. MacMahon and J. Price (eds.). Roman Urban Living. 106-124. Oxford: Oxbow.
2006a Ex Figlinis: The Network Dynamics of the Tiber Valley Brick Industry in the Hinterland of Rome BAR International Series 1468. Oxford: John Hedges.
2006b Networks, agent-based models and the Antonine Itineraries: Implications for Roman archaeology. Journal of Mediterranean Archaeology 19.1: 45-64.
2009 Behaviour space: Simulating Roman social life and civil violence. Digital Studies / Le Champ Numérique, 1.2. Internet edition: http://www.digitalstudies.org/ojs/index.php/digital_studies/article/view/172/214
Graham S. and G. Ruffini
2007 Network analysis and Greco-Roman prosopography. In K.S.B. Keats-Rohan, (ed.) Prosopography Approaches and Applications. A Handbook. Occasional Publications of the Unit for Prosopographical Research, 325-336. Oxford: Linacre College.
Graham S. and J. Steiner
2008 Travellersim: growing settlement structures and territories with agent-based modelling. In J. Clark and E. Hagemeister (eds.), Digital Discovery: Exploring New Frontiers in Human Heritage. CAA 2006. Computer Applications and Quantitative Methods in Archaeology. Proceedings of the 34th Conference, Fargo, United States, April 2006, 57-67. Archaeolinga: Budapest.
Hanneman and Riddle
2005 Introduction to Social Network Methods. Riverside CA: University of California. Internet edition: http://faculty.ucr.edu/~hanneman/
Helen, T.
1975 Organization of Roman Brick Production in the First and Second Centuries A. D. : an Interpretation of Roman Brick Stamps. Helsinki: Suomalainen Tiedeakatemia.
Hirt, A.
2010 Imperial Mines and Quarries in the Roman World. Organizational Aspects 27 BC – AD 235. Oxford: Oxford University Press.
Horden, P. and N. Purcell
2000 The Corrupting Sea: A Study of Mediterranean History. Oxford: Blackwell.
Knappett, C.
2011 An Archaeology of Interaction. Network Perspectives on Material Culture and Society. Oxford: Oxford University Press
Kohler T., G. Gumerman, and R. Reynolds
2005 Simulating ancient societies. Scientific American 293.1: 77–84.
Kowarik, K., H. Reschreiter, and G. Wurzer
2012 Modelling Prehistoric Mining. In F. Breitenecker, I. Troch, (eds.) Mathmod Vienna 2012, full paper preprint volume. Internet edition: http://seth.asc.tuwien.ac.at/proc12/full_paper/Contribution468.pdf
Kuchar, J.
2011 Social network analysis plugin for Gephi. http://gephi.org/plugins/social-network-analysis/
Lo Cascio, E.
2006 The role of the state in the Roman economy: making use of the New Institutional Economics. In P. Bang, M. Ikeguchi, H. Ziche (eds.), Ancient Economies Modern Methodologies. Archaeology, Comparative History, Models and Institutions, 215-236. Bari: Edipuglia.
Macal, C. and M. North
2010 Tutorial on agent-based modelling and simulation. Journal of Simulation 4.3: 151-162.
Malkin, I., C. Constantakopoulou, and K. Panagopoulou
2007 Preface: Networks in the Ancient Mediterranean. Mediterranean Historical Review 22.1: 1-9.
Manning, J.
2010 Networks, hierarchies, and markets in the Ptolemaic economy. In J. Archibald, J. Davies and V. Gabrielsen (eds.), The Economies of Hellenistic Societies, Third to First Centuries BC, 296-323. Oxford: Oxford University Press.
Manning, J. and I. Morris
2005 The Ancient Economy: Evidence and Models. Standford: Stanford University Press.
Meiggs, R.
1982 Trees and Timber in the Ancient Mediterranean World. Oxford: Clarendon Press.
Milgram, S.
1967 The small world problem. Psychology Today 2:60–67.
Mitchell, M.
2009 Complexity: A Guided Tour. Oxford: Oxford University Press.
North, D.
1990 Institutions, Institutional Change and Economic Performance. Cambridge: Cambridge University Press.
Ruffini, G.
2008 Social Networks in Byzantine Egypt. Cambridge: Cambridge University Press.
Setälä, P.
1977 Private domini in Roman brick stamps of the Empire : a historical and prosopographical study of landowners in the district of Rome. Helsinki: Suomalainen tiedeakatemia.
Scheidel, W. and E. Meeks
2012 ORBIS The Stanford Geospatial Network Model of the Roman World. Stanford. http://orbis.stanford.edu
Shennan, S.
2002 Genes, Memes and Human History: Darwinian Archaeology and Cultural Evolution. Thames and Hudson: London.
Skydsgaard, J.
1976 The Disintegration of the Roman Labour Market and the Clientela Theory. Studia Romana in honorem Petri Krarup Septuagenarii, 44-48, Odense: Odense University Press.
Steinby, E.M.
1993 L’Organizzazione produttiva dei laterizi: un modello interpretativo per l’instrumen in genere? In William Harris (ed), The inscribed economy : production and distribution in the Roman empire in the light of instrumentum domesticum : the proceedings of a conference held at the American Academy in Rome on 10-11 January, Journal of Roman Archaeology Supplementary Series 6.139-144. Portsmouth, Rhode Island.
Verboven, K.
2002 The Economy of Friends. Economic Aspects of Amicitia and Patronage in the Late Republic. Bruxelles: Latomus.
Wallace-Hadrill, A.
1989a (ed.) Patronage in Ancient Society, London: Routledge.
1989b Patronage in Roman society: from Republic to Empire. In A. Wallace-Hadrill (ed)., Patronage in Ancient Society, 63-87. London: Routledge.
Wasserman, S. and K. Faust
1994 Social Network Analysis: Methods and Applications. Cambridge: Cambridge University Press.
Watts, D.
1999 Small Worlds: The Dynamics of Networks between Order and Randomness. Princeton Studies in Complexity, Princeton: Princeton University Press.
Watts, D. and S. Strogatz
1998 Collective dynamics of ‘small-world’ networks. Nature 393:440-442.35
Weingart, S.
2012 Demystifying networks. the scottbot irregular http://www.scottbot.net/HIAL/?p=6279
Wilensky, U.
1998 NetLogo Wealth Distribution model http://ccl.northwestern.edu/netlogo/models/WealthDistribution . Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
1999 NetLogo. http://ccl.northwestern.edu/netlogo/ . Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Wilkinson T.J, M. Gibson, J. Christiansen, M. Widell, D. Schloen, N. Kouchoukos, C.
Woods, J. Sanders, K.-L. Simunich, M. Altaweel, J. A. Ur, C. Hritz, J. Lauinger, and J. Tenney
2007 Modeling settlement systems in a dynamic environment Case studies from Mesopotamia. In Kohler T., and S. Van der Leuw (eds). The Model-Based Archaeology of Socionatural Systems. 175-208. School for Advanced Research Press: Santa Fe, NM.
Captions
Figure 1.The amount of time (number of model cycles) to reach a global mean of 50 generations, by combination of metabolism and vision against resource.
Table 1. Combinations of variables in the ‘sweep’ of the model’s behaviour space.
Table 2. Network characteristics of stamped Tiber Valley bricks, based on the epigraphy of the stamps. Shading suggests that small-world conditions might be in evidence (same average path length as in a random graph although the clustering is of an order of magnitude or more higher, Watts: 1999:114). After Graham 2006: 102, Table 6.1
Table 3. Network statistics for the greatest participation rates (number of agents tied into the networks)
##Original Wealth Distribution Model Info Panel
## WHAT IS IT?
This model simulates the distribution of wealth. "The rich get richer and the poor get poorer" is a familiar saying that expresses inequity in the distribution of wealth. In this simulation, we see Pareto's law, in which there are a large number of "poor" or red people, fewer "middle class" or green people, and many fewer "rich" or blue people.
## HOW IT WORKS
This model is adapted from Epstein & Axtell's "Sugarscape" model. It uses grain instead of sugar. Each patch has an amount of grain and a grain capacity (the amount of grain it can grow). People collect grain from the patches, and eat the grain to survive. How much grain each person accumulates is his or her wealth.
The model begins with a roughly equal wealth distribution. The people then wander around the landscape gathering as much grain as they can. Each person attempts to move in the direction where the most grain lies. Each time tick, each person eats a certain amount of grain. This amount is called their metabolism. People also have a life expectancy. When their lifespan runs out, or they run out of grain, they die and produce a single offspring. The offspring has a random metabolism and a random amount of grain, ranging from the poorest person's amount of grain to the richest person's amount of grain. (There is no inheritance of wealth.)
To observe the equity (or the inequity) of the distribution of wealth, a graphical tool called the Lorenz curve is utilized. We rank the population by their wealth and then plot the percentage of the population that owns each percentage of the wealth (e.g. 30% of the wealth is owned by 50% of the population). Hence the ranges on both axes are from 0% to 100%.
Another way to understand the Lorenz curve is to imagine that there are 100 dollars of wealth available in a society of 100 people. Each individual is 1% of the population and each dollar is 1% of the wealth. Rank the individuals in order of their wealth from greatest to least: the poorest individual would have the lowest ranking of 1 and so forth. Then plot the proportion of the rank of an individual on the y-axis and the portion of wealth owned by this particular individual and all the individuals with lower rankings on the x-axis. For example, individual Y with a ranking of 20 (20th poorest in society) would have a percentage ranking of 20% in a society of 100 people (or 100 rankings) -- this is the point on the y-axis. The corresponding plot on the x-axis is the proportion of the wealth that this individual with ranking 20 owns along with the wealth owned by the all the individuals with lower rankings (from rankings 1 to 19). A straight line with a 45 degree incline at the origin (or slope of 1) is a Lorenz curve that represents perfect equality -- everyone holds an equal part of the available wealth. On the other hand, should only one family or one individual hold all of the wealth in the population (i.e. perfect inequity), then the Lorenz curve will be a backwards "L" where 100% of the wealth is owned by the last percentage proportion of the population. In practice, the Lorenz curve actually falls somewhere between the straight 45 degree line and the backwards "L".
For a numerical measurement of the inequity in the distribution of wealth, the Gini index (or Gini coefficient) is derived from the Lorenz curve. To calculate the Gini index, find the area between the 45 degree line of perfect equality and the Lorenz curve. Divide this quantity by the total area under the 45 degree line of perfect equality (this number is always 0.5 -- the area of 45-45-90 triangle with sides of length 1). If the Lorenz curve is the 45 degree line then the Gini index would be 0; there is no area between the Lorenz curve and the 45 degree line. If, however, the Lorenz curve is a backwards "L", then the Gini-Index would be 1 -- the area between the Lorenz curve and the 45 degree line is 0.5; this quantity divided by 0.5 is 1. Hence, equality in the distribution of wealth is measured on a scale of 0 to 1 -- more inequity as one travels up the scale. Another way to understand (and equivalently compute) the Gini index, without reference to the Lorenz curve, is to think of it as the mean difference in wealth between all possible pairs of people in the population, expressed as a proportion of the average wealth (see Deltas, 2003 for more).
## HOW TO USE IT
The PERCENT-BEST-LAND slider determines the initial density of patches that are seeded with the maximum amount of grain. This maximum is adjustable via the MAX-GRAIN variable in the SETUP procedure in the procedures window. The GRAIN-GROWTH-INTERVAL slider determines how often grain grows. The NUM-GRAIN-GROWN slider sets how much grain is grown each time GRAIN-GROWTH-INTERVAL allows grain to be grown.
The NUM-PEOPLE slider determines the initial number of people. LIFE-EXPECTANCY-MIN is the shortest number of ticks that a person can possibly live. LIFE-EXPECTANCY-MAX is the longest number of ticks that a person can possibly live. The METABOLISM-MAX slider sets the highest possible amount of grain that a person could eat per clock tick. The MAX-VISION slider is the furthest possible distance that any person could see.
GO starts the simulation. The TIME ELAPSED monitor shows the total number of clock ticks since the last setup. The CLASS PLOT shows a line plot of the number of people in each class over time. The CLASS HISTOGRAM shows the same information in the form of a histogram. The LORENZ CURVE plot shows the Lorenz curve of the population at a particular time as well as the 45 degree line of equality. The GINI-INDEX V. TIME plot shows the Gini index at the time that the Lorenz curve is drawn. The LORENZ CURVE and the GINI-INDEX V. TIME plots are updated every 5 passes through the GO procedure.
## THINGS TO NOTICE
Notice the distribution of wealth. Are the classes equal?
This model usually demonstrates Pareto's Law, in which most of the people are poor, fewer are middle class, and very few are rich. Why does this happen?
Do poor families seem to stay poor? What about the rich and the middle class people?
Watch the CLASS PLOT to see how long it takes for the classes to reach stable values.
As time passes, does the distribution get more equalized or more skewed? (Hint: observe the Gini index plot.)
Try to find resources from the U.S. Government Census Bureau for the U.S.' Gini coefficient. Are the Gini coefficients that you calculate from the model comparable to those of the Census Bureau? Why or why not?
Is there a trend in the plotting of the Gini index with respect to time? Does the plot oscillate? Or does it stabilize to a certain number?
## THINGS TO TRY
Are there any settings that do not result in a demonstration of Pareto's Law?
Play with the NUM-GRAIN-GROWN slider, and see how this affects the distribution of wealth.
How much does the LIFE-EXPECTANCY-MAX matter?
Change the value of the MAX-GRAIN variable (in the SETUP procedure in the procedures tab). Do outcomes differ?
Experiment with the PERCENT-BEST-LAND and NUM-PEOPLE sliders. How do these affect the outcome of the distribution of wealth?
Try having all the people start in one location. See what happens.
Try setting everyone's initial wealth as being equal. Does the initial endowment of an individual still arrive at an unequal distribution in wealth? Is it less so when setting random initial wealth for each individual?
Try setting all the individual's wealth and vision to being equal. Do you still arrive at an unequal distribution of wealth? Is it more equal in the measure of the Gini index than with random endowments of vision?
## EXTENDING THE MODEL
Have each newborn inherit a percentage of the wealth of its parent.
Add a switch or slider which has the patches grow back all or a percentage of their grain capacity, rather than just one unit of grain.
Allow the grain to give an advantage or disadvantage to its carrier, such as every time some grain is eaten or harvested, pollution is created.
Would this model be the same if the wealth were randomly distributed (as opposed to a gradient)? Try different landscapes, making SETUP buttons for each new landscape.
Try allowing metabolism or vision or another characteristic to be inherited. Will we see any sort of evolution? Will the "fittest" survive?
Try adding in seasons into the model. That is to say have the grain grow better in a section of the landscape during certain times and worse at others.
How could you change the model to achieve wealth equality?
The way the procedures are set up now, one person will sometimes follow another. You can see this by setting the number of people relatively low, such as 50 or 100, and having a long life expectancy. Why does this phenomenon happen? Try adding code to prevent this from occurring. (HINT: When and how do people check to see which direction they should move in?)
## NETLOGO FEATURES
Examine how the landscape of color is created -- note the use of the "scale-color" reporter. Each patch is given a value, and "scale-color" reports a color for each patch that is scaled according to its value.
Note the use of lists in drawing the Lorenz Curve and computing the Gini index.
## CREDITS AND REFERENCES
This model is based on a model described in Epstein, J. & Axtell R. (1996). Growing Artificial Societies: Social Science from the Bottom Up. Washington, DC: Brookings Institution Press.
For an explanation of Pareto's Law, see http://www.xrefer.com/entry/445978.
For more on the calculation of the Gini index see:
Deltas, George (2003). The Small-Sample Bias of the Gini Coefficient: Results and Implications for Empirical Research. The Review of Economics and Statistics, February 2003, 85(1): 226-234.
In particular, note that if one is calculating the Gini index of a sample for the purpose of estimating the value for a larger population, a small correction factor to the method used here may be needed for small samples.
## HOW TO CITE
If you mention this model in an academic publication, we ask that you include these citations for the model itself and for the NetLogo software:
- Wilensky, U. (1998). NetLogo Wealth Distribution model. http://ccl.northwestern.edu/netlogo/models/WealthDistribution. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
- Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
In other publications, please use:
- Copyright 1998 Uri Wilensky. All rights reserved. See http://ccl.northwestern.edu/netlogo/models/WealthDistribution for terms of use.
## COPYRIGHT NOTICE
Copyright 1998 Uri Wilensky. All rights reserved.
Permission to use, modify or redistribute this model is hereby granted, provided that both of the following requirements are followed:
a) this copyright notice is included.
b) this model will not be redistributed for profit without permission from Uri Wilensky. Contact Uri Wilensky for appropriate licenses for redistribution for profit.
This model was created as part of the project: CONNECTED MATHEMATICS: MAKING SENSE OF COMPLEX PHENOMENA THROUGH BUILDING OBJECT-BASED PARALLEL MODELS (OBPML). The project gratefully acknowledges the support of the National Science Foundation (Applications of Advanced Technologies Program) -- grant numbers RED #9552950 and REC #9632612.
This model was converted to NetLogo as part of the projects: PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN CLASSROOMS and/or INTEGRATED SIMULATION AND MODELING ENVIRONMENT. The project gratefully acknowledges the support of the National Science Foundation (REPP & ROLE programs) -- grant numbers REC #9814682 and REC-0126227. Converted from StarLogoT to NetLogo, 2001.
@#$#@#$#@
default
true
0
Polygon -7500403 true true 150 5 40 250 150 205 260 250
airplane
true
0
Polygon -7500403 true true 150 0 135 15 120 60 120 105 15 165 15 195 120 180 135 240 105 270 120 285 150 270 180 285 210 270 165 240 180 180 285 195 285 165 180 105 180 60 165 15
arrow
true
0
Polygon -7500403 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150
box
false
0
Polygon -7500403 true true 150 285 285 225 285 75 150 135
Polygon -7500403 true true 150 135 15 75 150 15 285 75
Polygon -7500403 true true 15 75 15 225 150 285 150 135
Line -16777216 false 150 285 150 135
Line -16777216 false 150 135 15 75
Line -16777216 false 150 135 285 75
bug
true
0
Circle -7500403 true true 96 182 108
Circle -7500403 true true 110 127 80
Circle -7500403 true true 110 75 80
Line -7500403 true 150 100 80 30
Line -7500403 true 150 100 220 30
butterfly
true
0
Polygon -7500403 true true 150 165 209 199 225 225 225 255 195 270 165 255 150 240
Polygon -7500403 true true 150 165 89 198 75 225 75 255 105 270 135 255 150 240
Polygon -7500403 true true 139 148 100 105 55 90 25 90 10 105 10 135 25 180 40 195 85 194 139 163
Polygon -7500403 true true 162 150 200 105 245 90 275 90 290 105 290 135 275 180 260 195 215 195 162 165
Polygon -16777216 true false 150 255 135 225 120 150 135 120 150 105 165 120 180 150 165 225
Circle -16777216 true false 135 90 30
Line -16777216 false 150 105 195 60
Line -16777216 false 150 105 105 60
car
false
0
Polygon -7500403 true true 300 180 279 164 261 144 240 135 226 132 213 106 203 84 185 63 159 50 135 50 75 60 0 150 0 165 0 225 300 225 300 180
Circle -16777216 true false 180 180 90
Circle -16777216 true false 30 180 90
Polygon -16777216 true false 162 80 132 78 134 135 209 135 194 105 189 96 180 89
Circle -7500403 true true 47 195 58
Circle -7500403 true true 195 195 58
circle
false
0
Circle -7500403 true true 0 0 300
circle 2
false
0
Circle -7500403 true true 0 0 300
Circle -16777216 true false 30 30 240
cow
false
0
Polygon -7500403 true true 200 193 197 249 179 249 177 196 166 187 140 189 93 191 78 179 72 211 49 209 48 181 37 149 25 120 25 89 45 72 103 84 179 75 198 76 252 64 272 81 293 103 285 121 255 121 242 118 224 167
Polygon -7500403 true true 73 210 86 251 62 249 48 208
Polygon -7500403 true true 25 114 16 195 9 204 23 213 25 200 39 123
cylinder
false
0
Circle -7500403 true true 0 0 300
dot
false
0
Circle -7500403 true true 90 90 120
face happy
false
0
Circle -7500403 true true 8 8 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Polygon -16777216 true false 150 255 90 239 62 213 47 191 67 179 90 203 109 218 150 225 192 218 210 203 227 181 251 194 236 217 212 240
face neutral
false
0
Circle -7500403 true true 8 7 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Rectangle -16777216 true false 60 195 240 225
face sad
false
0
Circle -7500403 true true 8 8 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Polygon -16777216 true false 150 168 90 184 62 210 47 232 67 244 90 220 109 205 150 198 192 205 210 220 227 242 251 229 236 206 212 183
fish
false
0
Polygon -1 true false 44 131 21 87 15 86 0 120 15 150 0 180 13 214 20 212 45 166
Polygon -1 true false 135 195 119 235 95 218 76 210 46 204 60 165
Polygon -1 true false 75 45 83 77 71 103 86 114 166 78 135 60
Polygon -7500403 true true 30 136 151 77 226 81 280 119 292 146 292 160 287 170 270 195 195 210 151 212 30 166
Circle -16777216 true false 215 106 30
flag
false
0
Rectangle -7500403 true true 60 15 75 300
Polygon -7500403 true true 90 150 270 90 90 30
Line -7500403 true 75 135 90 135
Line -7500403 true 75 45 90 45
flower
false
0
Polygon -10899396 true false 135 120 165 165 180 210 180 240 150 300 165 300 195 240 195 195 165 135
Circle -7500403 true true 85 132 38
Circle -7500403 true true 130 147 38
Circle -7500403 true true 192 85 38
Circle -7500403 true true 85 40 38
Circle -7500403 true true 177 40 38
Circle -7500403 true true 177 132 38
Circle -7500403 true true 70 85 38
Circle -7500403 true true 130 25 38
Circle -7500403 true true 96 51 108
Circle -16777216 true false 113 68 74
Polygon -10899396 true false 189 233 219 188 249 173 279 188 234 218
Polygon -10899396 true false 180 255 150 210 105 210 75 240 135 240
house
false
0
Rectangle -7500403 true true 45 120 255 285
Rectangle -16777216 true false 120 210 180 285
Polygon -7500403 true true 15 120 150 15 285 120
Line -16777216 false 30 120 270 120
leaf
false
0
Polygon -7500403 true true 150 210 135 195 120 210 60 210 30 195 60 180 60 165 15 135 30 120 15 105 40 104 45 90 60 90 90 105 105 120 120 120 105 60 120 60 135 30 150 15 165 30 180 60 195 60 180 120 195 120 210 105 240 90 255 90 263 104 285 105 270 120 285 135 240 165 240 180 270 195 240 210 180 210 165 195
Polygon -7500403 true true 135 195 135 240 120 255 105 255 105 285 135 285 165 240 165 195
line
true
0
Line -7500403 true 150 0 150 300
line half
true
0
Line -7500403 true 150 0 150 150
pentagon
false
0
Polygon -7500403 true true 150 15 15 120 60 285 240 285 285 120
person
false
0
Circle -7500403 true true 110 5 80
Polygon -7500403 true true 105 90 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 195 90
Rectangle -7500403 true true 127 79 172 94
Polygon -7500403 true true 195 90 240 150 225 180 165 105
Polygon -7500403 true true 105 90 60 150 75 180 135 105
plant
false
0
Rectangle -7500403 true true 135 90 165 300
Polygon -7500403 true true 135 255 90 210 45 195 75 255 135 285
Polygon -7500403 true true 165 255 210 210 255 195 225 255 165 285
Polygon -7500403 true true 135 180 90 135 45 120 75 180 135 210
Polygon -7500403 true true 165 180 165 210 225 180 255 120 210 135
Polygon -7500403 true true 135 105 90 60 45 45 75 105 135 135
Polygon -7500403 true true 165 105 165 135 225 105 255 45 210 60
Polygon -7500403 true true 135 90 120 45 150 15 180 45 165 90
square
false
0
Rectangle -7500403 true true 30 30 270 270
square 2
false
0
Rectangle -7500403 true true 30 30 270 270
Rectangle -16777216 true false 60 60 240 240
star
false
0
Polygon -7500403 true true 151 1 185 108 298 108 207 175 242 282 151 216 59 282 94 175 3 108 116 108
target
false
0
Circle -7500403 true true 0 0 300
Circle -16777216 true false 30 30 240
Circle -7500403 true true 60 60 180
Circle -16777216 true false 90 90 120
Circle -7500403 true true 120 120 60
tree
false
0
Circle -7500403 true true 118 3 94
Rectangle -6459832 true false 120 195 180 300
Circle -7500403 true true 65 21 108
Circle -7500403 true true 116 41 127
Circle -7500403 true true 45 90 120
Circle -7500403 true true 104 74 152
triangle
false
0
Polygon -7500403 true true 150 30 15 255 285 255
triangle 2
false
0
Polygon -7500403 true true 150 30 15 255 285 255
Polygon -16777216 true false 151 99 225 223 75 224
truck
false
0
Rectangle -7500403 true true 4 45 195 187
Polygon -7500403 true true 296 193 296 150 259 134 244 104 208 104 207 194
Rectangle -1 true false 195 60 195 105
Polygon -16777216 true false 238 112 252 141 219 141 218 112
Circle -16777216 true false 234 174 42
Rectangle -7500403 true true 181 185 214 194
Circle -16777216 true false 144 174 42
Circle -16777216 true false 24 174 42
Circle -7500403 false true 24 174 42
Circle -7500403 false true 144 174 42
Circle -7500403 false true 234 174 42
turtle
true
0
Polygon -10899396 true false 215 204 240 233 246 254 228 266 215 252 193 210
Polygon -10899396 true false 195 90 225 75 245 75 260 89 269 108 261 124 240 105 225 105 210 105
Polygon -10899396 true false 105 90 75 75 55 75 40 89 31 108 39 124 60 105 75 105 90 105
Polygon -10899396 true false 132 85 134 64 107 51 108 17 150 2 192 18 192 52 169 65 172 87
Polygon -10899396 true false 85 204 60 233 54 254 72 266 85 252 107 210
Polygon -7500403 true true 119 75 179 75 209 101 224 135 220 225 175 261 128 261 81 224 74 135 88 99
wheel
false
0
Circle -7500403 true true 3 3 294
Circle -16777216 true false 30 30 240
Line -7500403 true 150 285 150 15
Line -7500403 true 15 150 285 150
Circle -7500403 true true 120 120 60
Line -7500403 true 216 40 79 269
Line -7500403 true 40 84 269 221
Line -7500403 true 40 216 269 79
Line -7500403 true 84 40 221 269
x
false
0
Polygon -7500403 true true 270 75 225 30 30 225 75 270
Polygon -7500403 true true 30 75 75 30 270 225 225 270
@#$#@#$#@
NetLogo 5.0
@#$#@#$#@
@#$#@#$#@
@#$#@#$#@
setupgofile-open (word "socnet." (int timer) ".txt")
ask turtles
[write-to-file]
file-closecount turtles with [length my-clients >= 1]count turtles with [length my-obligations >= 1]count turtles with [prestigiousness = "high"]count turtles with [prestigiousness = "mid"]count turtles with [prestigiousness = "low"]count turtles with [global-class = "low"]count turtles with [global-class = "mid"]count turtles with [global-class = "high"]count turtles with [color = red]count turtles with [color = green]count turtles with [color = blue]setupgoexport-all-plots "plots.csv"
file-open (word "socnet." (int timer) ".txt")
ask turtles
[write-to-file]
file-closecount turtles with [length my-clients >= 1]count turtles with [length my-obligations >= 1]count turtles with [prestigiousness = "high"]count turtles with [prestigiousness = "mid"]count turtles with [prestigiousness = "low"]count turtles with [global-class = "low"]count turtles with [global-class = "mid"]count turtles with [global-class = "high"]count turtles with [color = red]count turtles with [color = green]count turtles with [color = blue]setupgofile-open (word "socnet." (int timer) ".txt")
ask turtles
[write-to-file]
file-closecount turtles with [length my-clients >= 1]count turtles with [length my-obligations >= 1]count turtles with [prestigiousness = "high"]count turtles with [prestigiousness = "mid"]count turtles with [prestigiousness = "low"]count turtles with [global-class = "low"]count turtles with [global-class = "mid"]count turtles with [global-class = "high"]count turtles with [color = red]count turtles with [color = green]count turtles with [color = blue]setupgofile-open (word "socnet." (int timer) ".txt")
ask turtles
[write-to-file]
file-closecount turtles with [length my-clients >= 1]count turtles with [length my-obligations >= 1]count turtles with [prestigiousness = "high"]count turtles with [prestigiousness = "mid"]count turtles with [prestigiousness = "low"]count turtles with [global-class = "low"]count turtles with [global-class = "mid"]count turtles with [global-class = "high"]count turtles with [color = red]count turtles with [color = green]count turtles with [color = blue]
@#$#@#$#@
@#$#@#$#@
default
0.0
-0.2 0 1.0 0.0
0.0 1 1.0 0.0
0.2 0 1.0 0.0
link direction
true
0
Line -7500403 true 150 150 30 225
Line -7500403 true 150 150 270 225
@#$#@#$#@
0
@#$#@#$#@