Simple Shibboleth
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This is a basic modelling interation of the Biblical story of Shibboleth. The Book of Judges states that:
"And the Gileadites took the passages of Jordan before the Ephraimites: and it was so, that when those Ephraimites which were escaped said, Let me go over; that the men of Gilead said unto him, Art thou an Ephraimite? If he said, Nay; Then said they unto him, Say now Shibboleth: and he said Sibboleth: for he could not frame to pronounce it right. Then they took him, and slew him at the passages of Jordan: and there fell at that time of the Ephraimites forty and two thousand." (12:5–6 KJV)
Here we model the evolutionary consequences, described in terms of fitness, for each of two populations, which are designed to represent the Gileadites and Ephraimites, respectively, described in the Biblical story. This is done by creating a digital landscape in which one population of agents, mimics, attempt to cross a river to a safe space populated by non-mimics. The mimics are questioned by another agent, which functions as a guardian at the river, who "asks" the mimics to prove that they are not mimics by use of a theoretical signal, which is akin to the word "Shibboleth" described in Judges. Mimics who pass the test are allowed in, while those who do not, and who are caught out as mimics by the guardian, must pay a cost.
Our goal is to show how evolutionary changes at the population level — quantified in this model in terms of a "fitness score" — occur depending on the variable settings designed in the model.
HOW IT WORKS
The model is designed to show how different changes, in terms of population fitness, can occur depending on how strict the relationship between the guardian agents and mimic agents is. In its most extreme form — akin to that of the Biblical story of Shibboleth — the guardian will strictly kill any agent that does not pass the mimicry test, which also has a variable level of difficulty. Or, at the other extreme, there may be no consequence to being caught (or there may be a very low chance of being caught at all.)
The key is, once it is understood what the sliders represent and their implications for agent behavior, to think about the consequences for both classes of agents (ie, the mimics and non-mimics), as well as the agent-population as a whole, of each of the variables of interest.
One important idea, however, is that where mimicry has little to no impact on fitness, there will be no competition to be good at it, and so it won't matter if everyone has a high score, and nearly everyone can pass the test. Yet where mimicry has significant fitness implications, there will be wider variation in the population in who is good at it. Think about this in reference to the Biblical story: if the guardian chooses a simple word, rather than Shibboleth, which everyone can pronounce easily, regardless of background, then pronunciation of the word will not have significant fitness implications. Yet asking someone to pronounce a difficult word (as Shibboleth, in the context of the story, is meant to be) will both produce wide variation in results on the part of mimics, and will have profound implications for the speaker's fitness: if they answer incorrectly, they are killed.
HOW TO USE IT
"Setup" creates 50 mimic turtles, colored green, 50 non-mimic turtles, colored blue, and 1 guardian turtle, colored red. The 50 mimics spawn in the yellow patch region randomly, and are programmed to try to get to the brown territory via the central patches flanked by river (blue) patches. When mimics come in range of the guardian on the brown patch, he runs a detection test on them, which if they pass they can proceed to the green “survivor” territory.
On spawning, non-mimic turtles are assigned a random fitness score of 1-100 (in integers), and the mean fitness of all turtles on green patches is displayed in the “average survivor fitness” graph at the bottom left of the interface screen.
Mimics, on the other hand, are assigned a random fitness score that ranges 1-100, but is affected by the “mimicry-modifier” (1-100) slider on the interface. Total fitness can’t go higher than 100, but the mimicry-modifier determines another attribute, mimicry. The slider affects how high mimicry scores can be, as well as the relative weight mimicry has on fitness. In effect, this means that the lower the mimicry-modifier setting, the higher the likelihood that all mimics will have a very high mimicry score, but mimicry will also have a commensurately lower impact on mimic fitness. For example, where mimicry-modifier = 1, all mimics will have a mimicry score of 100, but fitness will vary 1-100 in an entirely independent manner to mimicry. If, however, the mimicry-modifier is set to 100, mimics will have a random mimicry score of any integer between 1 and 100, and mimicry will equal fitness.
The remaining two sliders, cost and detection-risk, are relevant for the guardian interactions with the mimics. Detection-risk affects the likelihood the guardian will detect a mimic, and is calculated by the quality of the mimic vs the total possible mimicry score. This is again affected by the mimicry-modifier, and mimics are “detected” when:
((mimicry / mimicry-modifier) * 100) < detection-risk
The cost is simply the fitness cost a mimic pays if he is caught. This varies from 0-100, and if a mimic's fitness drops below 1, he dies. Where the two sides of the equation are equal, there is a 50-50 chance the mimic will be caught.
The "count turtles" monitor keeps track of how many turtles overall survive during the process, which ends automatically when no mimic agents are left in the yellow patch–area. The two graphical monitors, average mimic fitness, and average survivor fitness, track the average fitness of the total number of surviving mimics, and the total average fitness of all turtles excluding the guardian, respectively.
The show-fitness switch toggles between displaying mimic mimicry scores and displaying mimic fitness scores.
THINGS TO NOTICE
Try to make a note of, and to predict, how the sliders affect the resulting fitness scores, both in the mimic and the overall population. Can you think of realistic settings where similar tests are made?
THINGS TO TRY
Try to predict how the different sliders settings will affect fitness when the model finishes running. Are the results consistent? What settings have more or less variable fitness results, and can you explain those results?
CREDITS AND REFERENCES
Designed by Jonathan R Goodman and Robert A Foley, Leverhulme Centre for Human Evolutionary Studies, University of Cambridge
Comments and Questions
turtles-own [fitness mimicry] breed [bluebeards bluebeard] breed [greenbeards greenbeard] breed [guardians guardian] to setup clear-all setup-patches setup-turtles reset-ticks end to setup-patches ask patches with [ pycor >= -16 and pycor <= -1 and pxcor >= -16 and pxcor <= 16 ] [ set pcolor 44 ] ask patches with [ pycor <= 16 and pycor >= 2 and pxcor >= -16 and pxcor <= 16 ] [ set pcolor 33 ] ask patches with [ pycor >= 0 and pycor <= 1 ] [ set pcolor blue ] ask patches at-points [[0 0] [0 1] [-1 0] [-1 1] [1 0] [1 1]] [set pcolor brown ] end to setup-turtles set-default-shape turtles "person" create-bluebeards 50 [ move-to one-of patches with [ pcolor = 44 ] set color 104 set mimicry random (mimicry-modifier) + 1 set fitness (random (100 - mimicry-modifier)) + mimicry ] create-greenbeards 50 [ move-to one-of patches with [ pcolor = 33 ] set color green set fitness random 100 + 1 ] create-guardians 1 [ move-to patch 0 0 set color red ] end to go if count bluebeards-on patches with [ pcolor = 44 ] = 0 and count bluebeards-on patches with [ pcolor = brown ] = 0 and count bluebeards-on patches with [ pcolor = blue ] = 0 [ stop ] move-bluebeards move-greenbeards detect-mimics tick end to move-bluebeards ask bluebeards [ seek-safety avoid-water check-death blend-in forward 1 ifelse show-fitness? [ set label fitness ] [ set label round ((mimicry / mimicry-modifier) * 100) ] ] end to move-greenbeards ask greenbeards [ facexy random-xcor random-ycor forward 1 facexy random-xcor 16 forward 1.1 ] end to avoid-water if [pcolor] of patch-here = blue or [pcolor] of patch-here = 44 [ let target-patch patch-right-and-ahead 0 1 if target-patch != nobody and [pcolor] of target-patch = blue [ move-to patch 0 -7 ] ] end to seek-safety if [pcolor] of patch-here = 44 [ let safety-patch patch 10 10 if safety-patch != nobody and [pcolor] of safety-patch = 33 [ facexy random-pxcor 16 ] ] end to check-death if fitness <= 0 [ die ] end to blend-in if [pcolor] of patch-here = 33 [ facexy random-xcor random-ycor forward 1 facexy random-xcor 12 forward 1.1 ] end to detect-mimics ask guardians [ if count turtles-at 1 0 != nobody [ ask bluebeards-at 1 0 [ if ((mimicry / mimicry-modifier) * 100) < detection-risk [ set fitness fitness - cost ] if ((mimicry / mimicry-modifier) * 100) = detection-risk [ if random 2 = 0 [ set fitness fitness - cost ] ] ] ] if count turtles-at 0 0 != nobody [ ask bluebeards-at 0 0 [ if ((mimicry / mimicry-modifier) * 100) < detection-risk [ set fitness fitness - cost ] if ((mimicry / mimicry-modifier) * 100) = detection-risk [ if random 2 = 0 [ set fitness fitness - cost ] ] ] ] if count turtles-at -1 0 != nobody [ ask bluebeards-at -1 0 [ if ((mimicry / mimicry-modifier) * 100) < detection-risk [ set fitness fitness - cost ] if ((mimicry / mimicry-modifier) * 100) = detection-risk [ if random 2 = 0 [ set fitness fitness - cost ] ] ] ] ] end
There is only one version of this model, created about 5 years ago by Jonathan R Goodman.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Simple Shibboleth.png | preview | Preview for 'Simple Shibboleth' | about 5 years ago, by Jonathan R Goodman | Download |
This model does not have any ancestors.
This model does not have any descendants.