Social Media Voluntarism

Social Media Voluntarism preview image

1 collaborator

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 5.0.2 • Viewed 509 times • Downloaded 17 times • Run 0 times
Download the 'Social Media Voluntarism' 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

;;;
;;; AGENTS DEFINITIONS
;;;


globals [
  involve-chance  ;; The chance out of 100 that an corporate volunteer will pass on institutional during one hour of exposure.
  support-show    ;; How long a person will be involved according support gives.
    
  slider-check-1    ;; Temporary variables for slider values, so that if sliders
  slider-check-2    ;;   are changed on the fly, the model will notice and
  slider-check-3    ;;   change volunteers's tendencies appropriately.
]

turtles-own [
  involved?          ;; If true, the person is involved.  It may be influenced or not.
  influenced?        ;; If true, the involving is influenced (and involved? must also be true).
  involve-length     ;; How long the person has been involved.
  enrolled?          ;; If true, the person is working for social cause.
  enroll-length      ;; How long the person has enrolled in social cause.
                     
                     
  work-exposure      ;; How long the person will work in social causes.
  supporting-tendency;; How likely the person is to support social causes.
  social-networks-use;; The percent chance a person uses social networks.
  
  partner            ;; The person that is our current partner (maybe influencer) in a work exposure.
]

;;;
;;; SETUP PROCEDURES
;;;

to setup
  __clear-all-and-reset-ticks
  setup-globals
  setup-people
  setup-plot
  update-plot
end 

to setup-globals
  reset-ticks
  set involve-chance 30    ;; if you have social network using tendency,
                           ;; you have a 10% chance of being involved
  set support-show 30.0    ;; support show up 1 hour after working
  set slider-check-1 average-work-exposure
  set slider-check-2 average-supporting-tendency
  set slider-check-3 average-social-networks-use
end 

;; Create carrying-capacity number of volunteers half are righty and half are lefty
;;   and some are involved in social causes.  Also assigns colors to people with the ASSIGN-COLORS routine.

to setup-people
  crt volunteers
    [ setxy random-xcor random-ycor
      set influenced? false
      set enrolled? false
      set partner nobody
      ifelse random 2 = 0
        [ set shape "person righty" ]
        [ set shape "person lefty" ]
      ;; 10% of the people start out involved.
      set involved? (who < volunteers * 0.10)
      if involved?
        [ set involve-length random-float support-show ]
      assign-work-exposure
      assign-supporting-tendency
      assign-social-networks-use
      assign-color ]
end 

;; Different volunteers are displayed in 3 different colors depending on activities
;; green is institutional
;; blue is corporate
;; gray is influencer related to partner

to assign-color  ;; turtle procedure
  ifelse not involved?
    [ set color green ]
    [ ifelse influenced?
      [ set color gray ]
      [ set color blue ] ]
end 

;; RANDOM-NEAR distribution implementing.

to assign-work-exposure  ;; turtle procedure
  set  work-exposure random-near average-work-exposure
end 

to assign-supporting-tendency  ;; turtle procedure
  set supporting-tendency random-near average-supporting-tendency
end 

to assign-social-networks-use  ;; turtle procedure
  set social-networks-use random-near average-social-networks-use
end 

to-report random-near [center]  ;; turtle procedure
  let result 0
  repeat 40
    [ set result (result + random-float center) ]
  report result / 20
end 

;;;
;;; GO PROCEDURES
;;;

to go
  if all? turtles [influenced?]
    [ stop ]
  check-sliders
  ask turtles
    [ if involved?
        [ set involve-length involve-length + 1 ]
      if enrolled?
        [ set enroll-length enroll-length + 1 ] ]
  ask turtles
    [ if not enrolled?
        [ move ] ]
  ;; Righties are always the ones to initiate influencing.
  ask turtles
    [ if not enrolled? and shape = "person righty" and (random-float 10.0 < supporting-tendency)
        [ enroll ] ]
  ask turtles [ disenroll ]
  ask turtles [ involve ]
  ask turtles [ assign-color ]
  tick
  update-plot
end 

;; Each tick a check is made to see if sliders have been changed.

to check-sliders
  if (slider-check-1 != average-work-exposure)
    [ ask turtles [ assign-work-exposure ]
      set slider-check-1 average-work-exposure ]
  if (slider-check-2 != average-supporting-tendency)
    [ ask turtles [ assign-supporting-tendency ]
      set slider-check-2 average-supporting-tendency ]
  if (slider-check-3 != average-social-networks-use)
    [ ask turtles [ assign-social-networks-use ]
      set slider-check-3 average-social-networks-use ]
end 

;; People move about at random.

to move  ;; turtle procedure
  rt random-float 360
  fd 1
end 

;; Volunteers have the chance to participate in social activities.

to enroll  ;; turtle procedure -- righties only!
  let potential-partner one-of (turtles-at -1 0)
                          with [not enrolled? and shape = "person lefty"]
  if potential-partner != nobody
    [ if random-float 10.0 < [supporting-tendency] of potential-partner
      [ set partner potential-partner
        set enrolled? true
        ask partner [ set enrolled? true ]
        ask partner [ set partner myself ]
        move-to patch-here ;; move to center of patch
        move-to patch-here ;; partner moves to center of patch
        set pcolor gray - 3
        ask (patch-at -1 0) [ set pcolor gray - 3 ] ] ]
end 

;; If two diferents kind of volunteers work together in social cause it's probabbly one of them be influenced, 
;; in order to work in social causes.

to disenroll  ;; turtle procedure
  if enrolled? and (shape = "person righty")
    [ if (enroll-length >  work-exposure) or
         ([enroll-length] of partner) > ([ work-exposure] of partner)
        [ set enrolled? false
          set enroll-length 0
          ask partner [ set enroll-length 0 ]
          set pcolor black
          ask (patch-at -1 0) [ set pcolor black ]
          ask partner [ set partner nobody ]
          ask partner [ set enrolled? false ]
          set partner nobody ] ]
end 

;; Involving occurs if volunteer corporative is influenced.

to involve  ;; turtle procedure
  if enrolled? and involved? and not influenced?
    [ if random-float 11 > social-networks-use or
         random-float 11 > ([social-networks-use] of partner)
        [ if random-float 100 < involve-chance
            [ ask partner [ set involved? true ] ] ] ]
end 
;;;
;;; PLOTTING PROCEDURES

to setup-plot
  set-current-plot "Populations"
  set-plot-y-range 0 (volunteers + 50)
end 

to update-plot
  set-current-plot "Populations"
  set-current-plot-pen "Institutional"
  plot count turtles with [not involved?]
  set-current-plot-pen "Corporate"
  plot count turtles with [involved?] -
       count turtles with [influenced?]
end ;
;;; MONITOR PROCEDURES
;;

to-report %involved
  ifelse any? turtles
    [ report (count turtles with [involved?] / count turtles) * 100 ]
    [ report 0 ]
end 


; Copyright 2012 Yannick Patrick Carrasco Merma - San Ignacio de Loyola University. All rights reserved.
; The full copyright notice is in the Information tab.

There is only one version of this model, created over 10 years ago by Yannick Patrick Carrasco Merma.

Attached files

File Type Description Last updated
Social Media Voluntarism.png preview Preview for 'Social Media Voluntarism' over 10 years ago, by Yannick Patrick Carrasco Merma Download

This model does not have any ancestors.

This model does not have any descendants.