Movement of Unskilled Workers
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
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.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.
Ross Epstein
V 1.0
Still waiting on an approval before really moving forward with this updated proposal
Posted over 13 years ago
Ross Epstein
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