Movement of Unskilled Workers

No preview image

1 collaborator

Default-person Ross Epstein (Author)

Tags

(This model has yet to be categorized with any tags)
Model group EECS 372-Spring 2011 | Visible to everyone | Changeable by the author
Model was written in NetLogo 4.1.3 • Viewed 387 times • Downloaded 35 times • Run 6 times
Download the 'Movement of Unskilled Workers' 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?

Unskilled workers, by definition, do not have a specialized skill to accell in. This normally includes under-educated high school dropouts or graduates. The uniqueness about these workers is their ability to move between areas where they will receive the most utility. If there are no jobs left in the city the worker is currently living, or if they cannot sustain their own lifestyle in that city, they may choose to leave.

This unskilled workers movement model simulates how real world economic changes affect the movement in an attempt to find labor. This model allows for migration between multiple different cities, depending on wage, costs of living, and job availability. As these unskilled workers come and go from city to city, parameters and economic conditions alter. At a certain point, it no longer becomes sustainable and efficient for these workers to remain at their current location and they choose to move. This movement is very easy for them, as unskilled labor is something that is available in many cities.

HOW IT WORKS

The workers and cities' economic conditions interact with each other. If there are available jobs in a particular city and the wages they will receive will be greater than the costs expended in that city, then the worker will move to that city. If their lifestyle is sustainable in their current city, i.e. the costs in that city are less than the wage they receive, they will stay. However, as more workers flock to this more desirable city, supply of labor increases, driving costs of living higher and wages lower. Additionally, wages and costs in each of these cities are affected by business-cycles. Wages conform to a cos(x) + x function, where costs increase linearly.

HOW TO USE IT

First, setup the number of cities and number of workers desired using the given sliders. Random-wage-cost-seed is the basis for determining the difference between costs and wages per city. Using this parameter, a random number is generated and is added to the original costs of that city and assigned to that city's wages. This allows for an initial setup of wages to always be greater than the costs in that city. The two final sliders allow the model to adjust the cities' average-costs and average-wages depending on the number of people currently working in that city. The higher the wage-decrease-per-additional-worker, the less the average wage in that city is, and vice versa for cost-increase.

THINGS TO NOTICE

While watching the business cycle plot, take a look at how when the oscillating wage-cycle is greater than the cost-cycle, homelessness decreases. Also, when comparing the business cycle to the available jobs plot, watch and see how in times of expansion (wage-cycle greater than cost-cycle) that people the number of available jobs stays constant. Workers are more likely to stay in place because their lifestyle is sustainable.

THINGS TO TRY

Try moving around the random-wage-cost-seed. At what values does this seed start to generate less movement from the workers? Why do you think this happens?

When turning off apply-business-cycle?, what do you notice as the differences between the models when on vs off?

EXTENDING THE MODEL

In addition to wage and cost of living changes depending on an economic business cycle, an extension to this model could also include changes to available jobs in each of the cities.

In economic terms, there is no set amount that wage decreases or costs increase per each additional workers. This model could be extended to include a better-scaled estimate of how supply and demand for labor and goods are altered according to number of occupants in that city.

This model uses very rudimentary numbers to estimate wages and costs. An extension to this model could include real numbers from empirical data, where wages and costs of living are more accurate and are altered accordingly.

NETLOGO FEATURES

As part of this model, there is a plot included that draws all available jobs in each city. This was only possible by using the create-temporary-plot-pen, which was looped through depending on the total number of cities the user has chosen. In order to plot each of these cities' available jobs, this model also uses a looping procedure which initializes a city-num parameter (from 1 to number-cities, inclusive).

RELATED MODELS

The Urban Suite model located in the NetLogo Models Library explores land-usage patterns from an economic perspective, where agents choose where to live depending on various parameters.

CREDITS AND REFERENCES

N/A

Comments and Questions

V 1.0

Still waiting on an approval before really moving forward with this updated proposal

Posted over 13 years ago

Everything uploaded

