# Kellogg 0

No preview image

Model was written in NetLogo 5.0.4
•
Viewed 190 times
•
Downloaded 13 times
•
Run 0 times

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

Info tab cannot be displayed because of an encoding error

## Comments and Questions

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

Click to Run Model

turtles-own [ opinion service arrival-time leaving-time scut-work night-float? rounding? ] ;; note this doesn't give people a day off at all yet patches-own [doctors-here] breed [chiefs chief] breed [seniors senior] breed [interns intern] ;breed [dropped-balls dropped-ball] ;; Create doctors at 3 levels of hierarchy (differentiated by shape). ;; Give them opinions about whether the status quo should be defended or reformed to setup clear-all create-chiefs 5 [ ;set opinion one-of ["defender" "reformer"] set shape "star" set size 1.3 ] create-seniors 15 [ ;set opinion one-of ["defender" "reformer"] set shape "pentagon" ] create-interns 20 [ ;set opinion "reformer" set shape "x" ] ask turtles [ setxy random-xcor random-ycor set rounding? false set night-float? false set scut-work [] reset-daily-schedule ] ; ask patches ; [ set doctors-here count turtles-here + count turtles-on neighbors ] assign-chiefs&seniors assign-interns ; assign-intern-work reset-ticks tick-advance 6 end ;; monthly service assignments to assign-chiefs&seniors ask turtles [ set service 0 set night-float? false] ask n-of 4 chiefs [ rotate 1 chiefs ] ask n-of 4 seniors [ set night-float? true rotate 1 seniors ] ask n-of 4 seniors with [night-float? = false ] [ rotate 2 seniors ] ask seniors [ reset-daily-schedule ] end to assign-interns ask interns [ set service 0 ] ask n-of 4 interns [ rotate 1 interns ] end to rotate [num pos] set service ( 1 + random 4 ) if count other pos with [ service = [ service ] of myself] >= num [ rotate num pos ] end ;; daily arriving and leaving times, according to position to reset-daily-schedule if is-chief? self [ set arrival-time 6 set leaving-time 19 ] if is-senior? self [ set arrival-time 6 set leaving-time 19 ] if [ night-float? ] of self = true [ set arrival-time 18 set leaving-time 7 ] if is-intern? self [ set arrival-time 6 set leaving-time 19 ] end to go ;; long term schedules: monthly-schedule daily-schedule ;; each hour (ie tick): complete-tasks move tick end to monthly-schedule ;; every 4 weeks (counting only 6 days to a week, interns switch services if ticks mod 576 = 0 [assign-interns] ;; every 8 weeks, chiefs & seniors switch services (really some seniors should switch every 6 . . .) if ticks mod 1152 = 0 [assign-chiefs&seniors] end to daily-schedule ;; each turtle shows up and leaves according to its arrival and leaving times ;; when turtles arrive they assess whether what they did yesterday worked and decide what to do accordingly ask turtles [ if ticks mod 24 = arrival-time [ show-turtle take-over ] if ticks mod 24 = leaving-time [ hand-off hide-turtle ] ] ;; I'm not sure I want a pre-set leaving time ...I think I might want leaving to be a behavior that happens according to the model; ;; I think this can do that, since it updates every tick ;; every morning when the chiefs and seniors (and interns?) come in at 6, ;; the interns' new tasks are assigned (not really, but that's ok for now) if ticks mod 24 = 6 [ assess-strategy assign-intern-work ] ; report hours ] ;; at 5pm, chiefs gather their teams for afternoon rounds if ticks mod 24 = 17 [ ask chiefs with [service != 0 ] [pick-rounds-spot ] ] ;; afternoon rounds happen between 5 and 7pm (I don't think they really take 2 hours in the hospital, but this gives a chance to ; see it in the animation if ticks mod 24 > 16 and ticks mod 24 < 19 [ ask turtles with [service != 0 and hidden? = false and rounding? = false] [ set rounding? true ] ask turtles with [ rounding? = true ] [ afternoon-rounds ] ] ;; at 7pm rounds are over, and interns "should" be handing off routine work to night floats if ticks mod 24 = 19 [ ask turtles with [rounding? = true ] [ set rounding? false ] ] end to assess-strategy ask turtles with [ service != 0 ] [ let dropped-balls [ scut-work ] of turtles with [ service = [ service ] of myself ] set dropped-balls ( reduce sentence dropped-balls ) ;show dropped-balls if dropped-balls != [] [ ;show "problem!" assign-blame change-strategy ] ] end to assign-blame end ;; Bleggggh how to do this??? to change-strategy if is-intern? self [ select-strategy ] ; if scut-work = [] ; [ set leaving-time ticks mod 24 ] ] end to select-strategy let strategy random 2 if strategy = 0 [ set leaving-time leaving-time + 1 ] if strategy = 1 [ set arrival-time arrival-time - 1 ] end to take-over ask interns with [ service != 0 ] ;; takeover what's left from the night before [ let my-float one-of turtles with [service = [service] of myself and night-float? = true ] set scut-work sentence scut-work [scut-work] of my-float ask my-float [ set scut-work [] ] ] end to assign-intern-work ask interns with [ service != 0 ] ;; add the day's responsibilities [ set scut-work sentence scut-work [ 1 2 3 4 5 6 7 8 9 0 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ] ] end to complete-tasks ask turtles with [ scut-work != [] and hidden? = false] [ set scut-work remove first scut-work scut-work ] end to move ask turtles [ if hidden? = false and rounding? = false [ rt random 45 lt random 45 fd .5] ] end to afternoon-rounds ; if ticks mod 24 = 17 ; [ pick-spot ] ; interact ; end to pick-rounds-spot ifelse privacy = true [ move-to min-one-of patches [doctors-here] ] [ move-to max-one-of patches [doctors-here] ] ask other turtles with [service = [service] of myself ] [ move-to one-of [neighbors] of [ patch-here ] of myself] end to interact end to hand-off ask interns with [ service != 0 ] [ ask one-of turtles with [service = [service] of myself and night-float? = true ] [set scut-work sentence scut-work [scut-work] of myself] set scut-work [] ] ;] end to-report current-time let hours ticks mod 12 if hours = 0 [ set hours 12 ] let am-pm "am" if 1 + ticks mod 24 > 12 [ set am-pm "pm" ] report word hours am-pm end ;to-report hours ; ask interns ; [ if hidden? = false ] ; [ set daily-hours daily-hours + 1 ] ; ; ;end ;; how 'bout this: ;; every time there's a handoff, there's also a % chance of a dropped ball; ;; someone ; set service number-groups ; set number-groups number-groups - 1 ; if number-groups < 0 ; [ set number-groups count chiefs ] ;end ;to go ; wiggle ; call-team ; pick-spot ; assess-expectations ; find-influencers ; be-influenced ; adjust-appearance ; tick ;end ; ;;; When they are not doing rounds, let doctors walk around the hospital randomly ; ; ;;; Show doctors' opinions and actions in their color and size ; ;to adjust-appearance ; ask turtles ; [ if opinion = "defender" ; [ set color blue - 2] ; if opinion = "reformer" ; [ set color blue + 2 ] ; if action = "shorter hours" ; [ set size 1.5 ] ; if action = "long hours" ; [ set size 2 ] ; ] ; ;end ; ; ; ;; [ ask n-of group-size turtles with [ current-group = 0 ] ;; [ set current-group number-groups ] ;; set leaders (turtle-set leaders (one-of turtles with [current-group = number-groups ]) ) ;; set number-groups number-groups - 1 ] ;; ask turtles with [ current-group = 0 ] ;; [ die ] ;; ;; layout-circle chiefs 13 ;; ask chiefs ;; [ ask patch-here ;; [ set group-center [ current-group ] of myself ] ] ;; ask turtles ;; [ join ] ; ;;end ; ;;to join ;; move-to one-of patches with [group-center = [ current-group ] of myself ] ;; bk 2 ;;end ; ; ; ; ;;; Put together a team of 1 chief, 3 seniors and 4 interns who will work together ; ;;to call-team ;; ask turtles [ set rounding? false ] ;; ask one-of chiefs [set rounding? true] ;; ask n-of 3 seniors [set rounding? true] ;; ask n-of 4 interns [set rounding? true] ;;end ; ;;; As the chief to pick a spot for them to conduct rounds ;;; If privacy is true they try to pick a spot without other people around ;;; If privacy is false they pick a spot with lots of other doctors around ; ; ;;; Ask interns and seniors to assess the expectations of their superiors, and set their actions accordingly ;;; If anyone of higher status expects them to work long hours, they will do so ;;; Otherwise they'll follow their own opinion ; ;to assess-expectations ; ask interns with [ rounding? = true ] ; [ ifelse any? chiefs in-radius 3 with [ opinion = "defender" ] ; [ set action "long hours"] ; [ ifelse any? seniors in-radius 3 with [ opinion = "defender" ] ; [ set action "long hours"] ; [ enact-own-opinion ] ] ] ; ask seniors with [ rounding? = true ] ; [ ifelse any? chiefs in-radius 3 with [ opinion = "defender" ] ; [ set action "long hours"] ; [ enact-own-opinion ] ] ;end ; ;to enact-own-opinion ; if opinion = "defender" ; [ set action "long hours"] ; if opinion = "reformer" ; [ set action "shorter hours"] ;end ; ;;; Let doctors have their minds changed by those they interact with on rounds ;;; Doctors are influenced by those of the same or higher status ;;; Chiefs are only influenced if everyone they're working with on a shift came in ;; already working in the reform way (ie with shorter hours) ; ;to be-influenced ; ask turtles with [ rounding? = true and influencers != 0 ] ; [ if count influencers with [ opinion = "reformer" ] > count influencers with [ opinion = "defender" ] ; [ set opinion "reformer" ] ; if count influencers with [ opinion = "reformer" ] < count influencers with [ opinion = "defender" ] ; [ set opinion "defender" ] ] ; ask chiefs with [ rounding? = true ] ; [ if count turtles with [ rounding? = true and action = "shorter hours"] = count turtles with [rounding? = true ] ; [ set opinion "reformer" ] ] ; ;end ; ; ;to find-influencers ; ask turtles ; [ if is-intern? self ; [ set influencers (turtle-set chiefs with [ rounding? = true ] seniors with [ rounding? = true ] interns with [rounding? = true]) ] ; if is-senior? self ; [ set influencers (turtle-set chiefs with [ rounding? = true ] seniors with [ rounding? = true ] ) ] ] ;end ;to service-setup ; let number-groups count chiefs ; ask chiefs ; [ set service number-groups ; ask n-of 2 seniors ; [ set service number-groups ] ; ; join ] ; ask one-of interns ; [ set service number-groups ] ; ; join ] ; set number-groups number-groups - 1 ] ; ; ;end ; ;to network-setup ; build-formal-ties ; build-informal-ties ;end ; ; ;to build-formal-ties ; ;; create formal, directed ties between people on the same service ; ;; the higher status people give orders, the lower people follow them ; ; ;end ; ; ;to build-informal-ties ; ;; create informal positive ties among people at similar status levels who have similar opinions about the reform ; ;; create informal positive directed links bewteen high status people and underlings who do what they want them to ; ;; create informal negative directed inks between high status people and underlings who implement the reform?? ; ; ; ;end ;to go ; switch-services ; act ; interact ; ; tick ;end ; ; ; ;to act ; ; ;end ; ; ;to interact ; ; ;end ;to arrive ; ask turtles ; [ if current-time = arrival-time ; [ show-turtle ] ] ;end ;to leave ; ask turtles ; [ if current-time = leaving-time ; [ hide-turtle ] ] ;end

There are 3 versions of this model.

## Attached files

File | Type | Description | Last updated | |
---|---|---|---|---|

EleanorAnderson_ 6 03 13.docx | word | project update 6 3 13 | over 7 years ago, by Eleanor Anderson | Download |

project update 5 18 13.docx | word | Update 5 18 13 | over 7 years ago, by Eleanor Anderson | Download |

This model does not have any ancestors.

This model does not have any descendants.