Città 30

Città 30 preview image

1 collaborator

Default-person Sergio Cima (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.4.0 • Viewed 14 times • Downloaded 0 times • Run 0 times
Download the 'Città 30' 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

breed [cars car]
breed [intersections intersection]

globals [
  accident-count
  traffic-flow-rate
  annual-accidents
  average-speed
  congestion-index

  BASE-ACCIDENTS
  TOTAL-VEHICLES
  REFERENCE-SPEED
]

cars-own [
  speed
  desired-speed
  waiting?
  trip-time
]

patches-own [
  is-road?
]

to setup
  clear-all
  set-default-shape cars "car"

  set BASE-ACCIDENTS 2158
  set REFERENCE-SPEED 50

  setup-roads
  setup-intersections
  setup-cars

  set accident-count 0
  set traffic-flow-rate 0
  set average-speed 0
  set congestion-index 0

  reset-ticks
end 

to setup-roads
  ask patches [
    ifelse (abs pycor mod 4 = 0) or (abs pxcor mod 4 = 0)
    [ set is-road? true
      set pcolor gray ]
    [ set is-road? false
      set pcolor green ]
  ]
end 

to setup-intersections
  ask patches [
    if is-road? and any? neighbors4 with [not is-road?] [
      sprout-intersections 1 [
        set color red
        set size 1
      ]
    ]
  ]
end 

to setup-cars
  create-cars initial-number-of-cars [
    move-to one-of patches with [is-road? and not any? cars-here]
    set color one-of [red blue yellow]
    set size 1
    set speed random-float speed-limit
    set desired-speed speed-limit * (0.8 + random-float 0.4)
    set waiting? false
    set trip-time 0

    ifelse abs xcor mod 4 = 0
    [ set heading one-of [0 90] ]
    [ set heading one-of [90 270] ]
  ]
end 

to go
  ; Ferma la simulazione se non ci sono più auto
  if count cars = 0 [
    user-message "Simulazione terminata: non ci sono più auto attive."
    stop
  ]

  ask cars [
    ifelse safe-to-move? [
      move-forward
      check-for-accidents
      set trip-time trip-time + 1
    ] [
      set waiting? true
    ]
  ]

  update-statistics
  tick
end 

to move-forward
  set waiting? false
  let target-speed min (list desired-speed speed-limit)
  let cars-ahead cars in-cone 3 20

  if any? cars-ahead [
    set target-speed [speed] of min-one-of cars-ahead [distance myself]
  ]

  ifelse speed < target-speed
    [ set speed speed + 0.1 ]
    [ set speed speed - 0.1 ]

  forward speed * 0.1
end 

to check-for-accidents
  let nearby-cars other cars in-radius 1
  if any? nearby-cars [
    let speed-factor (speed / REFERENCE-SPEED) ^ 2
    if random-float 1 < 0.01 * speed-factor [
      set accident-count accident-count + 1
      die
    ]
  ]
end 

to update-statistics
  ifelse count cars > 0 [
    set traffic-flow-rate (count cars with [not waiting?] / count cars) * 100
    set average-speed mean [speed] of cars
    set congestion-index 100 - traffic-flow-rate
  ] [
    ; Se non ci sono auto, imposta valori di default
    set traffic-flow-rate 0
    set average-speed 0
    set congestion-index 0
  ]

  let time-factor max (list (ticks / (365 * 24 * 60)) 0.0001) ; evita divisione per zero
  let speed-impact (speed-limit / REFERENCE-SPEED) ^ 2
  set annual-accidents accident-count / time-factor
end 

to-report safe-to-move?
  let next-patch patch-ahead 1
  if next-patch = nobody [ report false ]
  if not [is-road?] of next-patch [ report false ]
  if any? other cars-on next-patch [ report false ]
  if any? intersections-on next-patch [
    report random 100 < 30
  ]
  report true
end 

to-report get-accident-projection
  report annual-accidents
end 

to-report get-average-speed
  report average-speed
end 

to-report get-congestion
  report congestion-index
end 

There are 2 versions of this model.

Uploaded by When Description Download
Sergio Cima 3 days ago update Download this version
Sergio Cima 5 days ago Initial upload Download this version

Attached files

File Type Description Last updated
Città 30.png preview Preview for 'Città 30' 5 days ago, by Sergio Cima Download

This model does not have any ancestors.

This model does not have any descendants.