Emperor's Dilemma
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
The title of this model is inspired by the popular story by Hans Christian Anderson, in which two weavers lead an entire kingdom by to act as though their emperor is wearing beautiful clothes - although the emperor is, in fact, naked. This occurs through the self-reinforcing dynamics of social pressure, in which individuals who don't "see" the clothes act as if they do. Because these "false believers" are concerned about being exposed, they take the process one step further, and become "false encforcers" -- not only acting as if they see the clothes, but also pressuring their peers to adopt the false belief.
Taken together, this model demonstrates how an unpopular norm can spread through a population even when only a small fraction of the population genuinely supports the behavior.
HOW IT WORKS
The "true believers" and "true disbelievers" are agents whose public behavior is consistent with their prviate beliefs, while "false believers" and "false disbelievers" publicly display behavior that is not consistent with their private beliefs. Similary, "true enforcers" and "false enforcers" are agents who enforce a norm that either does (true) or does not (false) match their prviate belief.
This model is quite complex, and we encourage you to reference the publication by Centola, Willer, and Macy (2005) for more a more detailed theoretical discussion.
When the model is initialized, a population is comprised of "true believers" (yellow) and "true disbelievers" (green). Each agent can be observed to either comply (or not comply) with a norm as well as to enforce (or not enforce) that norm.
If they can observe a large number of agents who do not comply, "true believers" will become "true enforcers,"placing social pressure on others to comply with a norm. When "true disbelievers" observe enforcing agents, they may become a "false believer," so that they publicly comply with a norm, even though they don't privately support the norm - if their belief is weak enough and/or the social pressure is strong enough. With sufficient social pressure, a "false believer" will become a "false enforcer," so that they not only publicly comply but also enforce a norm that they privately don't support.
HOW TO USE IT
SETUP sets up the model.
GO runs the model for the number of ROUNDS? specified.
PERCENT-BELIEVERS is a value between 0 and 1 that determines the number of "true believers" in the population when the model is SETUP.
The CLUSTERING toggle determines whether the initial "true believers" are all clusterd together geographically (when CLUSTERING is set to TRUE) or scattered randomly (when CLUSTERING is set to FALSE).
The EMBEDDEDNESS toggle determines whether agents react only to the behavior of their imemdiate neighbors (when EMBEDDEDNESS is set to TRUE) or whether they react to the behavior of the entire population (when EMBEDDEDNESS is set to FALSE).
MAX-STRENGTH-FOR-DISBLIEVERS determines the maximum "strength of belief" for a disbeliever. The strength of a belief determines how many neighbors must enforce a norm contrary to an agent's belief before that agent will start complying with the contrary norm. An agent with a stronger belief will be more resistant to social influence, whil ean agent with a weaker belief will be less resistant to social influence.
MEAN-STRENGTH-FOR-DISBELIEVERS is a value between 0 and 1 that determines the average "strength of belief" for disbelievers. Generally, this would be equal to 1/2 the MAX-STRENGTH-FOR-DISBELIEVERS since individual belief is assumed to follow a uniform distribution.
The COST variable represents the additional cost required to enforce a norm, in contrast with compliance, which is based only on an agent's belief strength and the social pressure induced by enforcing neighbors.
THINGS TO NOTICE
(suggested things for the user to notice while running the model)
THINGS TO TRY
(suggested things for the user to try to do (move sliders, switches, etc.) with the model)
EXTENDING THE MODEL
Try adding more complex network structure. How does behavior change as global ties are gradually added to a local interaction model?
What happens if false enforcers can eventually become true enforceres?
REFERENCES
Centola, D., Willer, R., & Macy, M. (2005). The emperor’s dilemma: A computational model of self-enforcing norms. American Journal of Sociology, 110(4), 1009-1040.
RELATED MODELS
See the "Complex Contagions" model in this package.
Comments and Questions
globals [ believers fraction compliers non-compliers true-enforcers false-enforcers non-enforcers x-counter y-counter rounds repetition fraction-print ] patches-own [ done? total belief ; variable that determines whether an agent believes (belief = 1) or not (belief = -1) compliance ; variable that determines whether an agent believes (1) or not (-1) strength ; variable that determines the strength of an agent's compliance conviction ; enforcement ; variable that determines whether an agent enforces compliance (1), deviance (-1) need-for-enforcement ; variable that determines the need for enforcement for every agent believer disbelievers false-believers false-disbelievers ] to setup clear-all set believers (Percent-Believers / 100) * count patches ifelse clustering [setup-with-clustering] [setup-without-clustering] determine-starting-values mark-patches ask patches [recolor-patches-after-setup] end to setup-with-clustering ask patches [set belief 0] if believers > 0 [ ask one-of patches with [belief = 0] [set belief 1] ] if believers > 0 [cluster] end to cluster ask patches [set total (sum [belief] of neighbors)] ask one-of patches with [belief = 0] [ if total > 0 [set belief 1] ] if sum [belief] of patches < believers [repeat 1 [cluster] ] end to setup-without-clustering ask patches [set belief 0] repeat believers [ ask one-of patches with [belief = 0] [set belief 1] ] end to determine-starting-values ask patches [ ifelse belief = 0 [set belief -1] [set belief 1] ] ask patches [ if belief = 1 [set strength 1] ] strength-determination-for-disbelievers end to strength-determination-for-disbelievers loop [ ask patches with [strength != 1] [set strength random-float max-strength-for-disbelievers] If precision (mean [strength] of patches with [strength != 1]) 5 = mean-strength-for-disbelievers [stop] ] end ; end of code for setup process to go if rounds = rounds? [stop] ask patches [set done? false] ifelse embededdness [go-with-embededdness] [go-without-embededdness] set rounds rounds + 1 mark-patches do-plots end to go-with-embededdness ask patches [ ifelse ((((-1 * belief) / 8) * (sum [enforcement] of neighbors)) > strength) ; procedure to determine whether to comply or not [set compliance (-1 * belief)] [set compliance belief] set need-for-enforcement ((1 - ((belief / 8) * (sum [compliance] of neighbors))) / 2) ; procedure to determine need for enforcement set enforcement 0 ; procedure to determine enforcement if ((strength * need-for-enforcement) > costs) and (belief = compliance) [set enforcement belief] if ((((-1 * belief) / 8) * (sum [enforcement] of neighbors)) > (strength + costs)) and (belief != compliance) [set enforcement -1 * belief] recolor-patches display ] end to go-without-embededdness ask patches [ ifelse (((-1 * belief) / 999) * (sum [enforcement] of patches)) > strength [set compliance (-1 * belief)] [set compliance belief] set need-for-enforcement ((1 - ((belief / 999) * (sum [compliance] of patches))) / 2) set enforcement 0 if ((strength * need-for-enforcement) > costs) and (belief = compliance) [set enforcement belief] if ((((-1 * belief) / 999) * (sum [enforcement] of patches)) > (strength + costs)) and (belief != compliance) [set enforcement (-1 * belief)] recolor-patches display ] end to mark-patches ask patches [ ifelse (belief = 1) [set believer 1] [set believer 0] ifelse (belief = -1) [set disbelievers 1] [set disbelievers 0] ifelse (belief = -1) and (enforcement = 1) [set false-believers 1] [set false-believers 0] ] set fraction (sum [false-believers] of patches)/(sum [disbelievers] of patches) set compliers count patches with [compliance = 1] set non-compliers count patches with [compliance = -1] set true-enforcers count patches with [enforcement = belief] set false-enforcers count patches with [(enforcement != belief) and (enforcement != 0)] set non-enforcers count patches with [enforcement = 0] display end to recolor-patches-after-setup if belief = 1 [set pcolor yellow] if belief = -1 [set pcolor green] end to recolor-patches ; if belief = -1 and compliance = -1 ; true disbeliever [ set pcolor green ] if belief = 1 and compliance = 1 ; true believer [set pcolor yellow ] if compliance = 1 and belief = -1 ; false believer [set pcolor blue] if compliance = -1 and belief = 1 ; false disbeliever [set pcolor black] if enforcement = 1 and belief = -1 ; false enforcer [set pcolor red] if enforcement = 1 and belief = 1 ; true enforcer [set pcolor white] end to do-plots set-current-plot "Fraction of Disbelievers Encforcing the Norm" plot fraction end
There are 2 versions of this model.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.