SciencesPoPresentation

No preview image

1 collaborator

Default-person Arthur Hjorth (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 4.1.1 • Viewed 223 times • Downloaded 17 times • Run 11 times
Download the 'SciencesPoPresentation' 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?

While at first sight, the purpose of the model may appear to be to test congestion charge as a policy, the underlying idea is illustrate how the same model may be interpreted differently by selecting and weighing some data over other.

The model illustrates the indeterminacy of the concept of public goods, based on Michael Feeden's (pp. 128-30, 2005) example.

HOW TO USE IT

Click 'Setup' to generate a population of 1000 with incomes ranging 1-100. By clicking 'Go' each person will decide whether to take the car or go by bus that day.

By sliding the 'Congestion charge cost' slider, you can increase or decrease the price of congestion charge.

EXTENDING THE MODEL

The price sensitivity part of agents' decision is also simplified, and the amount of extra traffic per vehicle on the road is linear (when it should probably be exponential), etc.

Michael Freeden mentions the possibility of building more roads in his discussion of the example. This could also be a possible extension to the model.

Lastly, sliders or other ways for the user to manipulate these variables could be introduced:

avg-passengers-per-bus: 32

pollution-per-bus: 50

pollution-per-car: 7

avg-passengers-per-car: 1.2

population: 1000

CREDITS AND REFERENCES

This model was built by Arthur Hjorth (arthur.hjorth@stx.oxon.org) and released under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/)

It is based on an example by Professor of Ideology Michael Freeden.

Freeden, M. What Should the "Political" in Political Theory Explore?. Journal of Political Philosophy, vol. 13 (2005), 113-134

Comments and Questions

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

Click to Run Model

;; Interpreting Congestion Charge ;;
;; This model is based on Michael Freeden s example 
;; The purpose of this model is to show the ambiguity of political concepts such as public goods
;; and the interpretation of policies.
;; TODOS: price sensitivity 

globals [
  
  global-pollution-per-day               ;; pollution variable
  travel-time-added                      ;; traffic congestion, how congested is traffic. 
                                         ;; this variable adds itself to a vehicle s travel time
  average-travel-time                    ;; average travel time calculated per day per person
  
  yesterdays-travel-time-added           ;; the average travel time added per vehicle yesterday
                                         ;; this is key in people s decision making process for whether they want
                                         ;; to go by car or bus.
  turtles-driving                        ;; number of turtles driving on any day
  median-income-drivers                  ;; the median income of turtles who drive
  median-income-bussers                  ;; the median income of turtles who take the bus
  cars                                   ;; number of cars
  busses                                 ;; number of busses
  median-income-preference-met           ;; median income for those whose transport preference was met
  median-income-preference-not-met       ;; median income for those whose transport preference was not met
  turtles-preference-met                 ;; number of people whose prefernces are met
  turtles-preference-not-met             ;; number of people whose preferences are not met
  
  color?                                 ;; color code boolean
  
  base-price-bus                         ;; base price for taking the bus
  real-price-bus                         ;; real price for taking the bus
  base-price-car                         ;; base price car. real price is base price plus congestion charge
  
  revenue-bus-tickets                    ;; total revenue from bus tickets
  
  
  avg-passengers-per-bus
  pollution-per-bus
  pollution-per-car
  avg-passengers-per-car
  population
]

turtles-own [
  income                                 ;; income level of turtle, 1-100
  car-love                               ;; how much the person wants to drive their car, 1-100
  willing-to-wait                        ;; how willing the person is to spend extra time on travelling by car
                                         ;; rather than travelling by public transport, 1-100
  wishes-to-drive?                       ;; would this person ideally drive today?
  can-afford-to-drive?                   ;; can this person afford to drive today
  will-drive-today?                      ;; will this person actually drive today
  preference-met?                        ;; true if person travels by preferred medians
]

;;;
;;; SETUP PROCEDURES
;;;

to setup
  ;; clean up
  reset-ticks
  clear-all
  
  set avg-passengers-per-bus 32
  set pollution-per-bus 50
  set pollution-per-car 7
  set avg-passengers-per-car 1.5
  set population 1089
  
  set color? false
  
  


  ;; create population
  create-turtles 1088
  [
    ;; setting shape person
    set shape "person"
    ;; placing randomly on map in unoccupied location
    move-to one-of patches with [any? turtles-here = false]
    ;;move-to first patches with  [any? turtles-here = false]
    

    
    ;; setting income randomly (will be changed as part of gini coefficient implementation)
    set income random 99
    set color white
    set car-love random 99
    set willing-to-wait random 99

    ;; adding 1 to all turtle properties to avoid divide by zero errors. Look up how to set a range for random and correct this. 
    set income income + 1
    set car-love car-love + 1
    set willing-to-wait willing-to-wait + 1
  ]
  
    create-turtles 1
  [
    ;; setting shape person
    set shape "person"

    ;; setting income randomly (will be changed as part of gini coefficient implementation)
    set income random 99
    set color white
    set car-love random 99
    set willing-to-wait random 99

    ;; adding 1 to all turtle properties to avoid divide by zero errors. Look up how to set a range for random and correct this. 
    set income income + 1
    set car-love car-love + 1
    set willing-to-wait willing-to-wait + 1
  ]