Everytime I look at the files tab, each of the files I had previously uploaded are not there. As of right now (9:41 am 6/6/11), I uploaded all 4 progress reports, the original proposal, the final report, the poster slam slides, and the finished model.

Posted over 13 years ago

Click to Run Model

globals [ business-cycle-count wage-cycle costs-cycle unemployed-list ]

turtles-own [ wage expenditures unemployed? ]

patches-own [ average-wage original-wage average-costs original-costs original-available-jobs available-jobs city-num]

to setup
  ca
  ask n-of number-cities patches [ ;setting up cities
    set pcolor red 
    set average-costs random 10
    set original-costs average-costs
    ;set average-wage random 10
    set average-wage random-float random-wage-cost-seed + original-costs ;setting staring wage to be at least greater than the costs
    set original-wage average-wage
    set original-available-jobs random 20 + 1
    set available-jobs original-available-jobs
    set city-num 0
    ] ;assign it a different color
  set business-cycle-count 0
  let counter 1
  while [ counter < number-cities + 1 ] [ ; workaround to set each city a different number label "city-num"
    ask one-of patches with [ pcolor = red and city-num = 0 ] [ set city-num counter ]
    set counter counter + 1 
  ] 
  create-turtles number-workers [ ;worker setup
    setxy random-xcor random-ycor 
    set wage random 10
    set expenditures random 10
    set shape "person"
    face one-of patches with [ pcolor = red and available-jobs > 0] 
    set unemployed? false ]
  set unemployed-list (list 0)
  setup-available-job-plot
  setup-attractive-city-plot
  setup-business-cycle-plot
  update-available-job-plot
  update-attractive-city-plot
  update-business-cycle-plot
end 

to go
  ask turtles [ 
    update-worker-parameters
    stay-or-go ]
  
  ask patches with [ pcolor = red ] [ update-city-parameters move-too-many-workers]
  update-business-cycle
  tick
  update-available-job-plot
  update-attractive-city-plot
  set business-cycle-count business-cycle-count + 1 ;updating the tick counter so the business cycle can change over time
  update-business-cycle-plot
end 

to update-city-parameters ; patch function
  ; used to change the wages and costs at the given city. each worker at that city adds a cost-increase to costs and removes a wage-decrease from wages
  ; here is also where the wages and costs are scaled to account for the business cycles
   set available-jobs ( original-available-jobs - ( count turtles-here ) )
   ifelse apply-business-cycle? [
     set average-wage ( original-wage - ( ( original-available-jobs - available-jobs ) * wage-decrease-per-additional-worker ) ) * wage-cycle
     set average-costs ( original-costs + ( ( original-available-jobs - available-jobs ) * cost-increase-per-additional-worker ) ) * costs-cycle] 
   [ set average-wage ( original-wage - ( ( original-available-jobs - available-jobs ) * wage-decrease-per-additional-worker ) )
     set average-costs ( original-costs + ( ( original-available-jobs - available-jobs ) * cost-increase-per-additional-worker ) )]
end 

to update-worker-parameters ; turtle function
  set wage [ average-wage ] of patch-here
  set expenditures [ average-costs ] of patch-here
end 

to move-too-many-workers ; patch function
  let num-movers (-1 * ( original-available-jobs - (count turtles-here) ) ) ;finding the number of workers that need to leave this city
  if num-movers < 0 [ set num-movers 0 ] ; must be a positive number
  let temp one-of patches with [ pcolor = red and available-jobs > 0 ]
  if is-patch? temp [ ifelse [ average-wage ] of temp - [ average-costs ] of temp - wage-decrease-per-additional-worker + cost-increase-per-additional-worker > 0 [ ] [ set temp 0 ] ]
  ; if the patch where they want to go can hold them there, then they can go, or else try again another time
  if ( pcolor = red and available-jobs < 0 ) or ( pcolor = red and ( average-wage - average-costs ) < 0 ) [ ask n-of num-movers turtles-here [ ifelse is-patch? temp [ move ] [ go-unemployed ]] ]
  ; if there are no available jobs at your current city or you're paying more in costs than you're earning, then you have to leave. if there's nowhere else that satisfies that
  ; then you become unemployed
