Dynamic Urban Planning: An Agent-Based Model Coupling Mobility Mode and Housing Choice.
This ABM aims at characterizing citizens' behavioral patterns regarding their residential mobility and housing choice. The identification of these criteria will allow us to predict the consequences that potential urban disruptions and housing-related incentives might entail.
- Clone this repository (clicking on the green Clone or download button on this page - to manage your repo you can also install Github Desktop on your computer)
- Download GAMA (compatible with GAMA 1.8) (https://gama-platform.github.io/download)
- Run GAMA
- Choose a new Workspace (this is a temporary folder used for computation)
- Right click on User Models --> Import --> GAMA Project
- Select CS_Dynamic_Urban Planning
This model presents a generic framework that can be adapted to any city as long as the GIS data is changed and suitable census and transportation data is included.
If you want to get the region-specific housing and mobility mode criteria, follow these steps and modify calibrateDataPercentage.gaml
file.
- Set the
blockGroup_shapefile
containing the census block groups shapefile of the selected area. It should include the following attributes:GEOID
unique ID,INTPLAT
latitude,INTPTLON
longitude,TOWN
,Neighbourh
neighbourhood. - Set the
available_apartments
containing the rental options (through a previous web scrapping process) in the area. It should include the following attributes:Rent
rental cost,NBedrooms
number of available bedrooms,GEOID
unique ID. - Set the
buildings_shapefile
containing the physical buildings in the area of interest. The attributes should be:Usage
[Residential, Office...],Scale
[S: small, M: medium, L: large],Category
[commercial, restaurant...],FAR
permitted floor area ratio,Max_Height
maximum height,TYPE
,NAME
of the neighbourhood,BUILDING_I
building ID,Latitude
,Longitude
,GEOID
unique geographical ID. - Set the
T_lines_shapefile
containing the metro line topology. Attributes:colorLine
color of the metro line. - Set the
T_stops_shapefile
containing the bus stops in the area. No attributes. - Set the
road_shapefile
containing the road topology of the area. No attributes.
- Set
criteria_home_file
. This file should include the types of citizen agents and the selected housing- and mobility-mode-related criteria that you want to calibrate. The values included in this file will be used for initializing the exploration process. - Set
activity_file
. It should describe the hourly schedule of citizen agents based on their profile. - Set
mode_file
. This file includes the price, speed, waiting time... characteristics of each of the available mobility modes. - Set
profile_file
. List of citizen agent profiles, the proportion within the total population, probability of owning a car, and probability of owning a bike. - Set
criteria_file
. This file should include the mobility-related parameters that each citizen profile takes into account when heading to a specific place. The values will be used for initializing the exploration process. - Set
population_file
. It is necessary to modify this file and adapt it to the available census data for each case:
Block group Id1 | Block group Id2 | Total amount of citizens | Amount of citizens of profile 0 | ... | Amount of citizens of profile n | Diversity (Shannon Weaver) | Normalized diversity |
---|
- Set
real_Kendall_data_file
. This file identifies the amount of workers from the finer granulated area (base case: Kendall) that live in each census block group.
Block Group id2 | Number of workers living there | Profile |
---|
- Set
real_mobility_data_file
. Distribution of usage for each transportation mode available in the area of interest.
Once these files are adapted for the desired district/city/area, running the calibrateDataPercentage.gaml
model in batch mode leads to the identification of mobility mode and housing parameters that each profile takes into account when making these decisions. The methodology used for this purpose consists on the minimization of housing and mobility errors between the simulation and the imported real data.
Model mainModel.gaml
uses the calibrated criteria obtained from calibrateDataPercentage.gaml
and stored in "../includes/Criteria/incentivizedCriteria/CriteriaFileCalibrated.csv"
and "./../includes/Criteria/incentivizedCriteria/CriteriaHomeCalibrated.csv"
and simulates citizens' reactions to various urban disruptions and financial incentives.
In order to adapt this model to the desired area, follow these instructions:
- Import shapefiles and .csv files to
mainModel.gaml
the same way you did for thecalibrateDataPercentage.gaml
model. The only difference lies incriteria_home_file
andcriteria_file
. This time the mentioned files should include the calibrated parameters. - Run the
batch_save
experiment in order to get the what if scenarios for different amount of extra housing area built and financial incentives given.
This is a python script that trains the Response Surfaces linked to the following outputs: (1) the percentage of people working and living in the selected area according to their profile and depending on the amount of housing area built and the financial stimuli offered, (2) the construction area --grid-- occupancy rate, (3) the distribution of different mobility modes usage, (4) the mean commuting time, (5) the mean commuting distance, and (6) construction site occupancy rate. It allows to obtain the mentioned urban metrics real time. A k-neighbour regressor is deployed for this. 80% of the batch experiments will be used for training purposes, and 20% for testing. In order to be able to deploy this script for your specific use case, follow these instructions:
- Open the
predictingValues.py
script located in theresults
folder. - Change
nameFileIn
and include the file where the results of the batch experiments are collected. This .csv file should follow this structure (it is prepared for 8 citizen agent profiles and 5 mobility modes, minor changes to reduce/increase these values would be needed):
Total proportion of workers living in the area of interest | Proportion of workers of profile 0 | ... | Proportion of workers of profile 7 | Usage of mobility mode 0 | ... | Usage of mobility mode 4 | Mean commuting time | Mean commuting distance | Construction site occupancy |
---|
- Set
nameFileOut
. This file will gather the results obtained from the regressor. - Set
nameStatFile
. This file includes the statistical results (mainly R^2 and RMSE values) of the regressor.
The results obtained from the regressor model will be used to feed the real-time model or "CityScopable" model. The aforementioned urban-metrics will define the t=0 scenario that can then be used to visualize how the commuting process can be altered thanks to the suggested urban disruptions and incentives. To adapt this model to your specific use case:
- Import the
buildings_shapefile
,roads_shapefile
,busStops_shapefile
,TStops_shapefile
andTline_shapefile
just as you did in B.1. and B.2. This time these shapefiles will include only the area of interest (base case: Kendall) and not the surroundings (base case: Greater Boston Area). - Set the
entry_point_shapefile
. This file should include the entry points to the selected area, both road entry points and metro/train entry points. Attributes:mobility
indicates the type of entry point (road or metro). - Set the .csv files containing the results of the regressor. These could be the what-if scenarios that have been created for the calibrated case or the files generated for any hypothetical behavioral incentive that might have changed citizens' decision-making parameters.
- Set
activity_file
with the daily schedule of each citizen profile. - Set
originalProfiles
(equivalent toprofile_file
in B.1.) andmode_file
just as you did for B.1.
You are now ready to run the CityScopable GUI and easily visualize citizens' reactions to potential urban disruptions and housing-related incentives.