globals [ticks-at-start-evacuation] breed [students student] breed [employees employee] turtles-own [phase-normal; 0=outside, 1=in-library, 2=in-hall-of-glass, 3=at-wanted-study-place, 4=leaving-wanted-study-place phase-evacuation; ] students-own [wanted-study-place distance-to-wall next-to-wall bumping just-created wanted-entrance ticks-student-will-stay ticks-student-stay-left knowledge-of-emergency-exits wanted-exit wanted-meetup-patch outside-building ] employees-own [time-staying-employees] patches-own [meetup-point? exit] to setup clear-all create-library set ticks-at-start-evacuation false set-default-shape turtles "person" reset-ticks end to go if count turtles > 0 [if evacuation = "YES" [if count turtles = count turtles-on patches with [meetup-point? = true] [ Print "" Print "" Print "New run:" type "After " type (ticks - ticks-at-start-evacuation) type " ticks everyone was at the meetup-point" Print "" Print "Model has been stopped"]]] if count turtles > 0 [if count turtles = count turtles-on patches with [meetup-point? = true] [ stop]] if evacuation = "YES" [if ticks-at-start-evacuation = false [set ticks-at-start-evacuation ticks] ] if (count students < max-students) [ create-students 1 [ set color orange set heading 0 set phase-normal 0 set phase-evacuation 0 set next-to-wall 0 set bumping 0 set just-created 2 set ticks-student-will-stay random (average-ticks-students-stay * 2) set ticks-student-stay-left ticks-student-will-stay set wanted-exit one-of patches with [exit > 0] set wanted-meetup-patch one-of patches with [meetup-point? = true] set wanted-entrance one-of patches with [pcolor = 45] move-to one-of patches with [pxcor > 30 and pxcor < 100 and pycor = 0] set wanted-study-place one-of patches with [pcolor = green] while [any? other turtles with [wanted-study-place = [wanted-study-place] of myself] ] [set wanted-study-place one-of patches with [pcolor = green] ] ] ] patch-occupied? create-employees 0 [set color red] ask turtles [just-created?] ask turtles [dont-hit-walls] ask turtles [dont-bump] if evacuation = "NO" [ask turtles [normal-procedure]] if evacuation = "YES" [ask turtles [evacuation-procedure]] fix-errors tick end to patch-occupied? ask patches with [pcolor = green] [if any? students-here [set pcolor red] ] ask patches with [pcolor = red ] [if count students-here < 1 [set pcolor green] ] end to just-created? if just-created = 1 [fd 1.1 set just-created 0] if just-created = 2 [fd 1.1 set just-created 1] end to dont-hit-walls if any? patches in-cone 2 45 with [pcolor = black] [face min-one-of patches with [pcolor = black] [distance myself] right 180 fd 0.2 set next-to-wall 2] if next-to-wall = 2 [fd 0.2 set next-to-wall 1] if next-to-wall = 1 [fd 0.2 set next-to-wall 0] end to dont-bump ; if (count turtles in-cone 0.5 60) > 1 [set bumping 1 fd 0.1] ; if (count turtles in-cone 0.5 60) < 2 [set bumping 0] end ;;;;;;; START NORMAL PROCEDURE ;;;;;;; to normal-procedure ;; procedure when there is no evacuation move-students end to move-students ;; student procedure if next-to-wall = 0 [if bumping = 0 [if just-created = 0 [ if phase-normal = 0 [face wanted-entrance fd 0.2] if phase-normal = 0 [if any? patches in-radius 1 with [pcolor = pink] [fd 0.6 set phase-normal 1 set wanted-entrance one-of patches with [pcolor = 44]]] if phase-normal = 1 [face wanted-entrance fd 0.2] if phase-normal = 1 [if any? patches in-radius 1 with [pcolor = 44] [lt 45 fd 0.2 set phase-normal 2]] if phase-normal = 2 [if any? patches in-radius 1 with [pcolor = 44] [lt 45 fd 0.2 set phase-normal 2]] if phase-normal = 2 [face wanted-study-place fd 0.2 if patch-here = wanted-study-place [move-to wanted-study-place set phase-normal 3]] ; let turtles move to center of the patch if phase-normal = 3 [set ticks-student-stay-left (ticks-student-stay-left - 1) if ticks-student-stay-left < 0 [set phase-normal 4]] if phase-normal = 4 [face patch 52 60 fd 0.2 if patch-here = patch 52 60 [move-to patch 53 60 set phase-normal 5]] if phase-normal = 5 [face patch 76 31 fd 0.2] if phase-normal = 5 [if patch-here = patch 76 31 [set phase-normal 6]] if phase-normal = 6 [set heading 180 fd 0.2] if phase-normal = 6 [if patch-here = patch 76 0 [die]] ] ] ] end ;;;;;;; END NORMAL PROCEDURE ;;;;;;; ;;;;;;; START EVACUATION PROCEDURE ;;;;;;; to evacuation-procedure ;; procedure when evacuation is in progress if next-to-wall = 0 [if bumping = 0 [if just-created = 0 [ if phase-normal = 0 [] if phase-normal = 0 [face wanted-meetup-patch fd 0.5] if phase-normal = 1 [set phase-evacuation 1 set phase-normal 100] if phase-normal = 6 and phase-evacuation = 0 [set phase-evacuation 6] if phase-normal = 5 and phase-evacuation = 0 [set phase-normal 1 set phase-evacuation 1] if phase-normal = 5 and phase-evacuation = 1 [set phase-evacuation 0] if phase-normal = 2 and phase-evacuation = 1 [set phase-normal 100 set phase-evacuation 0] if phase-normal = 2 and phase-evacuation = 0 [set phase-evacuation 1] if phase-evacuation = 0 [face min-one-of patches with [pcolor = 44] [distance myself] fd 0.2] if phase-evacuation = 0 [if any? patches in-radius 0.3 with [pcolor = 44] [fd 1 set phase-evacuation 1]] if phase-evacuation = 1 [face wanted-exit fd 0.2] if phase-evacuation = 1 [if (wanted-exit = patch 76 30) or (wanted-exit = patch 77 30) or (wanted-exit = patch 81 28) or (wanted-exit = patch 82 28) or (wanted-exit = patch 115 80) or (wanted-exit = patch 115 81) [ if any? patches in-radius 0.3 with [pcolor = 45 or pcolor = 105] [fd 1 set phase-evacuation 2]]] if phase-evacuation = 1 [if (wanted-exit = patch 43 90) or (wanted-exit = patch 44 90) [ if any? patches in-radius 0.3 with [pcolor = 45 or pcolor = 105] [fd 0.2 set phase-evacuation 2]]] if phase-evacuation = 2 [if (wanted-exit = patch 76 30) or (wanted-exit = patch 77 30) or (wanted-exit = patch 81 28) or (wanted-exit = patch 82 28) [ face wanted-meetup-patch fd 0.2 set outside-building true]]] if phase-evacuation = 2 [if (wanted-exit = patch 43 90) or (wanted-exit = patch 44 90) [ if patch-here = patch 43 90 [fd 1 set phase-evacuation 3 set outside-building true] if patch-here = patch 44 90 [fd 1 set phase-evacuation 3 set outside-building true]]] if phase-evacuation = 2 [if (wanted-exit = patch 115 80) or (wanted-exit = patch 115 81) [ face patch 123 72 fd 0.2 if patch-here = patch 123 72[set phase-evacuation 3]]] if phase-evacuation = 3 [if (wanted-exit = patch 43 90) or (wanted-exit = patch 44 90) [ set heading 270 fd 0.2 set phase-evacuation 4]] if phase-evacuation = 3 [if (wanted-exit = patch 115 80) or (wanted-exit = patch 115 81) [ face patch 123 15 fd 0.2 if patch-here = patch 123 15 [set phase-evacuation 4]]] if phase-evacuation = 4 [if (wanted-exit = patch 43 90) or (wanted-exit = patch 44 90) [ fd 0.2 if patch-here = patch 18 91 [set heading 180 fd 0.2 set phase-evacuation 5]]] if phase-evacuation = 4 [if (wanted-exit = patch 115 80) or (wanted-exit = patch 115 81) [ face wanted-meetup-patch fd 0.2]] if phase-evacuation = 5 [if (wanted-exit = patch 43 90) or (wanted-exit = patch 44 90) [ face wanted-meetup-patch fd 0.2]] if phase-evacuation = 6 [face wanted-meetup-patch fd 0.2] if patch-here = patch 76 29 or patch-here = patch 77 29 or patch-here = patch 80 28 or patch-here = patch 80 27 [set outside-building true] ; if (patch-here = patches with [outside-building = true]) [print 1] ] ] end ;;;;;;; END EVACUATION PROCEDURE ;;;;;;; ;;;;;;; START SETUP PROCEDURE ;;;;;;; to create-library ;; create library walls and study places using coloured patches (see bottom of code) ask patches [set pcolor 139] ;; set background of all patches to almost white ask patches [set meetup-point? false] define-exits meetup-points create-entrance create-walls hall-of-glass doors study-places end to define-exits ask patches [set exit 0] ask patch 76 30 [set exit 1] ask patch 77 30 [set exit 2] ask patch 81 28 [set exit 3] ask patch 82 28 [set exit 4] ask patch 43 90 [set exit 5] ask patch 44 90 [set exit 6] ask patch 115 81 [set exit 7] ask patch 115 80 [set exit 8] end to meetup-points ;; create meetup-point for the case of an evacuation ask patch 65 5 [set meetup-point? true] ask patch 65 5 [set meetup-point? true] ask patch 63 3 [set meetup-point? true] ask patch 64 3 [set meetup-point? true] ask patch 65 3 [set meetup-point? true] ask patch 66 3 [set meetup-point? true] ask patch 67 3 [set meetup-point? true] ask patch 63 4 [set meetup-point? true] ask patch 64 4 [set meetup-point? true] ask patch 65 4 [set meetup-point? true] ask patch 66 4 [set meetup-point? true] ask patch 67 4 [set meetup-point? true] ask patch 63 5 [set meetup-point? true] ask patch 64 5 [set meetup-point? true] ask patch 65 5 [set meetup-point? true] ask patch 66 5 [set meetup-point? true] ask patch 67 5 [set meetup-point? true] ask patch 63 6 [set meetup-point? true] ask patch 64 6 [set meetup-point? true] ask patch 65 6 [set meetup-point? true] ask patch 66 6 [set meetup-point? true] ask patch 67 6 [set meetup-point? true] ask patch 63 7 [set meetup-point? true] ask patch 64 7 [set meetup-point? true] ask patch 65 7 [set meetup-point? true] ask patch 66 7 [set meetup-point? true] ask patch 67 7 [set meetup-point? true] end ;; create library using coloured patches ;; to create-entrance ;; create library entrance using coloured patches, to let students start looking for a study place once they enter the library ask patch 76 31 [set pcolor pink] ask patch 77 31 [set pcolor pink] ask patch 81 29 [set pcolor pink] ask patch 82 29 [set pcolor pink] end to create-walls ;; create walls by colouring wall-patches black ;;; upper line ;;; ask patch 21 90 [set pcolor black] ask patch 22 90 [set pcolor black] ask patch 23 90 [set pcolor black] ask patch 24 90 [set pcolor black] ask patch 25 90 [set pcolor black] ask patch 26 90 [set pcolor black] ask patch 27 90 [set pcolor black] ask patch 28 90 [set pcolor black] ask patch 29 90 [set pcolor black] ask patch 30 90 [set pcolor black] ask patch 31 90 [set pcolor black] ask patch 32 90 [set pcolor black] ask patch 33 90 [set pcolor black] ask patch 34 90 [set pcolor black] ask patch 35 90 [set pcolor black] ask patch 36 90 [set pcolor black] ask patch 37 90 [set pcolor black] ask patch 38 90 [set pcolor black] ask patch 39 90 [set pcolor black] ask patch 40 90 [set pcolor black] ask patch 41 90 [set pcolor black] ask patch 42 90 [set pcolor black] ask patch 43 90 [set pcolor black] ask patch 44 90 [set pcolor black] ask patch 45 90 [set pcolor black] ask patch 46 90 [set pcolor black] ask patch 47 90 [set pcolor black] ask patch 48 90 [set pcolor black] ask patch 49 90 [set pcolor black] ask patch 50 90 [set pcolor black] ask patch 51 90 [set pcolor black] ask patch 52 90 [set pcolor black] ask patch 53 90 [set pcolor black] ask patch 54 90 [set pcolor black] ask patch 55 90 [set pcolor black] ask patch 56 90 [set pcolor black] ask patch 57 90 [set pcolor black] ask patch 58 90 [set pcolor black] ask patch 59 90 [set pcolor black] ask patch 60 90 [set pcolor black] ask patch 61 90 [set pcolor black] ask patch 62 90 [set pcolor black] ask patch 63 90 [set pcolor black] ask patch 64 90 [set pcolor black] ask patch 65 90 [set pcolor black] ask patch 66 90 [set pcolor black] ask patch 67 90 [set pcolor black] ask patch 68 90 [set pcolor black] ask patch 69 90 [set pcolor black] ask patch 70 90 [set pcolor black] ask patch 71 90 [set pcolor black] ask patch 72 90 [set pcolor black] ask patch 73 90 [set pcolor black] ask patch 74 90 [set pcolor black] ask patch 75 90 [set pcolor black] ask patch 76 90 [set pcolor black] ask patch 77 90 [set pcolor black] ask patch 78 90 [set pcolor black] ask patch 79 90 [set pcolor black] ask patch 80 90 [set pcolor black] ask patch 81 90 [set pcolor black] ask patch 82 90 [set pcolor black] ask patch 83 90 [set pcolor black] ask patch 84 90 [set pcolor black] ask patch 85 90 [set pcolor black] ask patch 86 90 [set pcolor black] ask patch 87 90 [set pcolor black] ask patch 88 90 [set pcolor black] ask patch 89 90 [set pcolor black] ask patch 90 90 [set pcolor black] ask patch 91 90 [set pcolor black] ask patch 92 90 [set pcolor black] ask patch 93 90 [set pcolor black] ask patch 94 90 [set pcolor black] ask patch 95 90 [set pcolor black] ask patch 96 90 [set pcolor black] ask patch 97 90 [set pcolor black] ask patch 98 90 [set pcolor black] ask patch 99 90 [set pcolor black] ask patch 100 90 [set pcolor black] ask patch 101 90 [set pcolor black] ask patch 102 90 [set pcolor black] ask patch 103 90 [set pcolor black] ask patch 104 90 [set pcolor black] ask patch 105 90 [set pcolor black] ask patch 106 90 [set pcolor black] ask patch 107 90 [set pcolor black] ask patch 108 90 [set pcolor black] ask patch 109 90 [set pcolor black] ask patch 110 90 [set pcolor black] ask patch 111 90 [set pcolor black] ask patch 112 90 [set pcolor black] ask patch 113 90 [set pcolor black] ask patch 114 90 [set pcolor black] ;;; left line ;;; ask patch 21 89 [set pcolor black] ask patch 21 88 [set pcolor black] ask patch 22 87 [set pcolor black] ask patch 22 86 [set pcolor black] ask patch 23 85 [set pcolor black] ask patch 23 84 [set pcolor black] ask patch 24 83 [set pcolor black] ask patch 25 82 [set pcolor black] ask patch 25 81 [set pcolor black] ask patch 26 80 [set pcolor black] ask patch 26 79 [set pcolor black] ask patch 27 78 [set pcolor black] ask patch 28 77 [set pcolor black] ask patch 28 76 [set pcolor black] ask patch 29 75 [set pcolor black] ask patch 29 74 [set pcolor black] ask patch 30 73 [set pcolor black] ask patch 30 72 [set pcolor black] ask patch 31 71 [set pcolor black] ask patch 32 70 [set pcolor black] ask patch 32 69 [set pcolor black] ask patch 33 68 [set pcolor black] ask patch 33 67 [set pcolor black] ask patch 34 66 [set pcolor black] ask patch 34 65 [set pcolor black] ask patch 35 64 [set pcolor black] ask patch 36 63 [set pcolor black] ask patch 36 62 [set pcolor black] ask patch 37 61 [set pcolor black] ask patch 37 60 [set pcolor black] ask patch 38 59 [set pcolor black] ask patch 38 58 [set pcolor black] ask patch 39 57 [set pcolor black] ask patch 40 56 [set pcolor black] ask patch 40 55 [set pcolor black] ask patch 41 54 [set pcolor black] ask patch 41 53 [set pcolor black] ask patch 42 52 [set pcolor black] ask patch 43 51 [set pcolor black] ask patch 43 50 [set pcolor black] ask patch 44 49 [set pcolor black] ask patch 44 48 [set pcolor black] ask patch 45 47 [set pcolor black] ask patch 45 46 [set pcolor black] ask patch 46 45 [set pcolor black] ask patch 47 44 [set pcolor black] ask patch 47 43 [set pcolor black] ask patch 48 42 [set pcolor black] ask patch 48 41 [set pcolor black] ask patch 49 40 [set pcolor black] ask patch 49 39 [set pcolor black] ask patch 50 38 [set pcolor black] ;;; lower line ;;; ask patch 50 38 [set pcolor black] ask patch 51 37 [set pcolor black] ask patch 52 37 [set pcolor black] ask patch 53 37 [set pcolor black] ask patch 54 36 [set pcolor black] ask patch 55 36 [set pcolor black] ask patch 56 36 [set pcolor black] ask patch 57 36 [set pcolor black] ask patch 58 35 [set pcolor black] ask patch 59 35 [set pcolor black] ask patch 60 35 [set pcolor black] ask patch 61 34 [set pcolor black] ask patch 62 34 [set pcolor black] ask patch 63 34 [set pcolor black] ask patch 64 33 [set pcolor black] ask patch 65 33 [set pcolor black] ask patch 66 33 [set pcolor black] ask patch 67 33 [set pcolor black] ask patch 68 32 [set pcolor black] ask patch 69 32 [set pcolor black] ask patch 70 32 [set pcolor black] ask patch 71 31 [set pcolor black] ask patch 72 31 [set pcolor black] ask patch 73 31 [set pcolor black] ask patch 74 30 [set pcolor black] ask patch 75 30 [set pcolor black] ask patch 76 30 [set pcolor black] ask patch 77 30 [set pcolor black] ask patch 78 29 [set pcolor black] ask patch 79 29 [set pcolor black] ask patch 80 29 [set pcolor black] ask patch 81 28 [set pcolor black] ask patch 82 28 [set pcolor black] ask patch 83 28 [set pcolor black] ask patch 84 27 [set pcolor black] ask patch 85 27 [set pcolor black] ask patch 86 27 [set pcolor black] ask patch 87 27 [set pcolor black] ask patch 88 26 [set pcolor black] ask patch 89 26 [set pcolor black] ask patch 90 26 [set pcolor black] ask patch 91 25 [set pcolor black] ask patch 92 25 [set pcolor black] ask patch 93 25 [set pcolor black] ask patch 94 24 [set pcolor black] ask patch 95 24 [set pcolor black] ask patch 96 24 [set pcolor black] ask patch 97 24 [set pcolor black] ask patch 98 23 [set pcolor black] ask patch 99 23 [set pcolor black] ask patch 100 23 [set pcolor black] ask patch 101 22 [set pcolor black] ask patch 102 22 [set pcolor black] ask patch 103 22 [set pcolor black] ask patch 104 21 [set pcolor black] ask patch 105 21 [set pcolor black] ask patch 106 21 [set pcolor black] ask patch 107 21 [set pcolor black] ask patch 108 20 [set pcolor black] ask patch 109 20 [set pcolor black] ask patch 110 20 [set pcolor black] ask patch 111 19 [set pcolor black] ask patch 112 19 [set pcolor black] ask patch 113 19 [set pcolor black] ask patch 114 18 [set pcolor black] ask patch 115 18 [set pcolor black] ask patch 116 18 [set pcolor black] ask patch 117 18 [set pcolor black] ask patch 118 17 [set pcolor black] ask patch 119 17 [set pcolor black] ask patch 120 17 [set pcolor black] ;;; right line ;;; ask patch 114 90 [set pcolor black] ask patch 114 89 [set pcolor black] ask patch 114 88 [set pcolor black] ask patch 114 87 [set pcolor black] ask patch 114 86 [set pcolor black] ask patch 114 85 [set pcolor black] ask patch 114 84 [set pcolor black] ask patch 115 83 [set pcolor black] ask patch 115 82 [set pcolor black] ask patch 115 81 [set pcolor black] ask patch 115 80 [set pcolor black] ask patch 115 79 [set pcolor black] ask patch 115 78 [set pcolor black] ask patch 115 77 [set pcolor black] ask patch 115 76 [set pcolor black] ask patch 115 75 [set pcolor black] ask patch 115 74 [set pcolor black] ask patch 115 73 [set pcolor black] ask patch 115 72 [set pcolor black] ask patch 116 71 [set pcolor black] ask patch 116 70 [set pcolor black] ask patch 116 69 [set pcolor black] ask patch 116 68 [set pcolor black] ask patch 116 67 [set pcolor black] ask patch 116 66 [set pcolor black] ask patch 116 65 [set pcolor black] ask patch 116 64 [set pcolor black] ask patch 116 63 [set pcolor black] ask patch 116 62 [set pcolor black] ask patch 116 61 [set pcolor black] ask patch 116 60 [set pcolor black] ask patch 117 59 [set pcolor black] ask patch 117 58 [set pcolor black] ask patch 117 57 [set pcolor black] ask patch 117 56 [set pcolor black] ask patch 117 55 [set pcolor black] ask patch 117 54 [set pcolor black] ask patch 117 53 [set pcolor black] ask patch 117 52 [set pcolor black] ask patch 117 51 [set pcolor black] ask patch 117 50 [set pcolor black] ask patch 117 49 [set pcolor black] ask patch 117 48 [set pcolor black] ask patch 118 47 [set pcolor black] ask patch 118 46 [set pcolor black] ask patch 118 45 [set pcolor black] ask patch 118 44 [set pcolor black] ask patch 118 43 [set pcolor black] ask patch 118 42 [set pcolor black] ask patch 118 41 [set pcolor black] ask patch 118 40 [set pcolor black] ask patch 118 39 [set pcolor black] ask patch 118 38 [set pcolor black] ask patch 118 37 [set pcolor black] ask patch 118 36 [set pcolor black] ask patch 119 35 [set pcolor black] ask patch 119 34 [set pcolor black] ask patch 119 33 [set pcolor black] ask patch 119 32 [set pcolor black] ask patch 119 31 [set pcolor black] ask patch 119 30 [set pcolor black] ask patch 119 29 [set pcolor black] ask patch 119 28 [set pcolor black] ask patch 119 27 [set pcolor black] ask patch 119 26 [set pcolor black] ask patch 119 25 [set pcolor black] ask patch 119 24 [set pcolor black] ask patch 120 23 [set pcolor black] ask patch 120 22 [set pcolor black] ask patch 120 21 [set pcolor black] ask patch 120 20 [set pcolor black] ask patch 120 19 [set pcolor black] ask patch 120 18 [set pcolor black] ask patch 120 17 [set pcolor black] end to hall-of-glass ;; create walls of hall-of-glass by colouring wall-patches black ;;; right line ;;; ask patch 35 90 [set pcolor black] ask patch 36 89 [set pcolor black] ask patch 36 88 [set pcolor black] ask patch 37 87 [set pcolor black] ask patch 37 86 [set pcolor black] ask patch 38 85 [set pcolor black] ask patch 38 84 [set pcolor black] ask patch 39 83 [set pcolor black] ask patch 40 82 [set pcolor black] ask patch 40 81 [set pcolor black] ask patch 41 80 [set pcolor black] ask patch 41 79 [set pcolor black] ask patch 42 78 [set pcolor black] ask patch 43 77 [set pcolor black] ask patch 43 76 [set pcolor black] ask patch 44 75 [set pcolor black] ask patch 44 74 [set pcolor black] ask patch 45 73 [set pcolor black] ask patch 45 72 [set pcolor black] ask patch 46 71 [set pcolor black] ask patch 47 70 [set pcolor black] ask patch 47 69 [set pcolor black] ask patch 48 68 [set pcolor black] ask patch 48 67 [set pcolor black] ask patch 49 66 [set pcolor black] ask patch 49 65 [set pcolor black] ask patch 50 64 [set pcolor black] ask patch 51 63 [set pcolor black] ask patch 51 62 [set pcolor black] ask patch 52 61 [set pcolor black] ask patch 52 60 [set pcolor black] ask patch 53 59 [set pcolor black] ask patch 53 58 [set pcolor black] ask patch 54 57 [set pcolor black] ask patch 55 56 [set pcolor black] ask patch 55 55 [set pcolor black] ask patch 56 54 [set pcolor black] ask patch 56 53 [set pcolor black] ask patch 57 52 [set pcolor black] ask patch 58 51 [set pcolor black] ask patch 58 50 [set pcolor black] ask patch 59 49 [set pcolor black] ask patch 59 48 [set pcolor black] ask patch 60 47 [set pcolor black] ask patch 60 46 [set pcolor black] ask patch 61 45 [set pcolor black] ask patch 62 44 [set pcolor black] ask patch 62 43 [set pcolor black] ask patch 63 42 [set pcolor black] ask patch 63 41 [set pcolor black] ask patch 64 40 [set pcolor black] ask patch 64 39 [set pcolor black] ask patch 65 38 [set pcolor black] ask patch 66 37 [set pcolor black] ask patch 66 36 [set pcolor black] ask patch 67 35 [set pcolor black] ask patch 67 34 [set pcolor black] ask patch 68 33 [set pcolor black] ask patch 68 32 [set pcolor black] ;;; lower line ;;; ask patch 42 53 [set pcolor black] ask patch 43 53 [set pcolor black] ask patch 44 53 [set pcolor black] ask patch 45 53 [set pcolor black] ask patch 46 53 [set pcolor black] ask patch 47 53 [set pcolor black] ask patch 48 53 [set pcolor black] ask patch 49 53 [set pcolor black] ask patch 50 53 [set pcolor black] ask patch 51 53 [set pcolor black] ask patch 52 53 [set pcolor black] ask patch 53 53 [set pcolor black] ask patch 54 53 [set pcolor black] ask patch 55 53 [set pcolor black] ask patch 56 53 [set pcolor black] ;;; upper line ;;; ask patch 26 79 [set pcolor black] ask patch 27 79 [set pcolor black] ask patch 28 79 [set pcolor black] ask patch 29 79 [set pcolor black] ask patch 30 79 [set pcolor black] ask patch 31 79 [set pcolor black] ask patch 32 79 [set pcolor black] ask patch 33 79 [set pcolor black] ask patch 34 79 [set pcolor black] ask patch 35 79 [set pcolor black] ask patch 36 79 [set pcolor black] ask patch 37 79 [set pcolor black] ask patch 38 79 [set pcolor black] ask patch 39 79 [set pcolor black] ask patch 40 79 [set pcolor black] ask patch 41 79 [set pcolor black] ask patch 42 79 [set pcolor black] end to doors ;; create doors by colouring door-patches green ;; normal doors are yellow, emergency doors are blue ;;; main entrances library ;;; ask patch 76 30 [set pcolor 45] ask patch 77 30 [set pcolor 45] ask patch 81 28 [set pcolor 45] ask patch 82 28 [set pcolor 45] ;;; entrances hall-of-glass ;;; ask patch 51 63 [set pcolor 44] ask patch 51 62 [set pcolor 44] ask patch 52 61 [set pcolor 44] ask patch 52 60 [set pcolor 44] ;;; emergency doors first floor ;;; ask patch 43 90 [set pcolor 105] ask patch 44 90 [set pcolor 105] ask patch 115 80 [set pcolor 105] ask patch 115 81 [set pcolor 105] end to study-places ;; create study-places by colouring study-place-patches green ;;; study-places left side of room-of-glass ;;; ;ask patch 29 76 [set pcolor green] ;ask patch 30 75 [set pcolor green] ;ask patch 30 74 [set pcolor green] ;ask patch 31 73 [set pcolor green] ;ask patch 31 72 [set pcolor green] ;ask patch 32 71 [set pcolor green] ;ask patch 33 70 [set pcolor green] ;ask patch 33 69 [set pcolor green] ;ask patch 34 68 [set pcolor green] ;ask patch 34 67 [set pcolor green] ;ask patch 35 66 [set pcolor green] ;ask patch 35 65 [set pcolor green] ;ask patch 36 64 [set pcolor green] ;ask patch 37 63 [set pcolor green] ;ask patch 37 62 [set pcolor green] ;ask patch 38 61 [set pcolor green] ;ask patch 38 60 [set pcolor green] ;ask patch 39 59 [set pcolor green] ;ask patch 39 58 [set pcolor green] ;ask patch 40 57 [set pcolor green] ;ask patch 41 56 [set pcolor green] ;ask patch 41 55 [set pcolor green] ;;; study-places upper side of room-of-glass ;;; ;;; study-places in middle of room-of-glass, rows from top to bottom ;;; ;; row 1 ask patch 32 76 [set pcolor green] ask patch 33 76 [set pcolor green] ask patch 34 76 [set pcolor green] ask patch 35 76 [set pcolor green] ask patch 36 76 [set pcolor green] ask patch 37 76 [set pcolor green] ask patch 38 76 [set pcolor green] ask patch 39 76 [set pcolor green] ask patch 40 76 [set pcolor green] ask patch 41 76 [set pcolor green] ask patch 33 75 [set pcolor green] ask patch 34 75 [set pcolor green] ask patch 35 75 [set pcolor green] ask patch 36 75 [set pcolor green] ask patch 37 75 [set pcolor green] ask patch 38 75 [set pcolor green] ask patch 39 75 [set pcolor green] ask patch 40 75 [set pcolor green] ask patch 41 75 [set pcolor green] ;; row 2 ask patch 34 72 [set pcolor green] ask patch 35 72 [set pcolor green] ask patch 36 72 [set pcolor green] ask patch 37 72 [set pcolor green] ask patch 38 72 [set pcolor green] ask patch 39 72 [set pcolor green] ask patch 40 72 [set pcolor green] ask patch 41 72 [set pcolor green] ask patch 42 72 [set pcolor green] ask patch 43 72 [set pcolor green] ask patch 35 71 [set pcolor green] ask patch 36 71 [set pcolor green] ask patch 37 71 [set pcolor green] ask patch 38 71 [set pcolor green] ask patch 39 71 [set pcolor green] ask patch 40 71 [set pcolor green] ask patch 41 71 [set pcolor green] ask patch 42 71 [set pcolor green] ask patch 43 71 [set pcolor green] ;; row 3 ask patch 36 68 [set pcolor green] ask patch 37 68 [set pcolor green] ask patch 38 68 [set pcolor green] ask patch 39 68 [set pcolor green] ask patch 40 68 [set pcolor green] ask patch 41 68 [set pcolor green] ask patch 42 68 [set pcolor green] ask patch 43 68 [set pcolor green] ask patch 44 68 [set pcolor green] ask patch 45 68 [set pcolor green] ask patch 37 67 [set pcolor green] ask patch 38 67 [set pcolor green] ask patch 39 67 [set pcolor green] ask patch 40 67 [set pcolor green] ask patch 41 67 [set pcolor green] ask patch 42 67 [set pcolor green] ask patch 43 67 [set pcolor green] ask patch 44 67 [set pcolor green] ask patch 45 67 [set pcolor green] ;; row 4 ask patch 39 64 [set pcolor green] ask patch 40 64 [set pcolor green] ask patch 41 64 [set pcolor green] ask patch 42 64 [set pcolor green] ask patch 43 64 [set pcolor green] ask patch 44 64 [set pcolor green] ask patch 45 64 [set pcolor green] ask patch 46 64 [set pcolor green] ask patch 47 64 [set pcolor green] ask patch 39 63 [set pcolor green] ask patch 40 63 [set pcolor green] ask patch 41 63 [set pcolor green] ask patch 42 63 [set pcolor green] ask patch 43 63 [set pcolor green] ask patch 44 63 [set pcolor green] ask patch 45 63 [set pcolor green] ask patch 46 63 [set pcolor green] ask patch 47 63 [set pcolor green] ;; row 5 ask patch 41 60 [set pcolor green] ask patch 42 60 [set pcolor green] ask patch 43 60 [set pcolor green] ask patch 44 60 [set pcolor green] ask patch 45 60 [set pcolor green] ask patch 46 60 [set pcolor green] ask patch 47 60 [set pcolor green] ask patch 48 60 [set pcolor green] ask patch 49 60 [set pcolor green] ask patch 41 59 [set pcolor green] ask patch 42 59 [set pcolor green] ask patch 43 59 [set pcolor green] ask patch 44 59 [set pcolor green] ask patch 45 59 [set pcolor green] ask patch 46 59 [set pcolor green] ask patch 47 59 [set pcolor green] ask patch 48 59 [set pcolor green] ask patch 49 59 [set pcolor green] ;; row 6 ask patch 44 56 [set pcolor green] ask patch 45 56 [set pcolor green] ask patch 46 56 [set pcolor green] ask patch 47 56 [set pcolor green] ask patch 48 56 [set pcolor green] ask patch 49 56 [set pcolor green] ask patch 50 56 [set pcolor green] ask patch 51 56 [set pcolor green] ask patch 52 56 [set pcolor green] ask patch 44 55 [set pcolor green] ask patch 45 55 [set pcolor green] ask patch 46 55 [set pcolor green] ask patch 47 55 [set pcolor green] ask patch 48 55 [set pcolor green] ask patch 49 55 [set pcolor green] ask patch 50 55 [set pcolor green] ask patch 51 55 [set pcolor green] ask patch 52 55 [set pcolor green] end ;;;;;;; END SETUP PROCEDURE ;;;;;;; to fix-errors ; fixing errors of which source cannot be found manually if evacuation = "NO" [ask turtles [if phase-normal < 4 [if patch-here = patch 52 56 [if wanted-study-place = patch 52 55 [move-to wanted-study-place set phase-normal 3 ]]]]] ; especially for this patch, otherwise two turtles will end up on 1 patch if evacuation = "NO" [ask turtles [if phase-normal < 4 [if patch-here = patch 51 56 [if wanted-study-place = patch 51 55 [move-to wanted-study-place set phase-normal 3]]]]] ; especially for this patch, otherwise two turtles will end up on 1 patch end @#$#@#$#@ GRAPHICS-WINDOW 210 10 1724 655 -1 -1 6.0 1 10 1 1 1 0 0 0 1 0 250 0 105 0 0 1 ticks 30.0 BUTTON 4 11 81 44 setup setup NIL 1 T OBSERVER NIL NIL NIL NIL 1 BUTTON 5 47 82 80 go-once go NIL 1 T OBSERVER NIL NIL NIL NIL 1 BUTTON 6 83 82 116 go go T 1 T OBSERVER NIL NIL NIL NIL 1 MONITOR 16 283 189 328 Available study-places count patches with [pcolor = green] 17 1 11 MONITOR 16 332 188 377 Unavailable study-places (in use) count patches with [pcolor = red] 17 1 11 MONITOR 19 482 191 527 Student count Count students 17 1 11 SLIDER 6 120 195 153 Max-students Max-students 1 110 110.0 1 1 NIL HORIZONTAL SLIDER 7 156 197 189 Average-ticks-students-stay Average-ticks-students-stay 100 10000 7800.0 100 1 NIL HORIZONTAL CHOOSER 88 12 201 57 Evacuation Evacuation "NO" "YES" 0 SLIDER 8 193 196 226 Chance-of-remembering-exit Chance-of-remembering-exit 0 0.15 0.0 0.01 1 NIL HORIZONTAL SLIDER 8 229 197 262 Average-ticks-before-leaving Average-ticks-before-leaving 0 1000 700.0 50 1 NIL HORIZONTAL MONITOR 19 532 191 577 Students at meetup points count turtles-on patches with [meetup-point? = true] 17 1 11 MONITOR 21 580 192 625 Ticks evacuation is in progress (ticks - ticks-at-start-evacuation) 17 1 11 @#$#@#$#@ ## WHAT IS IT? (a general understanding of what the model is trying to show or explain) ## HOW IT WORKS (what rules the agents use to create the overall behavior of the model) ## HOW TO USE IT (how to use the model, including a description of each of the items in the Interface tab) ## THINGS TO NOTICE (suggested things for the user to notice while running the model) ## THINGS TO TRY (suggested things for the user to try to do (move sliders, switches, etc.) with the model) ## EXTENDING THE MODEL (suggested things to add or change in the Code tab to make the model more complicated, detailed, accurate, etc.) ## NETLOGO FEATURES (interesting or unusual features of NetLogo that the model uses, particularly in the Code tab; or where workarounds were needed for missing features) ## RELATED MODELS (models in the NetLogo Models Library and elsewhere which are of related interest) ## CREDITS AND REFERENCES (a reference to the model's URL on the web if it has one, as well as any other necessary credits, citations, and links) @#$#@#$#@ default true 0 Polygon -7500403 true true 150 5 40 250 150 205 260 250 airplane true 0 Polygon -7500403 true true 150 0 135 15 120 60 120 105 15 165 15 195 120 180 135 240 105 270 120 285 150 270 180 285 210 270 165 240 180 180 285 195 285 165 180 105 180 60 165 15 arrow true 0 Polygon -7500403 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150 box false 0 Polygon -7500403 true true 150 285 285 225 285 75 150 135 Polygon -7500403 true true 150 135 15 75 150 15 285 75 Polygon -7500403 true true 15 75 15 225 150 285 150 135 Line -16777216 false 150 285 150 135 Line -16777216 false 150 135 15 75 Line -16777216 false 150 135 285 75 bug true 0 Circle -7500403 true true 96 182 108 Circle -7500403 true true 110 127 80 Circle -7500403 true true 110 75 80 Line -7500403 true 150 100 80 30 Line -7500403 true 150 100 220 30 butterfly true 0 Polygon -7500403 true true 150 165 209 199 225 225 225 255 195 270 165 255 150 240 Polygon -7500403 true true 150 165 89 198 75 225 75 255 105 270 135 255 150 240 Polygon -7500403 true true 139 148 100 105 55 90 25 90 10 105 10 135 25 180 40 195 85 194 139 163 Polygon -7500403 true true 162 150 200 105 245 90 275 90 290 105 290 135 275 180 260 195 215 195 162 165 Polygon -16777216 true false 150 255 135 225 120 150 135 120 150 105 165 120 180 150 165 225 Circle -16777216 true false 135 90 30 Line -16777216 false 150 105 195 60 Line -16777216 false 150 105 105 60 car false 0 Polygon -7500403 true true 300 180 279 164 261 144 240 135 226 132 213 106 203 84 185 63 159 50 135 50 75 60 0 150 0 165 0 225 300 225 300 180 Circle -16777216 true false 180 180 90 Circle -16777216 true false 30 180 90 Polygon -16777216 true false 162 80 132 78 134 135 209 135 194 105 189 96 180 89 Circle -7500403 true true 47 195 58 Circle -7500403 true true 195 195 58 circle false 0 Circle -7500403 true true 0 0 300 circle 2 false 0 Circle -7500403 true true 0 0 300 Circle -16777216 true false 30 30 240 cow false 0 Polygon -7500403 true true 200 193 197 249 179 249 177 196 166 187 140 189 93 191 78 179 72 211 49 209 48 181 37 149 25 120 25 89 45 72 103 84 179 75 198 76 252 64 272 81 293 103 285 121 255 121 242 118 224 167 Polygon -7500403 true true 73 210 86 251 62 249 48 208 Polygon -7500403 true true 25 114 16 195 9 204 23 213 25 200 39 123 cylinder false 0 Circle -7500403 true true 0 0 300 dot false 0 Circle -7500403 true true 90 90 120 face happy false 0 Circle -7500403 true true 8 8 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Polygon -16777216 true false 150 255 90 239 62 213 47 191 67 179 90 203 109 218 150 225 192 218 210 203 227 181 251 194 236 217 212 240 face neutral false 0 Circle -7500403 true true 8 7 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Rectangle -16777216 true false 60 195 240 225 face sad false 0 Circle -7500403 true true 8 8 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Polygon -16777216 true false 150 168 90 184 62 210 47 232 67 244 90 220 109 205 150 198 192 205 210 220 227 242 251 229 236 206 212 183 fish false 0 Polygon -1 true false 44 131 21 87 15 86 0 120 15 150 0 180 13 214 20 212 45 166 Polygon -1 true false 135 195 119 235 95 218 76 210 46 204 60 165 Polygon -1 true false 75 45 83 77 71 103 86 114 166 78 135 60 Polygon -7500403 true true 30 136 151 77 226 81 280 119 292 146 292 160 287 170 270 195 195 210 151 212 30 166 Circle -16777216 true false 215 106 30 flag false 0 Rectangle -7500403 true true 60 15 75 300 Polygon -7500403 true true 90 150 270 90 90 30 Line -7500403 true 75 135 90 135 Line -7500403 true 75 45 90 45 flower false 0 Polygon -10899396 true false 135 120 165 165 180 210 180 240 150 300 165 300 195 240 195 195 165 135 Circle -7500403 true true 85 132 38 Circle -7500403 true true 130 147 38 Circle -7500403 true true 192 85 38 Circle -7500403 true true 85 40 38 Circle -7500403 true true 177 40 38 Circle -7500403 true true 177 132 38 Circle -7500403 true true 70 85 38 Circle -7500403 true true 130 25 38 Circle -7500403 true true 96 51 108 Circle -16777216 true false 113 68 74 Polygon -10899396 true false 189 233 219 188 249 173 279 188 234 218 Polygon -10899396 true false 180 255 150 210 105 210 75 240 135 240 house false 0 Rectangle -7500403 true true 45 120 255 285 Rectangle -16777216 true false 120 210 180 285 Polygon -7500403 true true 15 120 150 15 285 120 Line -16777216 false 30 120 270 120 leaf false 0 Polygon -7500403 true true 150 210 135 195 120 210 60 210 30 195 60 180 60 165 15 135 30 120 15 105 40 104 45 90 60 90 90 105 105 120 120 120 105 60 120 60 135 30 150 15 165 30 180 60 195 60 180 120 195 120 210 105 240 90 255 90 263 104 285 105 270 120 285 135 240 165 240 180 270 195 240 210 180 210 165 195 Polygon -7500403 true true 135 195 135 240 120 255 105 255 105 285 135 285 165 240 165 195 line true 0 Line -7500403 true 150 0 150 300 line half true 0 Line -7500403 true 150 0 150 150 pentagon false 0 Polygon -7500403 true true 150 15 15 120 60 285 240 285 285 120 person false 0 Circle -7500403 true true 110 5 80 Polygon -7500403 true true 105 90 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 195 90 Rectangle -7500403 true true 127 79 172 94 Polygon -7500403 true true 195 90 240 150 225 180 165 105 Polygon -7500403 true true 105 90 60 150 75 180 135 105 plant false 0 Rectangle -7500403 true true 135 90 165 300 Polygon -7500403 true true 135 255 90 210 45 195 75 255 135 285 Polygon -7500403 true true 165 255 210 210 255 195 225 255 165 285 Polygon -7500403 true true 135 180 90 135 45 120 75 180 135 210 Polygon -7500403 true true 165 180 165 210 225 180 255 120 210 135 Polygon -7500403 true true 135 105 90 60 45 45 75 105 135 135 Polygon -7500403 true true 165 105 165 135 225 105 255 45 210 60 Polygon -7500403 true true 135 90 120 45 150 15 180 45 165 90 sheep false 15 Circle -1 true true 203 65 88 Circle -1 true true 70 65 162 Circle -1 true true 150 105 120 Polygon -7500403 true false 218 120 240 165 255 165 278 120 Circle -7500403 true false 214 72 67 Rectangle -1 true true 164 223 179 298 Polygon -1 true true 45 285 30 285 30 240 15 195 45 210 Circle -1 true true 3 83 150 Rectangle -1 true true 65 221 80 296 Polygon -1 true true 195 285 210 285 210 240 240 210 195 210 Polygon -7500403 true false 276 85 285 105 302 99 294 83 Polygon -7500403 true false 219 85 210 105 193 99 201 83 square false 0 Rectangle -7500403 true true 30 30 270 270 square 2 false 0 Rectangle -7500403 true true 30 30 270 270 Rectangle -16777216 true false 60 60 240 240 star false 0 Polygon -7500403 true true 151 1 185 108 298 108 207 175 242 282 151 216 59 282 94 175 3 108 116 108 target false 0 Circle -7500403 true true 0 0 300 Circle -16777216 true false 30 30 240 Circle -7500403 true true 60 60 180 Circle -16777216 true false 90 90 120 Circle -7500403 true true 120 120 60 tree false 0 Circle -7500403 true true 118 3 94 Rectangle -6459832 true false 120 195 180 300 Circle -7500403 true true 65 21 108 Circle -7500403 true true 116 41 127 Circle -7500403 true true 45 90 120 Circle -7500403 true true 104 74 152 triangle false 0 Polygon -7500403 true true 150 30 15 255 285 255 triangle 2 false 0 Polygon -7500403 true true 150 30 15 255 285 255 Polygon -16777216 true false 151 99 225 223 75 224 truck false 0 Rectangle -7500403 true true 4 45 195 187 Polygon -7500403 true true 296 193 296 150 259 134 244 104 208 104 207 194 Rectangle -1 true false 195 60 195 105 Polygon -16777216 true false 238 112 252 141 219 141 218 112 Circle -16777216 true false 234 174 42 Rectangle -7500403 true true 181 185 214 194 Circle -16777216 true false 144 174 42 Circle -16777216 true false 24 174 42 Circle -7500403 false true 24 174 42 Circle -7500403 false true 144 174 42 Circle -7500403 false true 234 174 42 turtle true 0 Polygon -10899396 true false 215 204 240 233 246 254 228 266 215 252 193 210 Polygon -10899396 true false 195 90 225 75 245 75 260 89 269 108 261 124 240 105 225 105 210 105 Polygon -10899396 true false 105 90 75 75 55 75 40 89 31 108 39 124 60 105 75 105 90 105 Polygon -10899396 true false 132 85 134 64 107 51 108 17 150 2 192 18 192 52 169 65 172 87 Polygon -10899396 true false 85 204 60 233 54 254 72 266 85 252 107 210 Polygon -7500403 true true 119 75 179 75 209 101 224 135 220 225 175 261 128 261 81 224 74 135 88 99 wheel false 0 Circle -7500403 true true 3 3 294 Circle -16777216 true false 30 30 240 Line -7500403 true 150 285 150 15 Line -7500403 true 15 150 285 150 Circle -7500403 true true 120 120 60 Line -7500403 true 216 40 79 269 Line -7500403 true 40 84 269 221 Line -7500403 true 40 216 269 79 Line -7500403 true 84 40 221 269 wolf false 0 Polygon -16777216 true false 253 133 245 131 245 133 Polygon -7500403 true true 2 194 13 197 30 191 38 193 38 205 20 226 20 257 27 265 38 266 40 260 31 253 31 230 60 206 68 198 75 209 66 228 65 243 82 261 84 268 100 267 103 261 77 239 79 231 100 207 98 196 119 201 143 202 160 195 166 210 172 213 173 238 167 251 160 248 154 265 169 264 178 247 186 240 198 260 200 271 217 271 219 262 207 258 195 230 192 198 210 184 227 164 242 144 259 145 284 151 277 141 293 140 299 134 297 127 273 119 270 105 Polygon -7500403 true true -1 195 14 180 36 166 40 153 53 140 82 131 134 133 159 126 188 115 227 108 236 102 238 98 268 86 269 92 281 87 269 103 269 113 x false 0 Polygon -7500403 true true 270 75 225 30 30 225 75 270 Polygon -7500403 true true 30 75 75 30 270 225 225 270 @#$#@#$#@ NetLogo 6.1.0 @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ default 0.0 -0.2 0 0.0 1.0 0.0 1 1.0 0.0 0.2 0 0.0 1.0 link direction true 0 Line -7500403 true 150 150 90 180 Line -7500403 true 150 150 210 180 @#$#@#$#@ 0 @#$#@#$#@