Innovation Diffusion through Interpersonal Channels

Innovation Diffusion through Interpersonal Channels preview image

1 collaborator

Default-person ANTONIO LOPOLITO (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.2.0 • Viewed 201 times • Downloaded 12 times • Run 0 times
Download the 'Innovation Diffusion through Interpersonal Channels' 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

;; INTERPERSONAL CHANNELS AND INNOVATION DIFFUSION - FIRST VERSION 11.06.2015
;; this model catch the opinion formation among economic agents toward an incremental innovation as influenced by the social interplay with other agents
;; agents are persuaded to adopt if their opinion is positive and exceeds a certin treshold
;; the main drivers of persuation are the opinion of the other agents the subject interact with
;; the model reproduce the web of relations among a real local productive system of agricultural firms 
;; the model is calibrated to obtain a percentage of adopters similar to the one observed in real data
;; the aim is to model policy actions able to make more speedy and effcient the innovation spread (in terms of positive opinion formation)

turtles-own 
[node-id ;;this is tha name of each turtle
  persuation ;; this indicates the level of persuation of each actors
  threshold ;; this is the minimun proportion of the agent neighbor necessary to persuade the agent towards the novelty
  opinion ;; this is the agent's level of acceptance towards the novelty
  edu ;; this is the agent's level of education
  novelty? ;; this is a boolean: false if the persuation is lower than the threshold and true if the persuation is equal or greather than the threshold ]
  influence ;; this is the influence exerted by neighbors on the agent as calculated with the procedure to pass-information
  susceptible? ;; this is a boolean: false if the agent is not suceptible to neighbor influence (its persuation does not variate during the process
               ;; true if the agent is suceptible to neighbor influence (its persuation variates during the process)
  n-strenght ;; is the amount of persuation exerted by the neighbors on the agent              
  injection ;; this is 1 if the agents is used as and injection point and o otherwise
  out-pressure ;; the pressure the agent exert on the others
  out-pressure2 ;; the pressure the agent exert on the others proof 
  in-link
  out-link
]

links-own [strenght]

globals [links-list]

to setup
  clear-all
  set-default-shape turtles "circle"
  import-attributes
  layout-circle (sort turtles) (max-pxcor - 1)
  import-links
  select-agent
  reset-ticks
end 

;; This procedure reads in a files that contains node-specific attributes
;; including an unique identification number

to import-attributes
  ;; This opens the file, so we can use it.
  file-open "ATTRIBUTES_50.txt"
  ;; Read in all the data in the file
  ;; data on the line is in this order:
  ;; node-id attribute1 attribute2
  while [not file-at-end?]
  [
    ;; this reads a single line into a three-item list
    let items read-from-string (word "[" file-read-line "]")
    crt 1 [
      set node-id item 0 items
      set injection 0 ;; item 1 items
      set threshold item 2 items  
      set opinion item 3 items  
      set edu item 4 items  
      set color green
      set novelty? false
      set influence 0
      set susceptible? true
      set n-strenght 0
      set persuation 0
      set out-pressure 0
      set in-link []
      set out-link []       
      ]
   ]
  file-close
end 

to select-agent
  ask turtle me [
    set injection 1
    set susceptible? false
    set persuation 1
    set novelty? true
    set color red] 
end 

;; The following procedure (between **START** and **END**) is replicated from 
;; Network Import Example, by Uri Wilensky (model ID 2214) -- NetLogo 
;; link: http://modelingcommons.org/browse/one_model/2214#model_tabs_browse_procedures
;; **START**
;; This procedure reads in a file that contains all the links
;; The file is simply 3 columns separated by spaces.  In this
;; example, the links are directed.  The first column contains
;; the node-id of the node originating the link.  The second
;; column the node-id of the node on the other end of the link.
;; The third column is the strength of the link.

to import-links
  ;; This opens the file, so we can use it.
  file-open "KN_COOP_HOMOPHILY_50.txt"
  ;; Read in all the data in the file
  while [not file-at-end?]
  [
    ;; this reads a single line into a three-item list
    let items read-from-string (word "[" file-read-line "]")
    ask get-node (item 0 items)
    [
      create-link-to get-node (item 1 items)
        [ set strenght item 2 items ]
    ]
  ]
  file-close
end 
;; **END**

to pass-information
ask patches [
  let Rsk random-float 0.5
    ifelse random-float 1 > Rsk
      [set pcolor gray - 3 ] ;; randomly distribute Risk  - gray means that half revenues are achieved by niche producers
      [set pcolor black ]     
  ]
ask turtles [
    if pcolor = gray - 3
    [
      if susceptible? = true
      [
  let neighbors-persuation (map [[persuation] of ?] sort in-link-neighbors) ;; the list of persuation of my ORDERED neighbors
  let links-strenght (map [[strenght] of ?] sort my-in-links)  ;; the list of my ORDERED in-links strenght
  let neighbors-number count in-link-neighbors
  let neighbors-strenght (map * neighbors-persuation links-strenght)
  set n-strenght sum neighbors-strenght
  if neighbors-number > 0
[  set influence n-strenght / neighbors-number
   if influence > 1 [set influence 1]]
set persuation (persuation + influence) * edu / 21.5 ;; edu / 21 is the factor that catchs the effect of agent's educatnio on the complex of information passed by his neighbors
 if persuation > 1 [set persuation 1]     


if disappoint [ 
 let Rsk random-float 0.5
 let var (14 + random 14)
 if ticks = var [
 if random-float 1 > Rsk [
 let var1 (random 1 + random 3)
 let var2 (random-float -0.5 + random-float 0.5)
 ask n-of var1 turtles [set persuation var2] 
 ]
 ]
  ]
      ]
    ]
] 
end 

to persuade
  
  if ticks mod 4 = 0 [
  ask turtles [
  ifelse persuation >= threshold 
     [set novelty? true]
     [set novelty? false]
     ifelse novelty? = true
     [set color red
         ]
     [set color green]
     let out-links-strenght (map [[strenght] of ?] sort my-out-links)  ;; the list of my ORDERED out-links strenght
     let my-strenght (map [? * persuation] out-links-strenght)
     set out-pressure sum my-strenght 
         
     let out-links-strenght2 [strenght] of my-in-links  ;;  the list of my out-links strenght
     let my-strenght2 (map [? * persuation] out-links-strenght2)
     set out-pressure2 sum my-strenght2 
  ]
   ] 
end   

to-report get-node [id]
  report one-of turtles with [node-id = id]
end 

to go
   pass-information
   persuade
   set-current-plot "Agent Persuaded"
   plot agent-persuaded2
   tick
end 

to-report agent-persuaded
  report count turtles with [novelty? = true]
end 

to-report agent-persuaded2
  report count turtles with [color = red]
end 

to-report average-strenght
  report mean [n-strenght] of turtles
end 

to-report average-influence
  report mean [influence] of turtles
end 

to-report average-persuation
  report mean [persuation] of turtles
end 

to-report persuaded 
 report map [[novelty?] of ? ] sort turtles 
end 

to-report pressure 
  report map [[n-strenght] of ?] sort turtles 
end 

to-report attitude
  report map [[persuation] of ?] sort turtles 
end 

to-report my-pressure
 report map [[out-pressure] of ?] sort turtles
end 

to-report my-pressure2
 report map [[out-pressure2] of ?] sort turtles
end 

There is only one version of this model, created almost 5 years ago by ANTONIO LOPOLITO.

Attached files

File Type Description Last updated
ATTRIBUTES_50.txt data List of Actors (subset) almost 5 years ago, by ANTONIO LOPOLITO Download
Innovation Diffusion through Interpersonal Channels.png preview Preview for 'Innovation Diffusion through Interpersonal Channels' almost 5 years ago, by ANTONIO LOPOLITO Download
KN_COOP_HOMOPHILY_50.txt data List of relations between of actors (subset) almost 5 years ago, by ANTONIO LOPOLITO Download

This model does not have any ancestors.

This model does not have any descendants.