This page was automatically generated by NetLogo 5.0.5.

The applet requires Java 5 or higher. Java must be enabled in your browser settings. Mac users must have Mac OS X 10.4 or higher. Windows and Linux users may obtain the latest Java from Oracle's Java site.


In order for this to work, this file, your model file (MOVIE_11._Jury_Trial.nlogo), and the files NetLogoLite.jar and NetLogoLite.jar.pack.gz must all be in the same directory. (You can copy NetLogoLite.jar and NetLogoLite.jar.pack.gz from the directory where you installed NetLogo.)

On some systems, you can test the applet locally on your computer before uploading it to a web server. It doesn't work on all systems, though, so if it doesn't work from your hard drive, please try uploading it to a web server.

You don't need to include everything in this file in your page. If you want, you can just take the HTML code beginning with <applet> and ending with </applet>, and paste it into any HTML file you want. It's even OK to put multiple <applet> tags on a single page.

If the NetLogoLite files and your model are in different directories, you must modify the archive= and value= lines in the HTML code to point to their actual locations. (For example, if you have multiple applets in different directories on the same web server, you may want to put a single copy of the NetLogoLite files in one central place and change the archive= lines of all the HTML files to point to that one central copy. This will save disk space for you and download time for your users.)

MOVIE_11._Jury_Trial

powered by NetLogo

view/download model file: MOVIE_11._Jury_Trial.nlogo

CODE

          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          ;;        AGENT_ZERO                 
          ;;  MOVIE 11 Code. Version 1.0
          ;;        Jury Trial
          ;;      
          ;;       Joshua M. Epstein            
          ;;        December 2012
          ;;   Sliders [0, .02, 30, 0, 90] 
          ;;        Book Seed = 2
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;      
                    
        

to use-new-seed                                 
  let my-seed new-seed            
  output-print word "Generated seed: " my-seed  
  random-seed my-seed                               
end

to use-seed-from-user                           
  let my-seed read-from-string user-input "Enter a random seed (an integer):"
  output-print word "User-entered seed: " my-seed  
  random-seed my-seed             
end

undirected-link-breed [red-links red-link]

links-own [weight]

turtles-own [
            affect
            learning_rate
            lambda
            delta                           
            threshold 
            event_count 
            disposition
            probability
            memory         
            ]

to setup-links
  
   ask turtle 0 [ create-red-link-with turtle 1]   
                 ask red-link 0 1 [ 
                 set color red 
                 set weight 0]
   ask turtle 0 [ create-red-link-with turtle 2]
                 ask red-link 0 2 [ 
                 set color red 
                 set weight 0]
   ask turtle 1 [ create-red-link-with turtle 0]
                 ask red-link 1 0 [ 
                 set color red 
                 set weight 0]
   ask turtle 1 [ create-red-link-with turtle 2]
                 ask red-link 1 2 [ 
                 set color red 
                 set weight 0]
   ask turtle 2 [ create-red-link-with turtle 0]
                 ask red-link 2 0 [ 
                 set color red 
                 set weight 0]
   ask turtle 2 [ create-red-link-with turtle 1]
                 ask red-link 2 1 [ 
                 set color red 
                 set weight 0]
end


to update-links 
  ask red-link 0 1 [
   set thickness 0 + weight 
    ifelse weight = 0
    [hide-link]
    [show-link]] 
  ask red-link 0 2 [
   set thickness 0 + weight
      ifelse weight = 0
    [hide-link]
    [show-link]]
  ask red-link 1 0 [
   set thickness 0 + weight
       ifelse weight = 0
    [hide-link]
    [show-link]] 
  ask red-link 1 2 [
   set thickness 0 + weight
       ifelse weight = 0
    [hide-link]
    [show-link]]
  ask red-link 2 0 [
   set thickness 0 + weight
       ifelse weight = 0
    [hide-link]
    [show-link]] 
  ask red-link 2 1 [
   set thickness 0 + weight
       ifelse weight = 0
    [hide-link]
    [show-link]]
end    
  

to setup
  __clear-all-and-reset-ticks
  ;use-new-seed 
  use-seed-from-user 
  setup-patches
  setup-turtles
  ;setup-links
  ;movie-start "out.mov"    ; Uncomment block to make movie.
  ;movie-grab-view 
  ;repeat 125 
  ;   [ go 
  ;    movie-grab-view ]
  ;   movie-close
 tick
end

