# Belief Diffusion

No preview image

Model was written in NetLogo 5.0.4
•
Viewed 447 times
•
Downloaded 33 times
•
Run 0 times

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)

## Comments and Questions

Please start the discussion about this model!
(You'll first need to log in.)

Click to Run Model

;Nov 5, 2012: More effecient statistical outputs. First and last time of maximum truth distance, first and last ;time of convergence, mean truth distance, median truth distance. ;This version of Millian Mingling includes three different kinds of agents, millians, chums, and believers. ;Each breed of agent has a different movement rule. Believers move around randomly, millians seek out people ;they disagree with (according to a search radius set by the vision variable), and chums seek out people ;they already agree with. Agents keep a record of the recent agents they have interacted with, where this ;can be controlled by the maxhistory variable. ;new statistics, one for each breed breed [fact-checkers fact-checker] breed [believers believer] breed [millians millian] breed [chums chum] breed [afact-checkers afact-checker] patches-own [ truthflux ] globals [ truth-list false-list props-to-compare num-of-interacted-agents ; this tracks how many agents interacted num-chum-interacted num-mill-interacted num-believer-interacted num-of-attitudes-changed ; this tracks how many attitudes an agent changed in an interaction num-of-updated-attitude-agents ;this tracks how many agents updated an attitude num-of-decreased-loudness ;tracks how many decreases in loudness there were num-of-increased-loudness ;tracks how many increases in loudness there were avg-num-attitudes-changed ; avg-num-disagreements current-avg-dist-truth ;this avg includes indifference current-avg-dist-others ;this avg includes indifference current-avg-disagree-truth ; this avg ignores indifference current-avg-disagree-others ; this avg ignores indifference current-avg-millian-disagree-truth current-avg-believer-disagree-truth current-avg-chum-disagree-truth current-avg-millian-loudness current-avg-chum-loudness current-avg-believer-loudness my-seed max-truthdist-b max-truthdist-c max-truthdist-m min-truthdist-b min-truthdist-c min-truthdist-m tickof-first-max-truthdist-b tickof-first-max-truthdist-c tickof-first-max-truthdist-m tickof-last-max-truthdist-b tickof-last-max-truthdist-c tickof-last-max-truthdist-m tickof-first-min-truthdist-b tickof-first-min-truthdist-c tickof-first-min-truthdist-m tickof-last-min-truthdist-b tickof-last-min-truthdist-c tickof-last-min-truthdist-m truthdist-b truthdist-c truthdist-m median-truthdist-b median-truthdist-c median-truthdist-m mean-truthdist-b mean-truthdist-c mean-truthdist-m ] turtles-own [ old-attitude-list ; this is a list of attitudes towards propositions new-attitude-list ; this is a list of attitudes towards propositions old-loudness-list ; this is a list of how loudly an agent voices that attitude new-loudness-list ; this is a list of how loudly an agent voices that attitude meet-history ; this is a list of past agents a turtle has met with minglers ; agentset of nearby turtles nearest-mingler ; closest of one of the minglers (that isn't also in the meet-history) ] to setup clear-all ask patches [ set truthflux 0 set pcolor brown] set truthdist-b [ ] set truthdist-c [ ] set truthdist-m [ ] create-believers (num-believers - (num-millians + num-chums)) [ ; create num-believers quantity of believers setxy random-xcor random-ycor set color blue set shape "person" set old-attitude-list [ ] set old-loudness-list [ ] set meet-history [] repeat num-props [ ; create a list of beliefs and a list of loudness degrees that is of size num-props let attitude -1 if believers-facters-opposite-attitude = false[ set attitude (random 3) - 1 ] set old-attitude-list lput attitude old-attitude-list ifelse attitude = 0 [ set old-loudness-list lput 0 old-loudness-list ] [ ifelse set-init-believer-loudness-max = true [ set old-loudness-list lput init-max-believer-loudness old-loudness-list ] [ set old-loudness-list lput (random init-max-believer-loudness) old-loudness-list ] ] ] ] create-millians num-millians [ ; create num-believers quantity of believers setxy random-xcor random-ycor set color violet set shape "person" set old-attitude-list [ ] set old-loudness-list [ ] set meet-history [ ] repeat num-props [ ; create a list of beliefs and a list of loudness degrees that is of size num-props let attitude -1 if believers-facters-opposite-attitude = false[ set attitude (random 3) - 1 ] set old-attitude-list lput attitude old-attitude-list ifelse attitude = 0 [ set old-loudness-list lput 0 old-loudness-list ] [ ifelse set-init-believer-loudness-max = true [ set old-loudness-list lput init-max-believer-loudness old-loudness-list ] [ set old-loudness-list lput (random init-max-believer-loudness) old-loudness-list ] ] ] ] create-chums num-chums [ ; create num-believers quantity of believers setxy random-xcor random-ycor set color 34 set shape "person" set old-attitude-list [ ] set old-loudness-list [ ] set meet-history [ ] repeat num-props [ ; create a list of beliefs and a list of loudness degrees that is of size num-props let attitude -1 if believers-facters-opposite-attitude = false[ set attitude (random 3) - 1 ] set old-attitude-list lput attitude old-attitude-list ifelse attitude = 0 [ set old-loudness-list lput 0 old-loudness-list ] [ ifelse set-init-believer-loudness-max = true [ set old-loudness-list lput init-max-believer-loudness old-loudness-list ] [ set old-loudness-list lput (random init-max-believer-loudness) old-loudness-list ] ] ] ] set truth-list [ ] repeat num-props [ ; create a list of beliefs that is of size num-propos set truth-list lput one-of [1] truth-list ] set false-list [ ] repeat num-props [ set false-list lput one-of [-1] false-list ] create-fact-checkers num-sci [ ; create agents that will be the fact checkers setxy random-xcor random-ycor set color green set shape "tree" set old-attitude-list truth-list set old-loudness-list [] set meet-history [] ;repeat num-props [ ; create a list of loudness degrees that is of size num-props ; set old-loudness-list lput (random max-loudness) old-loudness-list ; fact-checkers have max loudness at start ;] repeat num-props [ ; create a list of loudness degrees that is of size num-props ifelse world-loudness-max = true [ ifelse plus-one-max-world-loudness = true [ set old-loudness-list lput (max-loudness + 1) old-loudness-list] [ set old-loudness-list lput max-loudness old-loudness-list ] ][ set old-loudness-list lput (random (init-max-believer-loudness + 1) ) old-loudness-list ] ] ] create-afact-checkers num-asci [ ; create agents that will be the afact checkers - i.e., those that speak falsehoods setxy random-xcor random-ycor set color red set shape "tree" set old-attitude-list false-list set old-loudness-list [] set meet-history [] ;repeat num-props [ ; create a list of loudness degrees that is of size num-props ; set old-loudness-list lput (random max-loudness) old-loudness-list ; fact-checkers have max loudness at start ;] repeat num-props [ ; create a list of loudness degrees that is of size num-props ifelse world-loudness-max = true [ ifelse plus-one-max-world-loudness = true [ set old-loudness-list lput (max-loudness + 1) old-loudness-list] [ set old-loudness-list lput max-loudness old-loudness-list ] ][ set old-loudness-list lput (random (init-max-believer-loudness + 1) ) old-loudness-list ] ] ] ask turtles[ set new-attitude-list old-attitude-list ;this copies the old list set new-loudness-list old-loudness-list ] ;;ask patches [if pxcor mod 2 = 1 and pycor mod 2 = 0 [set pcolor 1] if pxcor mod 2 = 0 and pycor mod 2 = 1 [set pcolor 1]] reset-ticks end to go set num-of-interacted-agents 0 set num-mill-interacted 0 set num-chum-interacted 0 set num-believer-interacted 0 set num-of-attitudes-changed 0 set num-of-updated-attitude-agents 0 set num-of-decreased-loudness 0 ;tracks how many decreases in loudness there were set num-of-increased-loudness 0 ask turtles [ move ] ask patches with [count turtles-here >= 2] [ ifelse patch-announcement = true [ let props pick-props-to-compare let current-prop one-of props let kate max-one-of turtles-here [item current-prop old-loudness-list] ask turtles-here with [who != [who] of kate] [ interact kate self ] ] [ let kate one-of turtles-here let john one-of turtles-here with [who != [who] of kate] interact kate john update-meet-history kate john ] ] ask turtles [ if (old-attitude-list != new-attitude-list) [ set num-of-updated-attitude-agents num-of-updated-attitude-agents + 1 ] ] ask turtles [ update-attitudes ] update-truthflux statistics tick if num-attitude-groups = 1 and mode-attitude-group = [[1]] [ set median-truthdist-b median truthdist-b set median-truthdist-c median truthdist-c set median-truthdist-m median truthdist-m set mean-truthdist-b mean truthdist-b set mean-truthdist-c mean truthdist-c set mean-truthdist-m mean truthdist-m stop ] end to interact [kate john] let kate-is-auth? false let john-is-auth? false ask kate [ ; find out if kate is a fact-checker if breed = fact-checkers or breed = afact-checkers [ set kate-is-auth? true ] ] ask john [ ; find out if john is a fact-checker if breed = fact-checkers or breed = afact-checkers [ set john-is-auth? true ] ] let props pick-props-to-compare ; we set props to the list of propositions returned by pick-props... while [not empty? props] [ ; while props is nonempty, we compare the attidudes of the turtles towards those props let current-prop first props set props but-first props if kate-is-auth? = false and john-is-auth? = false [ ;if neither agent is a fact-checker or afact-checker ifelse item current-prop [old-attitude-list] of kate != item current-prop [old-attitude-list] of john [;if they disagree if item current-prop [old-loudness-list] of kate > item current-prop [old-loudness-list] of john [;if kate is louder ifelse item current-prop [old-attitude-list] of john = 0 [;if john is at the tipping point ask john [;we ask john to switch to kate's attitude if item current-prop [old-attitude-list] of kate = 0 [user-message (word kate "shouldn't be indifferent if the code's right" )] set new-attitude-list replace-item current-prop new-attitude-list item current-prop [old-attitude-list] of kate ] ][ ask john [ ;else, we ask john to reduce his loudness if it's above 0, else we change his attitude to 0 ifelse item current-prop old-loudness-list = 0 [ set new-attitude-list replace-item current-prop new-attitude-list 0 ] [ set new-loudness-list replace-item current-prop new-loudness-list (item current-prop old-loudness-list - 1) set num-of-decreased-loudness num-of-decreased-loudness + 1 ] ] ] ] if item current-prop [old-loudness-list] of kate < item current-prop [old-loudness-list] of john [ ifelse item current-prop [old-attitude-list] of kate = 0 [ ask kate [ if item current-prop [old-attitude-list] of john = 0 [user-message (word john "shouldn't be indifferent if the code's right" ) ] set new-attitude-list replace-item current-prop new-attitude-list item current-prop [old-attitude-list] of john ] ] [ ask kate [ ifelse item current-prop old-loudness-list = 0 [ set new-attitude-list replace-item current-prop new-attitude-list 0 ] [ set new-loudness-list replace-item current-prop new-loudness-list (item current-prop old-loudness-list - 1) set num-of-decreased-loudness num-of-decreased-loudness + 1 ] ] ] ] ] ;else kate and john agree [ if item current-prop [old-attitude-list] of kate != 0 [ ;since john and kate agree and both aren't fact-checkers, ;we don't need to check that john's attitude is 0 as well ask kate [ if item current-prop old-loudness-list < max-loudness [ set new-loudness-list replace-item current-prop new-loudness-list (item current-prop old-loudness-list + 1) set num-of-increased-loudness num-of-increased-loudness + 1 ] ] ask john [ if item current-prop old-loudness-list < max-loudness [ set new-loudness-list replace-item current-prop new-loudness-list (item current-prop old-loudness-list + 1) set num-of-increased-loudness num-of-increased-loudness + 1 ] ] ] ] ];end of decisions when neither kate nor john are fact-checkers if kate-is-auth? = false and john-is-auth? = true [ ifelse item current-prop [old-attitude-list] of kate != item current-prop [old-attitude-list] of john [ if item current-prop [old-loudness-list] of kate < item current-prop [old-loudness-list] of john [ ifelse item current-prop [old-attitude-list] of kate = 0 [ if item current-prop [old-attitude-list] of john = 0 [user-message (word "john shouldn't be indifferent" ) ] ask kate [ set new-attitude-list replace-item current-prop new-attitude-list item current-prop [old-attitude-list] of john ] ] [ if item current-prop [old-attitude-list] of john = 0 [user-message (word "john shouldn't be indifferent" ) ] ask kate [ ifelse item current-prop old-loudness-list = 0 [ set new-attitude-list replace-item current-prop new-attitude-list 0 ] [ set new-loudness-list replace-item current-prop new-loudness-list (item current-prop old-loudness-list - 1) set num-of-decreased-loudness num-of-decreased-loudness + 1 ] ] ] ] ] ;else kate and john agree and kate should get a boost since john is the fact checker [ ask kate [ if item current-prop old-loudness-list < max-loudness [ set new-loudness-list replace-item current-prop new-loudness-list (item current-prop old-loudness-list + 1) set num-of-increased-loudness num-of-increased-loudness + 1 ] ] ] ] if kate-is-auth? = true and john-is-auth? = false [ ifelse item current-prop [old-attitude-list] of kate != item current-prop [old-attitude-list] of john [ if item current-prop [old-loudness-list] of kate > item current-prop [old-loudness-list] of john [ ifelse item current-prop [old-attitude-list] of john = 0 [ if item current-prop [old-attitude-list] of kate = 0 [user-message (word kate "shouldn't be indifferent" ) ] ask john [ set new-attitude-list replace-item current-prop new-attitude-list item current-prop [old-attitude-list] of kate ] ] [ if item current-prop [old-attitude-list] of kate = 0 [user-message (word kate "shouldn't be indifferent" ) ] ask john [ ifelse item current-prop old-loudness-list = 0 [ set new-attitude-list replace-item current-prop new-attitude-list 0 ] [ set new-loudness-list replace-item current-prop new-loudness-list (item current-prop old-loudness-list - 1) set num-of-decreased-loudness num-of-decreased-loudness + 1 ] ] ] ] ] ;else kate and john agree and john should get a boost since kate is the fact checker [ ask john [ if item current-prop old-loudness-list < max-loudness [ set new-loudness-list replace-item current-prop new-loudness-list (item current-prop old-loudness-list + 1) set num-of-increased-loudness num-of-increased-loudness + 1 ] ] ] ] ];end of while loop for propositions to be compared update-meet-history kate john update-interacted-agents kate john end to update-truthflux let props pick-props-to-compare ; we set props to the list of propositions returned by pick-props... ifelse length props > 1 [user-message (word "This model can only handle patch updates when there's one proposition in question") ] [ let current-prop first props ask patches [ if any? turtles-here[ let tsum 0 ask turtles-here [ let att (item current-prop old-attitude-list * item current-prop old-loudness-list);;since disbelief is -1, we simply multply loudness by it to get a negative number set tsum tsum + att ] set truthflux truthflux * truth-decay + (tsum / count turtles-here) update-patch-color ] ] ] end to update-patch-color set pcolor 5 + truthflux / 10 end to update-interacted-agents [kate john] ask kate [ if breed = millians [ set num-mill-interacted num-mill-interacted + 1 ] if breed = chums [ set num-chum-interacted num-chum-interacted + 1 ] if breed = believers [ set num-believer-interacted num-believer-interacted + 1 ] ] ask john [ if breed = millians [ set num-mill-interacted num-mill-interacted + 1 ] if breed = chums [ set num-chum-interacted num-chum-interacted + 1 ] if breed = believers [ set num-believer-interacted num-believer-interacted + 1 ] ] end to update-meet-history [kate john] ask kate [ set meet-history fput [who] of john meet-history set meet-history remove-duplicates meet-history if length meet-history > maxhistory [ set meet-history but-last meet-history ] ] ask john [ set meet-history fput [who] of kate meet-history set meet-history remove-duplicates meet-history if length meet-history > maxhistory [ set meet-history but-last meet-history ] ] end to-report make-new-attitudes repeat num-props-to-compare [ ] report new-attitude-list end to update-attitudes set old-attitude-list new-attitude-list ;this turns the new list into the old one for the next tick set old-loudness-list new-loudness-list end to-report pick-props-to-compare ; this function selects propositions for comparison set props-to-compare [ ] repeat num-props-to-compare [ set props-to-compare lput random num-props props-to-compare ] report props-to-compare end to move move-millians move-believers move-chums end to find-minglers set minglers other turtles in-radius vision set minglers minglers with [not member? [who] of self [meet-history] of myself] ; set minglers minglers with [ color = blue ] end to move-millians let current-prop first pick-props-to-compare ;picks the first prop from the list returned by pick-props-to-compare ask millians [ find-minglers let opp-minglers minglers with [item current-prop old-attitude-list != item current-prop [old-attitude-list] of myself] set nearest-mingler min-one-of opp-minglers [distance myself] ifelse nearest-mingler = nobody[ rt random-float 90 - random-float 90; turtle turns x degrees to the right if positve, left if negative fd 0.1 ] [ ifelse [xcor] of nearest-mingler = [xcor] of self and [ycor] of nearest-mingler = [ycor] of self[ fd 0.1 ] [ set heading towardsxy [xcor] of nearest-mingler [ycor] of nearest-mingler fd 0.1 ] ] ] end to move-believers ask believers [ ifelse believers-search = true [ find-minglers set nearest-mingler min-one-of minglers [distance myself] ifelse nearest-mingler = nobody [ rt random-float 90 - random-float 90; turtle turns x degrees to the right if positve, left if negative fd 0.1 ; turtle moves forward by 1 step ] [ ifelse [xcor] of nearest-mingler = [xcor] of self and [ycor] of nearest-mingler = [ycor] of self[ fd 0.1 ] [ set heading towardsxy [xcor] of nearest-mingler [ycor] of nearest-mingler fd 0.1 ] ] ] [ rt random-float 90 - random-float 90; turtle turns x degrees to the right if positve, left if negative fd 0.1 ; turtle moves forward by 1 step ] ] end to move-chums let current-prop first pick-props-to-compare ;picks the first prop from the list returned by pick-props-to-compare ask chums [ find-minglers let shared-minglers minglers with [item current-prop old-attitude-list = item current-prop [old-attitude-list] of myself] set nearest-mingler min-one-of shared-minglers [distance myself] ifelse nearest-mingler = nobody[ rt random-float 90 - random-float 90; turtle turns x degrees to the right if positve, left if negative fd 0.1 ] [ ifelse [xcor] of nearest-mingler = [xcor] of self and [ycor] of nearest-mingler = [ycor] of self[ fd 0.1 ] [ set heading towardsxy [xcor] of nearest-mingler [ycor] of nearest-mingler fd 0.1 ] ] ] end ;****************************** ;****************************** ;This section is for statistics ;****************************** ;****************************** to statistics set current-avg-dist-truth avg-distance-to-truth set current-avg-dist-others avg-distance-to-others set current-avg-disagree-truth avg-disagreement-to-truth ; this avg ignores indifference set current-avg-disagree-others avg-disagreement-to-others; this avg ignores indifference set current-avg-millian-disagree-truth avg-millian-disagreement-to-truth set current-avg-believer-disagree-truth avg-believer-disagreement-to-truth set current-avg-chum-disagree-truth avg-chum-disagreement-to-truth set current-avg-millian-loudness avg-millian-loudness set current-avg-chum-loudness avg-chum-loudness set current-avg-believer-loudness avg-believer-loudness set truthdist-b fput current-avg-believer-disagree-truth truthdist-b set truthdist-c fput current-avg-chum-disagree-truth truthdist-c set truthdist-m fput current-avg-millian-disagree-truth truthdist-m truthdist-update end to truthdist-update ifelse ticks = 0 [initialize-truthdist] [ if current-avg-believer-disagree-truth > max-truthdist-b [ set max-truthdist-b current-avg-believer-disagree-truth set tickof-first-max-truthdist-b ticks set tickof-last-max-truthdist-b ticks] if current-avg-millian-disagree-truth > max-truthdist-m [ set max-truthdist-m current-avg-millian-disagree-truth set tickof-first-max-truthdist-m ticks set tickof-last-max-truthdist-m ticks ] if current-avg-chum-disagree-truth > max-truthdist-c [ set max-truthdist-c current-avg-chum-disagree-truth set tickof-first-max-truthdist-c ticks set tickof-last-max-truthdist-c ticks ] if current-avg-believer-disagree-truth = max-truthdist-b [ set tickof-last-max-truthdist-b ticks ] if current-avg-millian-disagree-truth = max-truthdist-m [ set tickof-last-max-truthdist-m ticks ] if current-avg-chum-disagree-truth = max-truthdist-c [ set tickof-last-max-truthdist-c ticks ] if current-avg-believer-disagree-truth < min-truthdist-b [ set min-truthdist-b current-avg-believer-disagree-truth set tickof-first-min-truthdist-b ticks set tickof-last-min-truthdist-b ticks] if current-avg-millian-disagree-truth < min-truthdist-m [ set min-truthdist-m current-avg-millian-disagree-truth set tickof-first-min-truthdist-m ticks set tickof-last-min-truthdist-m ticks ] if current-avg-chum-disagree-truth < min-truthdist-c [ set min-truthdist-c current-avg-chum-disagree-truth set tickof-first-min-truthdist-c ticks set tickof-last-min-truthdist-c ticks ] if current-avg-believer-disagree-truth = min-truthdist-b [ set tickof-last-min-truthdist-b ticks ] if current-avg-millian-disagree-truth = min-truthdist-m [ set tickof-last-min-truthdist-m ticks ] if current-avg-chum-disagree-truth = min-truthdist-c [ set tickof-last-min-truthdist-c ticks ] ] end to initialize-truthdist set max-truthdist-b current-avg-believer-disagree-truth set max-truthdist-c current-avg-chum-disagree-truth set max-truthdist-m current-avg-millian-disagree-truth set min-truthdist-b current-avg-believer-disagree-truth set min-truthdist-c current-avg-chum-disagree-truth set min-truthdist-m current-avg-millian-disagree-truth set tickof-first-max-truthdist-b 1 set tickof-first-max-truthdist-c 1 set tickof-first-max-truthdist-m 1 set tickof-last-max-truthdist-b 1 set tickof-last-max-truthdist-c 1 set tickof-last-max-truthdist-m 1 set tickof-first-min-truthdist-b 1 set tickof-first-min-truthdist-c 1 set tickof-first-min-truthdist-m 1 set tickof-last-min-truthdist-b 1 set tickof-last-min-truthdist-c 1 set tickof-last-min-truthdist-m 1 end to-report avg-millian-loudness let current-prop first pick-props-to-compare let loudness-sum 0 ifelse num-millians != 0 [ ask millians [ set loudness-sum loudness-sum + item current-prop new-loudness-list ] report loudness-sum / num-millians ] [ report 0] end to-report avg-chum-loudness let current-prop first pick-props-to-compare let loudness-sum 0 ifelse num-chums != 0 [ ask chums [ set loudness-sum loudness-sum + item current-prop new-loudness-list ] report loudness-sum / num-chums ] [ report 0] end to-report avg-believer-loudness let current-prop first pick-props-to-compare let loudness-sum 0 ifelse num-believers != 0 [ ask believers [ set loudness-sum loudness-sum + item current-prop new-loudness-list ] report loudness-sum / num-believers ] [ report 0] end to-report num-attitude-groups ;how many agents do not have identical attitude sets let num-groups [ ] ask turtles with [breed != fact-checkers] [ set num-groups lput new-attitude-list num-groups ] set num-groups remove-duplicates num-groups report length num-groups end to-report mode-attitude-group ; let num-groups [ ] ask turtles with [breed != fact-checkers] [ set num-groups lput new-attitude-list num-groups ] set num-groups remove-duplicates num-groups report modes num-groups end to-report avg-distance-to-truth let num-non-fc 0 ;variable for total num of fact-checkers let total-dist 0 ;variable for total distance ask turtles with [breed != fact-checkers] [ set total-dist (total-dist + hammy-distance truth-list old-attitude-list) set num-non-fc num-non-fc + 1 ] report total-dist / num-non-fc end to-report avg-distance-to-others let num-of-comparisons 0 ;variable for total num of fact-checkers let total-dist 0 ;variable for total distance ask turtles with [breed != fact-checkers] [ ask other turtles with [breed != fact-checkers] [ set total-dist (total-dist + hammy-distance [old-attitude-list] of myself [old-attitude-list] of self) set num-of-comparisons num-of-comparisons + 1 ] ] report total-dist / num-of-comparisons end to-report avg-disagreement-to-truth ; this distance measure ignores indifference attitudes let num-non-fc 0 ;variable for total num of fact-checkers let total-dist 0 ;variable for total distance ask turtles with [breed != fact-checkers] [ set total-dist (total-dist + truth-distance truth-list old-attitude-list) set num-non-fc num-non-fc + 1 ] report total-dist / num-non-fc end to-report avg-millian-disagreement-to-truth ; this distance measure ignores indifference attitudes let count-millians 0 ;variable for total num of fact-checkers let total-dist 0 ;variable for total distance ask turtles with [breed = millians] [ set total-dist (total-dist + truth-distance truth-list old-attitude-list) set count-millians count-millians + 1 ] ifelse count-millians != 0 [ report total-dist / count-millians ][ report 0] end to-report avg-chum-disagreement-to-truth ; this distance measure ignores indifference attitudes let count-chums 0 ;variable for total num of fact-checkers let total-dist 0 ;variable for total distance ask turtles with [breed = chums] [ set total-dist (total-dist + truth-distance truth-list old-attitude-list) set count-chums count-chums + 1 ] ifelse count-chums != 0 [ report total-dist / count-chums ][ report 0] end to-report avg-believer-disagreement-to-truth ; this distance measure ignores indifference attitudes let count-believers 0 ;variable for total num of fact-checkers let total-dist 0 ;variable for total distance ask turtles with [breed = believers] [ set total-dist (total-dist + truth-distance truth-list old-attitude-list) set count-believers count-believers + 1 ] ifelse count-believers != 0 [ report total-dist / count-believers ][report 0] end to-report avg-disagreement-to-others ; this distance measure ignores indifference attitudes let num-of-comparisons 0 ;variable for total num of fact-checkers let total-dist 0 ;variable for total distance ask turtles with [breed != fact-checkers] [ ask other turtles with [breed != fact-checkers] [ set total-dist (total-dist + truth-distance [old-attitude-list] of myself [old-attitude-list] of self) set num-of-comparisons num-of-comparisons + 1 ] ] report total-dist / num-of-comparisons end to-report hammy-distance [list1 list2] ; how many differences there are between two lists, which isn't quite the hamming distance let ham 0 foreach n-values length list1 [?] [ let item1 item ? list1 let item2 item ? list2 if item1 != item2 [ set ham ham + 1 ] ] report ham end to-report truth-distance [list1 list2] ; how many differences there are between two lists, ignoring indifference let cheese 0 foreach n-values length list1 [?] [ let item1 item ? list1 let item2 item ? list2 if item1 != 0 and item2 != 0 and item1 != item2 [ set cheese cheese + 1 ] ] report cheese end ;; Use a seed created by the NEW-SEED reporter to use-new-seed set my-seed new-seed ;; generate a new seed output-print word "Generated seed: " my-seed ;; print it out random-seed my-seed ;; use the new seed end ;; Use a seed entered by the user to use-seed-from-user set my-seed read-from-string user-input "Enter a random seed (an integer):" output-print word "User-entered seed: " my-seed ;; print it out random-seed my-seed ;; use the new seed end

There is only one version of this model, created about 10 years ago by Bert Baumgaertner.

## Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.