end 

to go
  ;; switch over yesterdays time travel
  set yesterdays-travel-time-added travel-time-added
  ;; ask all turtles to decide on going by car or not
  ask turtles [decide]
  ;; calculate number of cars and busses
  calc-vehicles
  ;; calculate the time delay created by number of cars
  calculate-delay-created
  ;; calculate median incomes for respectively drivers and non-drivers
  calculate-median-incomes
  ;; calculate how many turtles traveled by their preferred medians
  calculate-preference-met
  ;; calculate median income for those who traveled by preferred and those who did not.
  calculate-median-preference-met

 
  calc-pollution
end 

to color-code
  ifelse color? = false
  [
    set color?  true
  ]
  [
    set color?  false
  ]
end 

to calc-vehicles
  set cars count turtles with [will-drive-today? = true] / avg-passengers-per-car
  set busses count turtles with [will-drive-today? = false] / avg-passengers-per-bus
end 

to calculate-median-incomes
  ifelse any? turtles with [will-drive-today? = true]
  [
    set median-income-drivers median [income] of turtles with [will-drive-today? = true]
  ]
  [
    set median-income-drivers 0
  ]  
  ifelse any? turtles with [will-drive-today? = false]
  [
    set median-income-bussers median [income] of turtles with [will-drive-today? = false]
  ]
  [
    set median-income-bussers 0
  ]
end 

to calculate-preference-met
  set turtles-preference-met (count turtles - count turtles with [wishes-to-drive? = true and will-drive-today? = false])
  set turtles-preference-not-met population - turtles-preference-met
end 

to calculate-median-preference-met
  ;; if clause to avoid null pointer exc
  
  ifelse any? turtles with [(wishes-to-drive? = true and will-drive-today? = true) or wishes-to-drive? = false]
  [
     set median-income-preference-met median [income] of turtles with 
           [(wishes-to-drive? = true and will-drive-today? = true) or wishes-to-drive? = false]
  ]
  [
    set median-income-preference-met 0
  ]
  
  ;; if clause to avoid null pointer exc
  ifelse any? turtles with [wishes-to-drive? = true and will-drive-today? = false]
  [
     set median-income-preference-not-met median [income] of turtles with [wishes-to-drive? = true and will-drive-today? = false]
  ]
  [
    set median-income-preference-not-met 0
  ]
end   

to color-turtle
  ask turtles[
  ;; coloring people per income
  ;; dark red for lowest quartile, pink for next, light blue for next, dark blue for highest quartile
  if income <= 25
  [
    set color 15
  ]
  if income > 25 and income <= 50
  [
    set color 17
  ]
  if income > 50 and income <= 75
  [
    set color 95
  ]
  if income > 75
  [
    set color 105
  ]
  ]
end 

to white-turtle
  ask turtles
  [
    set color white
  ]
end 

to calc-pollution
  ;; calculates pollution by multiplying pollution per car with no of cars and ditto for busses
  set global-pollution-per-day cars * pollution-per-car + busses * pollution-per-bus
end 

to calculate-delay-created
  ;; calculates delay created by finding sum of vehicles. All vehicles cause same amount of delay which probably isnt true...
  set travel-time-added cars + busses
end 

to decide ;; turtle procedure. Decide on whether to drive that day or not.
    would-prefer-car
    can-afford-to-drive
    will-drive
end 

to would-prefer-car ;; this determines if the turtle would ideally drive
  ifelse (car-love - (yesterdays-travel-time-added / willing-to-wait)) > 0
  [
    set wishes-to-drive? true
  ]
  
  [
    set wishes-to-drive? false
  ]
end 

to can-afford-to-drive ;; this determines if the turtle can afford to drive. This needs to be tweaked to take into
                       ;; consideration feedback effect from congestion charge lowering price of public transp
  ifelse congestion-charge-cost / 2 > income
  [
    set can-afford-to-drive? false
  ]
  
  [
    set can-afford-to-drive? true
  ]
end 

to will-drive ;; this determines if the turle will actually drive
  ifelse wishes-to-drive? and can-afford-to-drive?
  [
    set will-drive-today? true
    set shape "car"
  ]
  [
    set will-drive-today? false
    set shape "bus"
  ]
end 

There is only one version of this model, created about 14 years ago by Arthur Hjorth.

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.