The following page will present the conceptual location model, first abstracting from reality and then showing how this is converted into the physical model. The model is a simple abstraction which replicates what is postulated in Alonso’s theory (1964); that either firms or residents desire a certain amount of space and this desire for space leads to competition for land driving up the price in the most accessible areas. The following section will detail the inner workings of the model. The model itself can be considered as consisting of three separate entities: employer and residential agents, and the urban environment. The environment acts as a container for agents but also has properties which influence whether or not it is attractive for a particular agent (see accesWork field). All of the entities can interact with one other, while the residential and employer agents can also interact with themselves. Figure 1 highlights the user interface of the model. Clockwise from top centre is the control bar for the simulation, the GIS display which shows the agents and the urban environment, model parameters, model outputs, graphs for aggregate outputs (specifically the land-use within the area), the number of agents searching and not searching, the number and types of agents, and a legend for interpretation of the GIS interface.
Figure 1: Location model user interface.
Before discussing the definition and formation of agents (see below), there needs to be a brief discussion of how time (and dynamics) is treated within this model. The choice of time in terms of both an event-scheduling approach and a temporal resolution (i.e., frequency of time steps) can have important consequences for the behaviour of the model (see Brown et al., 2005 for a more detailed discussion).
Within the segregation model, the temporal resolution was treated abstractly while the event-scheduling mechanism was detailed in Section Steps within the Segregation Model. However, the segregation model highlighted how areas can change over time as agents move into and out of areas. Within the location model, time can be considered as being approximately based on yearly intervals. The incorporation of time into the modelling framework allows us to introduce dynamics into the model and allows one to see how the system evolves. It thus meets one of the criticisms of past urban modelling efforts. Urban processes occur across different time scales and it is unreasonable to expect an agent to move each time step as in the segregation models in that it would be too costly.
Therefore within the location model, movement has been restricted. For example, firms do not move each time period because of the fact that firms expend a large amount of money relocating. Additionally within the resident agent group, agents have different probabilities about movement depending on their life cycle in terms of age. For example, younger residents, who are presumed to be more likely to rent, can move on a more frequent basis than, say, middle-aged residents who are presumed to have families and are owner occupiers.
Time, therefore acts as a trigger for agent movement, and this will be further discussed in the following sections (see movement and Steps sections for how events are scheduled). At the start of each time step (year), the resident agents within the model will have a probability of moving based on a rule set dependent upon their age while employer agents move when their ‘office lease’ is up, where we note that this is an average proxy for how long an employer stays in an area.
This section will describe the two types of agents within the model and the environment in which they are located. Before discussing these in detail, a number of caveats are needed. First, that while many things affect the choice of location, the model will solely explore how agents’ locations are affected by their desire to be located in the most accessible place where their space requirements can be met, based on the average cost of land as in Alonso’s (1964) model. Second, to simplify the system, only two types of agents are represented, that of employers and residents which are broken down further into three groups with different income and space requirements (see Resident Agents). These decisions were made to keep the model simple but at the same time, to allow one to study how land-use patterns evolve and change over time.
As with the previous segregation model, the environment in which the agents operate is composed of a series of polygons/entities which form a layer representing the urban environment and extending the basic model’s polygon agent class (see BasicPolygonAgent. Each entity contains information needed to create the agents, both of type resident and employer, based on information contained in the shapefile used to create it. As with the segregation model, the environment knows how many agents and of what type are within it, but not their precise location. Thus the agents are randomly located in each area when they are first created (see Building the Model Section in Basic Model).
Once the agents have been created, the model also contains aggregate information pertaining to population and employment (both density and counts, see socialClassOfUrbanAgent method in EnvironmentAgent), and accessibility and any other information in further model development such as the amount of parks in the area (Figure 2). Of the information contained within the environment entities, accessibility can be set by the user (see getACCES01 method). Accessibility plays an important part in the distribution of land-uses within the urban environment. Therefore within this model, it is not distance to the CBD but how accessible one area is, that makes an area more attractive than another.
Figure 2: The environment with one area’s polygon selected (yellow), highlighting its properties, and the panel which allows user interaction.
The environment entities colour represent the predominant group within the area; for example, if the area only contains employers of one type, for instance those associated with the commerce sector, the land-use will be termed ‘commerce employer’ and coloured dark blue (Figure 3). If there are equal numbers of two or more residential groups, the area would be classed as ‘mixed residential’ and shaded light gray. If there is a mixture of workers and employers in the same area, the area will be classed as ‘other’, and shaded white. This is calculated in socialClassOfUrbanAgent method.
As discussed above, located within the environment, there are both residential and employment agents with different characteristics. Each type of agent contains a rule set that allows them to select the best possible location to meet their needs. It is to these types of agents that the discussion now turns to.
Figure 3: The environment entities shaded by the predominant group.
Both the residential and employer agents extend the basic model's point agent class (see Basic Model). The residential agents within the model can be considered as households or as total residential population of the city. Within this group, there are three types of agents which reflect three separate socio-economic industrial classes: high income (e.g. financial services), middle income (e.g. teachers and other professional occupations) and low income workers (e.g. factory and low skilled occupations) which are classed as ‘commerce’, ‘service’ and ‘industry’ respectively. These classes are additionally broken down by age as young (18-34), middle aged (35-65) and old (66+). The agent’s age is calculated randomly when it is first created (see randomAge method in Resident Class). This was done to highlight how different population groups may have different needs and preferences that lead them to seek different areas within the city. For example, young professionals may place high value on proximity to the central area and want less space than middle aged couples with children who place high value on more space and access to schools, and parks, as well as low crime rates and quiet streets.
Each resident has an income value based on its industrial occupational grouping; however, there is some overlap between occupation groupings as reflected in the income distribution seen within London. The income of a resident is set at the beginning of the model when the agents are first created. Figure 4 shows the pseudo-code which gives a resident agent its income depending upon what group it belongs to. A random number generator is used to give an agent a value between the minimum and maximum income and this is then added to the minimum income (see setRandomIncome method in Resident Class). It is this income which gives the agents their bidding power.
Figure 4: Pseudo-code for setting the income of a resident based on social class.
In addition to the agent’s income, each agent desires a certain amount of space which is broken down by age categories. Space requirements are calculated in the same way as income values; however, space requirements can be set by the user (Figure 5 and setOriginalMinSpaceWanted method in Resident Class). Additionally if the agent reaches a new agent category, its space requirements are forced to change. It is the agent’s desire for space, governed by income that the agent uses to find a suitable area to live(see evaluateAndSetHappiness method in Resident Class). In addition to these properties, each resident knows its location and the number of times it has moved. Figure 6 highlights the agent’s properties within the GIS interface. The dialog box in the background additionally highlights the agent’s properties but allows for certain properties to be altered such as income.
Figure 5: Pseudo code for setting the space requirement for resident of type commerce.
Figure 6: Residents with one of the agents selected, highlighting its properties, and the panel which allows user interaction.
Employer agents were designed to reflect the residential agents’ employers, and subsequently the same three groups of ‘commerce’, ‘service’ and ‘industrial’ were used to represent employers’ different roles. Essentially these are the same as residents; however, instead of age, they have a tenure set between 0-6 (see randomTenure method in Employer Class), and unlike residential agents which age, employer agents’ decrease their tenure to zero. Once zero is reached, the employer can move. As with residents, employers have a space requirement. For example industrial firms are driven by the need for large amounts of land while financial services (i.e. ‘commerce’ employer) need less land but want a more central location. Figure 7 highlights the employers, with one employer highlighted showing its attributes. Each employer also has an income (see setRandomIncome method in Employer Class) which is four times that of residents. It is this income which gives the agent its bidding power.
Figure 7: Employers with one of the agents selected, highlighting its properties, and the panel which allows user interaction.
The model assumes that an agent has to move. Agents are forced to move to encourage the system to evolve and change over time. The ability of an agent to move is based on a life cycle probability for residents and tenure for employers. It is assumed that younger residential agents will move more frequently (every 2 iterations on average) than those who are middle aged (every 5 iterations) with the older residents moving the least (every 10 iterations, see the step method in Resident Class). This is based on the assumption that they are most likely to be living in rented accommodation. This is calculated by randomly choosing a value between 0 and 1 and if the random number is less than or equal to the probability of the agent moving, the agent moves (Figure 8). On the other hand, employers only move if their tenure is 0. Once an employer agent has moved and finds a suitable location, its tenure is reset to 6 and cannot move for 6 iterations of the model (see the step method in Employer Class). Limiting the agents’ movement is intended to reflect the fact that cities do not just change but adapt over time and secondly that movement incurs cost. If the agent can move, it then searches for a new location (see Section The Choice of Location).
While more complex movement criteria could be introduced as in Torrens's (2007) residential mobility model, when residents first decide whether or not to move is based on both internal or external forces. The agent places their property on the market and then searches for a new property that meets their requirements. Once one is selected, they move to that new location and the model moves to the next agent. However, it is not the intention to simulate housing markets in great detail but to explore basic dynamics between competing land-uses and how structures emerge through time using ideas from Alonso’s (1964) model. Additionally we will show how the basic model can be extended into studying a different type of urban phenomena other than segregation and how agent-based models can be developed without relying on cellular space. Of course more complex rules governing movement could be introduced.
Figure 8: Pseudo-code allowing the agents to move.
In reality the choice of location is extremely complex. An individual has a vast number of alternatives of where to live and this choice is dependent upon many factors such as where one works. The question is how does one simplify this complexity? The approach this model takes is similar to the Alonso (1964) model. That is, it is assumed that agents have a nearly perfect knowledge of average prices in an area which is not so unrealistic in terms of current information.
The choice of location within this model is solely governed by agents of either residential or employer type wanting to be located in the most accessible area they can afford where their preferences for space are matched. To achieve this, two searching mechanisms are used, one for searching the entire area (see Section Searching the Entire Area), and the other for local searching (see Section Local Searching and the calculateAttractiveAreas method in both Residents and Employers classes). In the segregation model, agents first search their local area, then move to their nearest neighbour of the same type, and then search this area. This searching mechanism suffices because the underlying assumption within the segregation model is that agents want to live in areas where their preferences are satisfied (i.e. that a certain percentage of neighbours are of the same type). If the agent was dissatisfied, it would move to the nearest place where it was satisfied. However, in this model, this is not the case. Agents want to locate in an area where their utility is maximised. The question therefore is ‘How does the search for this ‘best area’ take place?’
It has already been noted that the model uses polygons to represent land parcels/urban entities (see Section Environment). It is these that can form boundaries which are used to make informed judgements on the ‘best area’ in relation to agents moving (as in traditional gravity type models). However, using predefined zonal systems (such as wards) has its limitations for clusters which spread across boundaries due to aggregation issues can be lost. Therefore an alternative zonal system is used, based on a series of small overlapping areas which allow agents to search the entire area which is not restricted to such boundaries and allows agents to identify clusters spread across such boundaries (see NeigbourhoodPointsArrayList Class for how these areas are created). This is based on the concept that while someone may like a specific area, they tend not to know where the ward boundary is. Additionally creating a series of smaller overlapping zones speeds up the search within the model. This ensures the entire urban area is searched when an agent is searching for a new location.
This series of small overlapping areas are calculated using boundary data from the original shapefile (Figure 9A). The model then creates a series of points that are used to create a series of overlapping polygons as seen in Figure 9B which cover the entire urban area and act as an attraction surface. These small areas were designed to purposely overlap, thus allowing clusters to develop over different urban entities. Additionally they ensure that the entire urban layer is covered by at least one small area. These overlapping areas additionally ensure that agents have a greater number of neighbourhoods to choose from when searching for a new location. As with the segregation model and the basic model in general, areas are restricted by geographical features.
Each individual area can store information pertaining to the number and type of agents currently within each area (through point in polygon analysis) along with information relating to the underlying urban environment. If the local area is completely within a single urban entity, the area gains the entities’ characteristics, specifically its accessibility score. However, if the area overlaps two or more urban entities, the characteristics of the entities are weighted depending upon the proportion of the area in each of the urban entities (i.e. proportional weighting). The number of agents and the average land price (i.e. the total income of the area based on the sum of all the income of all the agents divided by the area in metres) is calculated on an individual area basis (i.e. the agents which fall within the small area). Further details can be seen in the getLocalNeighbourhoodAttributes method in LocationModel Class. It is these small areas which the agent uses to search the entire area (e.g. the calculateAttractiveAreas methods).
Figure 9: From three urban entities (A) to overlapping small areas covering the entire urban area (B).
The information stored within the small areas is calculated at the beginning of each time step in case the user, for example, has altered the accessibility of any of the underlying polygons during the course of a time step. When an agent is searching for a new location, whether it is a resident or an employer, it looks for the most attractive area it can be satisfied with (defined as the most accessible area, see findMostAttractiveArea method in LocationModel class). This is achieved by sorting the list of small areas based on accessibility. As all the areas overlap, there may be multiple small areas with the same accessibility score. If this is the case, the agent just selects the first area in the list in the first instance. The agent will then query this potential ‘best area’ to see if it can afford the desired piece of space; that is, if its minimum space required multiplied by the cost per metre2 (based on the sum of all the incomes of all the agents which currently reside in the selected area divided by the area in metres within the selected small area) is less than the agent’s income (see summaryOfBestAreaWealth and summaryOfBestAreaWealth methods in Resident class for an example). This is calculated each time an agent queries an area as an area’s value may change as agents move about the system over the course of a single time step. If the agent can afford the desired space (i.e. if its minimum space required multiplied by the cost per metre2 is less than the agent’s income), it then searches that area by carrying out a local search within the ‘best area’. If the agent cannot afford the current ‘best area’, it moves to the next ‘best area’ and repeats the process described above (Figure 10).
Figure 10: Searching for the ‘best area’. Each circle is a new neighbourhood which agents search systematically until they find a new location to settle.
Once an agent finds an area it can afford, a local search within the ‘best area’ is carried out (see calculateAttractiveAreas methods in Employer and Resident Classes). This entails the agent randomly searching the current ‘best area’, creating small neighbourhood buffers of a specified radius which take into consideration geographical features (see Section GIS Operations in Basic Model), and calculating the average price per metre2 based on the sum of the agent’s income that falls within the neighbourhood buffer divided by the area of the neighbourhood buffer. It needs to be noted that while the agent movement is restricted to the ‘best area’, the creation of small neighbourhoods are not stopped at the boundaries. Figure 11 highlights this random local searching and the creation of buffers each time the agent queries another location. The agent repeats this random searching process 50 times for each area and this ensures that the entire area is searched before the agent moves to the next ‘best area’ if it cannot be satisfied in the current ‘best area’. If the agent becomes satisfied at any point during this local searching, it stops searching. The reason this local searching was introduced is due to the fact that the ‘best area’ contains aggregate information about the area and the model is focusing on the individual. For example, the current ‘best area’ may be suitable at the aggregate level but at the smaller level it may not be; therefore the agent cannot move to that specific area within the ‘best area’. For instance, if the area was 1km2 and only part of the area was occupied say 100m2, and the rest of the area was empty, it might be unreasonable for the agent to move to the occupied space because locally the price per metre2 may be too high. However, if the agent is already in the ‘best area’ and its preferences are satisfied, it does not carry out this local searching.
If the agent cannot find a suitable location within the current ‘best area’ during this local searching because all the areas it has queried are too expensive, it will then move to the next ‘best area’ (as highlighted in Figure 10). It repeats the same search local search process until it finds a location where it will be satisfied. The use of overlapping regions ensures that the whole environment is searched. If no suitable area is found, the agent leaves the system. The searching process presented in this section is summarised in Figure 12.
Figure 11: An example of an agent searching a new area (black circle). The agent initially moves to the centre of the area (black dot), then searches the area. The red dots reflect the agents searching movement and the yellow circles reflect the agent’s local neighbourhood calculations.
Figure 12: Searching for the best location.
The sections above have presented the core assumptions of the location model. This section will explore how these different aspects are linked together. As with Alonso's (1964) model, it is assumed that instead of distance from the city centre, it is accessibility which makes one area more attractive than another. It is these factors that give the agent its utility function. It is presumed that agents want to maximize their space requirements given their budget constraints. By giving different agents different incomes and space requirements, one can explore the spatial distribution of agents within the urban environment through the process of competing and bidding for land. It is assumed that the factors of space and income will result in land rents which correspond to Alonso’s traditional theory. As with Alonso’s original model, the adjustment of land prices is driven by individual agents’ movement as they compete for space within the urban area. Unlike Alonso’s model, dynamics have been introduced; rent gradients will not just occur but develop over time through the process of agent movement.
Figure 13 sketches out the main processes within the model and relates directly to the choice of location and movement outlined in the previous subsections (see Sections The Choice of Location and Movement respectively). When the simulation is first started, the GIS data is read into the model(see buildModel method). This data is used to create the urban entities and these then create the agents of both resident and employer type based on information stored in the shapefile (see setUpResidents and setUpEmployers methods in the Environment Agent Class respectively). If they are of type residents, agents are then given a random age, an income, and a minimum space requirement. If they are of type employer, they are given a tenure, an income, and a minimum space requirement. Once all the agents have been created, small overlapping areas are created. The model then builds the displays (see buildDisplay method in the Location Model).
After the displays have been created, a scheduling method is called (see buildSchedule method in the Location Model). This specifies the order in which events are scheduled when the model is run. First pre-step is called; this iterates through the agents and the environment entities and updates their characteristics in case they have been changed by the user. Pre-step is also where the ‘best area’ list is calculated based on accessibility (see getLocalNeighbourhoodAttributes).
After pre-Step, Step is called. During Step, each agent has the potential to move as described in Section Movement. Additionally if the agent is of type resident and its age has reached a new age group, its space requirements are forced to change (see Section Resident Agents). If the agent can move, it searches for the ‘best area’ where its preferences for space are met (as described in The Choice of Location section). Once all the agents have been given the chance to move, the model enters the post-Step phase. Here, desired new agents of both type employer and resident can be added to the system (see addNewEmploymentAgent and addNewResdientAgent methods) and old residents may be removed (see removeResidents method). For each employer agent, its tenure is decreased by one, and for residents their age is increased by one. For both types of agents, their satisfaction for their current local neighbourhood is evaluated (i.e. can they still afford their desired amount of space in the area? See evaluateAndSetHappiness methods in Employer and Resident classes) as described in the Local Searching section. If the preferences of the agents are not met, the agent it is classed as searching, otherwise it is classed as not searching. For each environment entity, the predominant agent group is calculated and counts the types of agents within it. Before returning to pre-Step, the displays of the model are updated, aggregate change is recorded to a text file (see buildDataRecorderMethod method) and individual agents are recorded to shapefiles (see takesnapshot method) which allows for post analysis of the model.
Figure 13: Flow diagram of the key processes within the location model.
Alonso, W. (1964), Location and Land Use: Toward a General Theory of Land Rent, Harvard University Press, Cambridge, MA.
Brown, D.G., Riolo, R., Robinson, D.T., North, M. and Rand, W. (2005), 'Spatial Process and Data Models: Toward Integration of Agent-Based Models and GIS', Journal of Geographical Systems, 7(1): 25-47.
Torrens, P.M. (2007), 'A geographic automata model of residential mobility', Environment and Planning B: Planning and Design, 32(2): 200 – 222.