end 

to go-unemployed ; turtle function
  set unemployed? true
  face one-of patches with [ pycor > 10 ] move
end 

to stay-or-go ; turtle function
  let temp one-of patches with [ pcolor = red and available-jobs > 0 and ( average-wage - average-costs > 0 ) ] ;find a suitable new city
  ifelse unemployed? [ if is-patch? temp [ face temp move ] set unemployed? false] [ ] ; if you are unemployed face this suitable city and move to it and become employed
  if [ pcolor ] of patch-here != red and not unemployed? [ move ] ; if you're not at a city but aren't unemployed then keep moving to the city you had turned to face
  if ( [ pcolor ] of patch-here = red and ( wage - expenditures ) < 0 ) [ if is-patch? temp or is-patch-set? temp [face temp move ] ] ;if you can't sustain your lifestyle at your current city, leave
  if [ pcolor ] of patch-here = red and ( wage - expenditures ) > 0 [ ] ; stay if you can sustain
end 

to stay ;turtle function
end 

to move ;turtle function
  fd 1
end 

to update-business-cycle
  set wage-cycle cos ( business-cycle-count * 0.1 ) + 1.03 * business-cycle-count * 0.0005 + .15 ; bunch of scaling here to get the correct business cycle
  set costs-cycle 1.03 * business-cycle-count * 0.0005 ; no cosine function for costs-cycle
end 

to setup-available-job-plot
  set-current-plot "Available Jobs"
  set-plot-y-range 0 ( [original-available-jobs ] of max-one-of patches [ original-available-jobs ] + 3)
  let counter 1
  while [ counter < number-cities + 1 ] [ ;plot all the cities (which is a slider variable). this is a workaround
    create-temporary-plot-pen word "City " counter 
    set-current-plot-pen word "City " counter
    set-plot-pen-color one-of base-colors 
    set counter counter + 1 ]
end 

to update-available-job-plot
  set-current-plot "Available Jobs"
  let counter 1
  while [ counter < number-cities + 1 ] [
    set-current-plot-pen word "City " counter 
    plot first [ available-jobs ] of patches with [ city-num = counter ]
    set counter counter + 1 ]
end 

to setup-business-cycle-plot
  set-current-plot "Business Cycle"
end 

to update-business-cycle-plot
  if apply-business-cycle? [
    set-current-plot "Business Cycle"
    set-current-plot-pen "wage-cycle"
    plot wage-cycle
    set-current-plot-pen "costs-cycle"
    plot costs-cycle
    set-current-plot-pen "unemployed"
    plot count turtles with [ unemployed? ] 
    set unemployed-list lput count turtles with [ unemployed? ] unemployed-list ] ; adding the list together for the BehaviorSpace model
end 

to setup-attractive-city-plot
  set-current-plot "Most Attractive City"
end 

to update-attractive-city-plot
  set-current-plot "Most Attractive City"
  set-current-plot-pen "attractive-wages"
  let temp max-one-of patches [ original-wage - original-costs ] ; city that is most attractive
  plot [ average-wage ] of temp
  set-current-plot-pen "attractive-expenditures"
  plot [ average-costs ] of temp
  set-current-plot-pen "least-attractive-wages"
  set temp min-one-of patches with [ pcolor = red ] [ original-wage - original-costs ] ; city that is least attractive
  plot [ average-wage ] of temp
  set-current-plot-pen "least-attractive-expenditures"
  plot [ average-costs ] of temp
end 

There are 5 versions of this model.

Uploaded by When Description Download
Ross Epstein over 13 years ago Final Project Download this version
Ross Epstein over 13 years ago Progress4 Download this version
Ross Epstein over 13 years ago Progress 3 Download this version
Ross Epstein over 13 years ago V2 Download this version
Ross Epstein over 13 years ago Initial upload Download this version

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.