Behavior spread

Behavior spread preview image

This model is seeking new collaborators — would you please help?

1 collaborator

Rg_400x400 Ricardo Gonzalez (Author)

Tags

behavior 

Tagged by Ricardo Gonzalez over 4 years ago

behavior spread 

Tagged by Nannan Liang over 1 year ago

diffusion 

Tagged by Ricardo Gonzalez over 4 years ago

peer pressure 

Tagged by Ricardo Gonzalez over 4 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.1.1 • Viewed 467 times • Downloaded 16 times • Run 0 times
Download the 'Behavior spread' modelDownload this modelEmbed this model

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

;;
;; Global variables.
;;
globals [count_MS0 count_MS1 ticks_MS01]

;;
;; turtle/breed.
;;

;;
;; turtle/breed variables.
;;
turtles-own [
  MS  ;; mental state
  OB  ;; observed behavior
  OBD ;; observed behavior discrepancy
]

;;
;; setup.
;;

to setup
  clear-all
  reset-ticks
  setup-world
  setup-turtles
  ;; etc
end 

;;
;; setup-world.
;;

to setup-world
  ask patches [ set pcolor green + 2]
end 

;;
;; setup-turtles.
;;

to setup-turtles
  ;; Initialize global variables.

  ;; Create the turtles and set their initial states.
  create-turtles number_agents
  [ set shape "default"
    setxy random-xcor random-ycor]

  ;; Initial MS.
  ask turtles
  [
    ifelse random 100 < MS1
    [ set MS 1
      set color 9.9]
    [ set MS 0
      set color 0  ]
  ]

  ;; Update counts.
  update-counts
end 

;;
;; go.
;;

to go
  ;; Criteria to stop.
  if (ticks > 5000) [stop]
  if (count_MS0 = count_MS1) [stop]

  ;; Otherwise do-things.

  ;; Update status.
  update-turtles

  ;; tick.
  tick
end 

;;
;; update-turtles.
;;

to update-turtles
  ask turtles
  [ ;; update MS after wear
    let WR (WR0 + (WR1 - WR0) * MS)
    if random-float 100 < WR
    [ ifelse MS = 0 [set MS 1] [set MS 0]]

    ;; update OB
    ifelse (MS = 1)
    [ set OB sqrt(random-float 1.)]
    [ set OB (1 - sqrt(1 - (random-float 1.)))]

    ;; update OBD
    set OBD (MS - mean [OB] of other n-of K turtles)

    ;; update MS after OBD
    ;; triangular distribution for given MS:
    let x0 MS - 1
    let x1 MS
    let xm 2 * MS - 1 ;; position of the mode
    let ym (PC0 + (PC1 - PC0) * MS) * 2
    ;; compute y (given MS and OBD):
    let y 0
    ifelse (OBD < xm)
    [
      ifelse ( xm = x0)
      [ set y ym]
      [ set y 0 + (OBD - x0) * ym / (xm - x0)]
    ]
    [
      ifelse ( xm = x1)
      [ set y ym]
      [ set y 0 + (x1 - OBD) * ym / (x1 - xm)]
    ]
    ;; Change MS according to y
    if random-float 100 < y * 0.1 ;; 0.1 is the interval precision width for OBD.
    [ ifelse MS = 0 [set MS 1] [set MS 0]]

    ;; Update counts.
    update-counts

    ;; update color
    ifelse MS = 0
    [set color 0]
    [set color 9.9]
  ]
end 

to update-counts
  ;; Update counts.
  set count_MS0 count turtles with [MS = 0]
  set count_MS1 count turtles with [MS = 1]
end 

There is only one version of this model, created over 4 years ago by Ricardo Gonzalez.

Attached files

File Type Description Last updated
Behavior spread.png preview Preview for 'Behavior spread' over 4 years ago, by Ricardo Gonzalez Download

This model does not have any ancestors.

This model does not have any descendants.