to setup-turtles
  set-default-shape turtles "person"
  create-turtles 3  
  ask turtle 0 [
                setxy -5 -3
                set color blue
                set affect 0.001 
                set delta 0
                set lambda 1
                set learning_rate .05
                set threshold .5
                set event_count 0
                set disposition 0
                set probability 0
                set memory []
                  repeat memory_length 
                    [set memory lput random-float 0 memory]
                ;set memory [0]                 
                ;set memory [0 0 0 0]
                ;set label who
                ]  
                        
  ask turtle 1 [                               
                setxy -7 -7                            
                set color blue
                set affect 0.001
                set delta 0
                set lambda 1
                set learning_rate .035
                set threshold .5
                set event_count 0
                set disposition 0
                set probability 0
                ;set memory [ 1 3 5 7 8]
                set memory []
                  repeat memory_length 
                    [set memory lput random-float 0 memory]
                ;show memory
               ; set label who
                ]
  ask turtle 2 [                                      
                setxy -10 -4 ;random-xcor random-ycor
                set color blue
                set affect 0.001
                set delta 0
                set lambda 1
                set learning_rate .02
                set threshold .5
                set event_count 0
                set disposition 0
                set probability 0
                set memory []
                  repeat memory_length 
                    [set memory lput random-float 0 memory]
                ;set memory [0 0]
                ;set label who
                ]
end
  
to setup-patches
  ask patches [set pcolor yellow + random 2]  
end
  
