AI Assignment 1

No preview image

1 collaborator

Default-person Jind Lee (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.0.5 • Viewed 571 times • Downloaded 50 times • Run 0 times
Download the 'AI Assignment 1' modelDownload this modelEmbed this model

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


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)

Comments and Questions

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

Click to Run Model

globals [turn-path-cost step-path-cost]
turtles-own [direction]  ;;  1 follows right-hand wall,
                         ;; -1 follows left-hand wall
breed [dogs dog]
breed [houses house]
breed [clinics clinic]

; Hamton Court Maze Demo
;
; Draws a schematic map of the Hampton Court Maze

; setup maze at (0,0)

to setup-row [row colour segments]
  foreach segments
  [
      if pycor = row * maze-height and
        (pxcor >= maze-width * (item 0 ?)) and (pxcor <= maze-width * (item 1 ?))
          [set pcolor colour]
  ]
end 

to setup-col [col colour segments]
  foreach segments
  [
      if pxcor = col * maze-width and
        (pycor >= maze-height * (item 0 ?)) and (pycor <= maze-height * (item 1 ?))
          [set pcolor colour]
  ]
end 

to create-dog
  create-turtles 1 
   [
     ; move the turtle slowly to the entrance
      setxy (maze-width / 2) (- maze-height * 7)
      set size 1              ;; bigger turtles are easier to see
      set pen-size 2          ;; thicker lines are easier to see
      set color green
      ;;set shape "dog"
      pen-down
      set turn-path-cost 0
      set step-path-cost 0

      set heading 0 ; head north
      repeat maze-height + 1 [forward 1 wait 0.2 set turn-path-cost turn-path-cost + 1]
      
      ifelse random 2 = 0
        [ set heading 90
          set direction 1 set step-path-cost step-path-cost + 1]   ;; follow right hand wall
        [ set heading 270
          set direction -1 set step-path-cost step-path-cost + 1]   ;; follow left hand wall
      forward 2  
      set turn-path-cost turn-path-cost + 2
      
      clear-output
      output-write turn-path-cost
  ]
end 

to setup-hampton-maze
ca;; clear everything
  
  ask patches
  [
    if (pxcor >= min-pxcor and pxcor <= max-pxcor and
        pycor >= min-pycor and pycor <= max-pycor)
        [set pcolor white] ;; make background full of white patches
        
    setup-row 5 grey[[-9 10]]
    setup-row 4 grey[[-8 -5] [-3 -1] [0 3] [5 9]]
    setup-row 3 grey[[-7 -4] [-2 2] [4 8]]
    setup-row 2 grey[[-6 -1] [1 4] [5 7]]
    setup-row 1 grey[[-3 3] [8 9]]
    setup-row 0 grey[[-8 -7] [9 10]]
    setup-row -1 grey[[-9 -8]]
    setup-row -2 grey[[-8 -7] [-3 0] [1 3]]
    setup-row -3 grey[[-4 -1] [2 4] [6 8]]
    setup-row -4 grey[[-7 -1] [1 9]]
    setup-row -5 grey[[-8  10]]
    setup-row -6 grey[[-9 0] [1 10]]
    
    setup-col 10 grey[[-6 5]]
    setup-col 9 grey[[-4 -1] [1 4]]
    setup-col 8 grey[[-3 1] [2 3]]
    setup-col 7 grey[[-2 2]]
    setup-col 6 grey[[-4 1]]
    setup-col 5 grey[[-3 2]]
    setup-col 4 grey[[-3 2] [3 5]]
    setup-col 3 grey[[-2 1] [2 4]]
    setup-col 1 grey[[-4 -2]]
    setup-col 0 grey[[-5 -2] [1 3]]
    setup-col -1 grey[[-4 -3] [4 5]]
    setup-col -3 grey[[-2 1] [2 4]]
    setup-col -4 grey[[-3 2] [3 5]]
    setup-col -5 grey[[-4 1]]
    setup-col -6 grey[[-3 2]]
    setup-col -7 grey[[-4 -3] [-2 0] [1 3]]
    setup-col -8 grey[[-5 -2] [0 4]]
    setup-col -9 grey[[-6 5]]  
  ]
  
   create-turtles 1 
   [
     ; move the turtle slowly to the entrance
      setxy (maze-width / 2) (- maze-height * 7)
      set size 2              ;; bigger turtles are easier to see
      set pen-size 2          ;; thicker lines are easier to see
      set color green
      set shape "dog"
      pen-down
      set turn-path-cost 0
      set step-path-cost 0

      set heading 0 ; head north
      repeat maze-height + 1 [forward 1 wait 0.2 set turn-path-cost turn-path-cost + 1]
      
      ifelse random 2 = 0
        [ set heading 90
          set direction 1 set step-path-cost step-path-cost + 1]   ;; follow right hand wall
        [ set heading 270
          set direction -1 set step-path-cost step-path-cost + 1]   ;; follow left hand wall
      forward 2 
      set turn-path-cost turn-path-cost + 2
      
      clear-output
      output-write turn-path-cost
  ]
end 

to create-house  
    create-turtles 2
    [
     set color red 
     set shape "house"
     set size 5
     setxy 6 50
    ]   
end 

to create-clinic
   create-clinics 1
   [
    set color blue 
    set shape "clinic"
    set size 8 
    setxy -1 -1 
   ] 
end 

to go
  ask turtles [ walk ]
end 

to walk  ;; turtle procedure
  if count neighbors4 with [pcolor = grey] = 4
     [ user-message "Trapped!"
       stop ]
  if ycor > ( - 2 * maze-height) and ycor <= maze-height and
     xcor >= 0 and xcor <= maze-width
     [ user-message "Made it to the centre of the maze!"
       stop ]
 
  ;; turn right if necessary
  if not wall? (90 * direction) 1 and wall? (135 * direction) (sqrt 2)
     [ rt 90 * direction set step-path-cost step-path-cost + 1]
  
  ;; wall straight ahead: turn left if necessary (sometimes more than once)
  while [wall? 0 1] [ lt 90 * direction set step-path-cost step-path-cost + 1]
  ;; move forward
  fd 1
   set turn-path-cost turn-path-cost + 1
  clear-output
  output-print (word "turn direction path cost :" turn-path-cost " ")
  output-print (word "step path cost :" step-path-cost " ") 
end 

to-report wall? [angle dist]
  ;; note that angle may be positive or negative.  if angle is
  ;; positive, the turtle looks right.  if angle is negative,
  ;; the turtle looks left.
  report grey = [pcolor] of patch-right-and-ahead angle dist
end 
    
    
    

There is only one version of this model, created over 11 years ago by Jind Lee.

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.