to go
  if ticks >= 90 [stop]
  setup-links  
  
       ; PRE-TRIAL PUBLIC PHASE  Jury out in the public square
                                                   ; move-turtles  ; Jury doesn't move ; update-event_count
  if ticks < 30 [                   
   ; activate-allPatches 
   ask patches with [pxcor >= 1 and pycor >= -1][set pcolor gray + 2]
   activate-publicPatches                                  
   update-affect
   update-probability
   update-disposition  
   update-links                                    
   deactivate-publicPatches] 
                                      
      ; TRIAL PHASE.  Jury moves into courtroom 
        
 if ticks >= 30 [
    ask turtle 0 [setxy 5 3]
    ask turtle 1 [setxy 7 7]
    ask turtle 2 [setxy 10 4]
   ]
                          
        
 if ticks >= 30 and ticks < 60 [  
        
   ask patches with [pxcor < -2 or pycor < -2] [set pcolor gray + 2]
   ask patches with [pxcor >= -2 and pycor >= -2] [set pcolor yellow + random 2]
   activate-courtroomPatches
   update-affect
   update-probability
   update-disposition  
   ;update-affect-weights  
   update-links                                 
   deactivate-courtroomPatches
  ]

     ; JURY PHASE. Now weights turn on.[Juror coordinates as in Phase II but brown Chamber smaller then courtroom.
       
 if ticks >= 60 [
   
   ask patches with [pxcor > 1 and pycor > -1][set pcolor 35]
   ask patches with [pxcor <= 1 or pycor <= -1][set pcolor gray + 2]  ;  Jury Phase
   update-affect-weights
   update-links
   update-affect
   update-probability
   update-disposition ]
 
     
  do-plots1
  do-plots2
  do-plots3
  do-plots4
  
  tick
  print ticks
end

to activate-allPatches
   ask patches 
      [if random 100 < 10 and pcolor != red - 3 [set pcolor orange + 1]]  ; attack_rate
end

to deactivate-allPatches
 ask patches 
  [if random 100 < 10 and pcolor != red - 3 [set pcolor yellow + random 2]]  
end

to activate-publicPatches  
 ask patches with [pxcor < -2 or pycor < -2]
      [if random 100 < 50 and pcolor != red - 3 [set pcolor orange + 1]]
end

to deactivate-publicPatches
 ask patches with [pxcor < -2 or pycor < -2]   
  [if random 100 < 50 and pcolor != red - 3 [set pcolor yellow + random 2]]    
end

to activate-courtroomPatches
   ask patches with [pxcor >= -2 and pycor >= -2]
     [if random 100 < 10 and pcolor != red - 3 [set pcolor orange + 1]]
end

to deactivate-courtroomPatches
   ask patches with [pxcor >= -2 and pycor >= -2]
      [if random 20 < 10 and pcolor != red - 3 [set pcolor yellow + random 2]]  
end

to update-event_count
ask turtles[
    if pcolor = orange + 1 [set event_count event_count + 1]  
           ]
end

to update-affect 
   ask turtles [
        if pcolor = orange + 1 
           [set affect affect + (learning_rate * (affect ^ delta) * (lambda - affect))]    
        if pcolor != orange + 1
           [set affect affect + (learning_rate * (affect ^ delta) * extinction_rate *(0 - affect))] 
               ]
end

to update-probability
 ask turtles[
 let current_probability  (count patches in-radius vision with [pcolor = orange + 1]/(count patches in-radius vision))
 set memory but-first memory                                                    
 set memory lput current_probability memory                               
 set probability mean memory
 ;set probability median memory                                      
   ]
 end
 
to update-disposition
 ask turtle 0 [
   set disposition affect + probability + [weight] of red-link 1 0 * ([affect] of turtle 1 + [probability] of turtle 1) + 
                                          [weight] of red-link 2 0 * ([affect] of turtle 2 + [probability] of turtle 2) - threshold]
ask turtle 1 [
   set disposition affect + probability + [weight] of red-link 0 1 * ([affect] of turtle 0 + [probability] of turtle 0) +
                                          [weight] of red-link 2 1 * ([affect] of turtle 2 + [probability] of turtle 2) - threshold]
ask turtle 2 [
   set disposition affect + probability + [weight] of red-link 0 2 * ([affect] of turtle 0 + [probability] of turtle 0) +
                                          [weight] of red-link 1 2 * ([affect] of turtle 1 + [probability] of turtle 1) - threshold] 
               
end

to move-turtles
  ask turtles [   
    right random 360
    forward 1
    ]
    end
  
to take-action  
  ask turtles [                                            
    if disposition > 0 [ask patches in-radius action_radius [set pcolor red - 3]]
    ]
    
end

to return-as-yellow
  ask patches
     [if random 100 < 1 [set pcolor yellow + random 2]]
     end

to setup-MyLai
  ask patches with [pxcor < -5 or pycor < -2 ]        
                  [set pcolor yellow + random 2] 
end

to update-affect-weights
    ask red-link 2 0 
    [
    set weight  ([affect] of turtle 2 + [affect] of turtle 0)*(1 - abs ([affect] of turtle 2 - [affect] of turtle 0))
    ]
    ask red-link 0 1                                                                                                     
    [
    set weight  ([affect] of turtle 0 + [affect] of turtle 1)*(1 - abs ([affect] of turtle 1 - [affect] of turtle 0))
    ]
    ask red-link 1 2                                                                                                    
    [
    set weight  ([affect] of turtle 2 + [affect] of turtle 1)*(1 - abs ([affect] of turtle 2 - [affect] of turtle 1))
    ]
end

to update-probability-weights
    ask red-link 2 0 
    [
    set weight ([probability] of turtle 2 + [probability] of turtle 0)*(1 - abs ([probability] of turtle 2 - [probability] of turtle 0))
    ]
    ask red-link 0 1                                                                                                      
    [
    set weight ([probability] of turtle 0 + [probability] of turtle 1)*(1 - abs ([probability] of turtle 1 - [probability] of turtle 0))
    ]
    ask red-link 1 2                                                                                                      
    [
    set weight ([probability] of turtle 2 + [probability] of turtle 1)*(1 - abs ([probability] of turtle 2 - [probability] of turtle 1))
    ]
end

to update-disposition-weights
  ask red-link 2 0 
    [
    set weight ([disposition] of turtle 2 + [disposition] of turtle 0)*(1 - abs ([disposition] of turtle 2 - [disposition] of turtle 0))
    ]
    ask red-link 0 1                                                                                                    
    [
    set weight ([disposition] of turtle 0 + [disposition] of turtle 1)*(1 - abs ([disposition] of turtle 1 - [disposition] of turtle 0))
    ]
    ask red-link 1 2                                                                                                   
    [
    set weight ([disposition] of turtle 2 + [disposition] of turtle 1)*(1 - abs ([disposition] of turtle 2 - [probability] of turtle 1))
    ]
end

to do-plots1
    set-current-plot "Disposition"
    set-current-plot-pen "turtle 0"
    plot [disposition] of turtle 0
    set-current-plot-pen "turtle 1"
    plot [disposition] of turtle 1
    set-current-plot-pen "turtle 2"
    plot [disposition] of turtle 2
   end
   
to do-plots2    
    set-current-plot "Probability"
    set-current-plot-pen "turtle 0"
    plot [probability] of turtle 0
    set-current-plot-pen "turtle 1"
    plot [probability] of turtle 1
    set-current-plot-pen "turtle 2"
    plot [probability] of turtle 2
   end

to do-plots3    
    set-current-plot "Affect"
    set-current-plot-pen "turtle 0"
    plot [affect] of turtle 0
    set-current-plot-pen "turtle 1"
    plot [affect] of turtle 1
    set-current-plot-pen "turtle 2"
    plot [affect] of turtle 2
   end

to do-plots4    
    set-current-plot "Weights"
    set-current-plot-pen "red-link 2 0"
    plot [weight] of red-link 2 0
    set-current-plot-pen "red-link 1 2"
    plot [weight] of red-link 1 2
    set-current-plot-pen "red-link 0 1"
    plot [weight] of red-link 0 1
   end