Next Article in Journal
Social Metabolism in Buruan SAE: Individual Rift Perspective on Urban Farming Model for Food Independence in Bandung, Indonesia
Previous Article in Journal
Working in (Slow) Progress: Socio-Environmental and Economic Dynamics in the Forestry Sector and the Contribution to Sustainable Development in Europe
Previous Article in Special Issue
The Action Point Angle of Sight: A Traffic Generation Method for Driving Simulation, as a Small Step to Safe, Sustainable and Smart Cities
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Method for Selecting the Vehicles That Can Enter a Street Network to Maintain the Speed on Links above a Speed Threshold

by
José Gerardo Carrillo-González
1,2,*,
Guillermo López-Maldonado
2,
Juan Lopez-Sauceda
1,3,* and
Francisco Perez-Martinez
2
1
Consejo Nacional de Humanidades Ciencias y Tecnologías (CONAHCYT), Avenida Insurgentes Sur 1582, Colonia Crédito Constructor, Demarcación Territorial Benito Juárez, Mexico City 03940, Mexico
2
Departamento de Sistemas de Información y Comunicaciones, Universidad Autónoma Metropolitana (UAM), Avenida de las Garzas No. 10, Colonia El Panteón, Lerma de Villada 52005, Mexico
3
Departamento de Procesos Productivos, Universidad Autónoma Metropolitana (UAM), Avenida de las Garzas No. 10, Colonia El Panteón, Lerma de Villada 52005, Mexico
*
Authors to whom correspondence should be addressed.
Sustainability 2023, 15(13), 10272; https://doi.org/10.3390/su151310272
Submission received: 1 June 2023 / Revised: 22 June 2023 / Accepted: 25 June 2023 / Published: 28 June 2023

Abstract

:
The introduced method is a proposal for detecting spaces (links) and times (90 s periods) where the average speed is below the desirable, and for selecting vehicles in those spaces and times so that vehicles are systematically and gradually reduced from one simulation to another until we get a simulation presenting the desirable average speed in all space and time. With our method can be detected the specific vehicles that can enter a street network so that the average speed on the network’ links be always greater than a speed threshold. The speed on a segment is calculated from two perspectives: (1) the general speed (vg), calculated with measurements and estimates, used to estimate the links’ travel times for selecting the vehicles routes, (2) the particular speed (vp), calculated without estimates and for segments with traffic light only with measurements performed during an interval of the green time, used to identify links and periods of unacceptable (low) speed. We test our method with different origin-destination (OD) tables, for each OD table we obtain the number of vehicles that can enter the network in 1 h so all links and periods present acceptable speed. Another result was, for each link, the change of the average (and of the standard deviation) of VG (the vector containing the vg of each period) between the final (after our method) and initial (the traffic conditions without our method) simulations, therefore the percentages of the links presenting a convenient change were evidenced. We did the same with VP (the vp of each period).

1. Introduction

It is known that travel times in cities of developing countries are increasing; the rapid face of motorization (vehicle registrations) has been identified as a traffic problem, in Mexico and many more countries the number of motor vehicles is increasing by more than 10% each year [1]. Some developing regions have critical areas susceptible to congestion, if one critical area reaches the congestion collapse can cause traffic jams for long periods in the road network; reducing the vehicles allowed in circulation to avoid congestion or to improve the average speed is a solution currently under investigation. The work in [2] focuses on preventing congestion collapse in (and around) a congestion area by coordinating and controlling the traffic signals to maintain the current density below the critical density by regulating the vehicles that come. The work in [3] simulates traffic scenarios, each with specific traffic policies; scenario 0 represents the traffic at normal conditions, scenario 1 halves the number of cars that can enter the municipality and completely forbids private cars in the central area, scenario 2 reduces by 50% the number of parking places, scenario 3 is the combination of scenarios 1 and 2; the average travel speed in scenario 3 is 43 km/h, in scenario 1 is 32 km/h, in scenario 2 is 22 km/h, and in scenario 0 is 16 km/h. The mode choice and the travel times in a city with two kinds of vehicle restrictions were analyzed in [4]. In the Restricted Traffic Zone (RTZ) taxis, public transport, motorcycles, and vehicles with a permission pass are allowed; in the Odd-Even Zone (OEZ) vehicles depending on their plate termination number are allowed. Simulations of 4-h, with different origin-destination (OD) tables and scaling demand patterns (incrementing accumulation from empty streets to congestion) were presented in [5]. Despite the chaotic behavior of individual links at the macroscopic level, the network presents a well-defined outflow vs. accumulation scatterplot. Furthermore, the data from different simulations form, approximately, the same pattern; by limiting the number of vehicles entering the reservoir (through reducing the traffic lights green time of the inbound directions, so accumulation does not exceed the network capacity) a greater number of completed trips is reached. An adaptive control approach to mitigate congestion and improve mobility is presented in [6]. The strategy to increase the rate of completed trips is to keep optimal accumulation in the neighborhoods with higher destinations; the systems presenting gridlock can be significantly improved by regulating the input rate and, if necessary, prohibiting vehicles from entering. As predicted in [6,7], restricting the number of vehicles coming to congestion zones improves mobility for all vehicles. One way to prevent over-saturation in a part of a network (the protected part) is through gating [8], which consists in extend the traffic lights red phase of the selected intersections from where vehicles can enter the protected network. A perimeter flow control for a network with cars and buses was presented in [9], it was proposed a 3D macroscopic fundamental diagram (MFD) and it was found that the network’s traffic composition affects the shape of the 3D-MFD since it modifies the maximum network’s throughput. The stochasticity and time-varying nature of travel demand have an effect on the MFD shape (introduce scattering), through boundary conditions (rationing the traffic demand) well-defined MFDs are obtained [10]. An adaptative optimization scheme for perimeter control is proposed in [11], in this study a heterogeneous network was partitioned into four homogeneous regions in order to apply perimeter control to regulate the inflow and outflow between regions; the novelty is that the selected control points (where the flow is regulated) are in the boundaries between regions and the generated queues in this points are inside the area of analysis, therefore, these queues influence the traffic and affect the network performance (e.g., the total travel time and the space-mean speed).
Similar is our study with the works that calculate the point at which if the accumulation of vehicles in the street network increases, the travel production decreases, since we compute the (upper) limit of the number of vehicles that can enter the network (during a time interval) for which the links’ average speeds stay greater than a speed threshold. The data of various cities were analyzed in [12] to establish the critical point, i.e., the accumulation of vehicles from which the travel production of the network begins to drop. For signalized intersections in [13] was established a relationship between capacity (explained through followed-up headway, saturation flow rate, and proportion of time in which vehicles can leave the queue) and driving behavior parameters: driver response time during queue discharge, jam spacing, and queue discharge speed. The networks presenting a low flow than the predicted if traffic were evenly distributed are analyzed in [14], in addition, it was studied how the bifurcation’s critical density changes (increases) with adaptive drivers (those choosing a route according to the current traffic). The relation between the quality of the Advanced Traveller Information System and the reserve capacity (i.e., the additional supported demand without exceeding the capacity of all links) of different networks is presented in [15], it was found that reserve capacity does not necessarily increases with traveler information level.

1.1. The Problem

The scenario selected in this work is a real street network where the current infrastructure is not sufficient to achieve sustainable average speed on each link and period of time, considering a constant flow at the entry points of the network. The speeds on the links of a street network depends on different factors: the infrastructure (e.g., the traffic lights control, the length and width of the streets), the traffic enforcement authority, the drivers’ behaviors, the right of way rules, the vehicles’ origin-destination table, the vehicles’ routes, the input flow, among others. In undeveloped and developing cities a few drivers follow a planned route according to the current traffic conditions and commonly have simple controls for traffic lights, but even if most of the drivers follow a planned route the network links can experience low speeds since the number of vehicles circulating is not adequate. In a street network, it always seems convenient to put in operation an intelligent control for traffic lights and a system for monitoring the traffic state and establishing optimal routes, these can be simple or complex implementations, in the latter (likely) requiring sensors and machines for storing and processing data, therefore expensive.
In the street network presented in this work, the traffic light control is limited to fixed times, since in the real location is not in use a more advanced control. We introduced a procedure to estimate (periodically) the links’ travel time, with this intel and a simulator built-in method the vehicles (optimal) routes are chosen, since real drivers select, intuitively or with the help of technology, the route they consider the best. If the selected network is under a constant flow at the entry points, a traffic light control based on fixed times and a procedure for selecting routes based on estimating the links’ travel time at time intervals are insufficient to avoid unacceptable speed on the network’s links. According to the imposed flow, this work aims to find which vehicles can enter the study area (the network), and which not, for not saturating the network. The main problem is, during 1 h of continuous flow at each entry point of the network and with a previously defined origin-destination table (abbreviated OD, in which randomness is involved), design a method to reduce the number of vehicles gradually and systematically from one simulation to another until reaching a (final) simulation in which no link, at any period, presents a particular speed (vp) less than or equal to the speed threshold ( v _ b ). Therefore, the number of vehicles allowed in the final simulation is, approximately, the maximum number supported by the network (for an hour) that provides sustainable average speed on links. In this work when we mention sustainable (or acceptable) speed we refer to traffic conditions where vp > v_b and low (or unacceptable) speed where vp <= v_b. Additionally, regarding the notation DG and DP are the vectors containing the general density (dg) and particular density (dp) of each period, respectively, which are average densities (vehicles/m).

1.2. Research Questions

  • For an OD configuration, what is the ( ~ maximum) number of vehicles that the street network supports (i.e., that can enter the network) in 1 h so vp > v_b at each space (link) and time (90 s period)?
  • In the initial simulation (IS, with vehicles entering the network as dictates the imposed entry flow) and in the final simulation (FS, in which the incoming vehicles have been filtered by the proposed method), what is the percentage of links for which exist relationship between DG and VG? and between DP and VP?
  • Comparing the output data of the IS and FS, what is the percentage of links for which the average of VG increased (in the FS with respect to the IS)?, what is the percentage of links for which the standard deviation of VG decreased (in the FS with respect the IS)? The same last two questions with VP, DG, and DP.

2. Literature Review

It is interesting to note the recent efforts to improve mobility and transportation efficiency. Urban mobility is a very important element to achieve economic and social development; urban mobility and sustainable transportation can be seen as the core of a city since its importance; mobility plays an important position among the indicators of a smart city, it contributes to economic growth and to improve the people life quality [16]. The vehicles of a city have become an important source of information [17] and a means to transport data [18]. The use of Open Government Data and public bus transportation data from citizens smartphones to improve urban mobility in [19]. A mobility monitoring system designed to track people and vehicles employed for traffic forecasting and the optimization of traffic flows in [20]. The identification of spatiotemporal commuting patterns through data mining methods in [21], the generated knowledge is pretended to be used to improve mobility: reduce car dependency, shorten excess commute, and alleviate traffic congestion. A policy transfer framework to transfer sustainable urban mobility policies from a developed to a developing institution in [22]. Through simulation modeling can be constructed a model representing the real world (or scenarios not yet constructed); the implications of urban computing in sustainable smart cities in [23], in which were presented cases that use urban computing for smart urbanization, one important case is transportation. Proposal solutions to achieve an efficient transportation network are presented in [24], which are sharing space, the development of cycle routes and public transportation networks, separating transport modes, eliminating the need to travel, reducing distances, policy changes, and technological novelties. A decision support tool to help cities in transportation planning and policymakers in the implementation of transport policies is introduced in [25] since the use of transport policies impacts on the economy, the environment, and society. Mobility patterns are changing fast and the typical patterns of home-work-home (identified and forecasted for planning the transport system) are not always valid, thus the challenges that mobility and Mobility-as-a-Service (MaaS) are experiencing are presented in [26]. The relation between public polices for reducing urban traffic congestion and road accidents is investigated in [27], it was found that by promoting certain modes of public transport and by regulating parking spaces sustainable mobility was improved (reducing travel times and the probability of accidents).
Another way to improve traffic conditions is by combining the use of private cars and other modes or sharing private cars. The fast growth of urbanization is posing a problem to transportation services, in [28] with a MaaS platform and a journal planner are offered trip options that integrate different modes: private cars, public transport, bike-sharing, car-sharing, and ride-hailing. The benefits that can be acquired from carpooling are presented in [29], for three university campus networks and through microscopic simulation were studied the benefits of carpooling (up to three persons in the same vehicle) from the residential areas to the university campus, the improvements were the reduction of pollutant emissions, the increment of average speed and the reduction of travel time. Evidence that (in Bangkok) ride sharing will gain acceptance if private cars have to pay for congestion charges and parking fees was presented in [30]. The relationship between the built environment and car ownership and use was investigated in [31]. Denser residential density, compact land use, better transit services, and street connectivity can reduce the need for a car.

2.1. Congestions

The congestion problem in cities is widely investigated so far, as it is a problem in the developed, developing, and undeveloped world. The work in [32] reports the principal traffic problems of cities in India that are common in undeveloped cities: inadequate traffic infrastructure, insufficient street network, the growth of ownership and use of motorized vehicles, outdated traffic control and traffic management, and traffic congestion (the most notorious and affecting all socioeconomic groups). The article in [33] presents a review of ways to identify and measure metrics to detect congestion; it is mentioned that in Korea, the Korea Highway Corporation (KHC) identifies congestion when the vehicles’ speed is below 30 km/h, so a speed-based threshold is a suitable indicator of the congestion impact; the advantages of using speed for detecting congestions are highlighted: simplicity, ease of data collection, stability, repeatability, continuous value. The fact that transportation network companies (TNCs) are the biggest contributor to traffic congestion in San Francisco was revealed in [34], two years were compared through traffic metrics, 2010 and 2016, the last year prepared for two scenarios, with and without TNC. With a Bayesian network model in [35] were detected the variables (states) for a scenario to be likely congested: direction, day of the week, time of day, weather, incident on upstream links, incident on target link, and incident on downstream links.
Different solutions for mitigating congestions and the problems associated with it have been explored. The implementation of transportation demand management policies (peak time shift and decentralization), through microsimulation to alleviate congestions and reduce travel times in cities of developing countries, in [36]. Improvements to the street network of the Mexico City Metropolitan Area (the construction of new arcs and the modification of existing ones) were proposed in [37], and the best scenarios in terms of flow circulation and the lowest tons of emissions were identified. Two policy measures for demand management, car-free day and odd-even plate were analyzed through simulations in [38], regarding the odd-even plate scheme in the first year it was noticeable the increment of average speed and the decrement of CO and NO emissions, nevertheless, as the years passed the average speed and the pollutants emissions become closer with the no scheme values since year after year more drivers adapt to the restrictions. The aspects that make it possible (or not) to introduce congestion pricing in four cities (Santiago de Chile, Mexico City, Sao Paulo, and Bogota) were investigated in [39]; the cities share some features: there are already in place traffic bans, the car ownership rate is high and, they have multiple levels of government authority.

2.2. Macroscopic Fundamental Diagram

The understanding of a network at the macroscopic level is important to propose solutions for problems such as congestions and poor speed on links. Evidence about the existence of the macroscopic fundamental diagram on neighborhood-sized sections in [40]. The traffic scenario in which in a city occurs a disturbance, inducing drives to select unfamiliar routes, in [41]; the MFD of the scenario presents a clockwise hysteresis loop, since during the congestion recovery stage the network is likely to experiment an uneven congestion distribution (it takes more time to clear the more congested areas than the less congested), therefore, for two same density values of the hysteresis loop, there is a higher flow during the loading process and a lower flow during the recovery process. For an area of San Francisco and Yokohama, in [42] was demonstrated that the MFD can be formulated for streets conformed by blocks of different widths and lengths (but no turns) and regardless that the traffic in all (or some) of the intersections are controlled by arbitrarily timed traffic signals; the regularity conditions (sufficient and not necessary) for the existence of the MFD are: (1) the demand varies slowly and is equally distributed, (2) redundant network (various routes options), (3) homogeneous network (similar links), and (4) links with a fundamental diagram not significatively affected by turning movements during steady flow. The MFD was investigated in [43] for several situations, as surface network vs. highway network and penetrating roads vs. ring roads; it was detected a hysteresis-like effect in the MFD that is observable in the surface street network but not in the centermost part (this part is usually congested and rare events does not impact on it); in the ring and penetrating roads of the highway network was also visible the hysteresis-like effect (the ring roads were not homogeneously congested during the morning, when it takes place the event that produces the congestion); a recommendation to obtain less scattered MFD is to separate signalized and unsignalized links. A MFD was developed in [44], the variables were explained with topological properties of the network; the free-flow speed was better explained with the average number of junctions per kilometer, and the network optimal density with the sum of degrees of all functions divided by the trafficable area; through sensitivity analysis it was presented evidence that the established relationships between the MFD parameters and the network topological metrics should be independent of the network size and transferable to networks of different size.

3. Materials and Methods

The methods we used are briefly described here:
  • Construction of the street network: we selected and exported a map from OpenStreetMap that we imported in NETEDIT (a network editor) to construct the street network. We manually edited the street network (we set the traffic lights times and the right of way at intersections, and we corroborate the number of lanes and the length of links) to be similar to the real network. NETEDIT is a tool included with the Simulation of Urban Mobility (SUMO), which is a package for microscopic and continuous traffic simulation [45] and is the selected software to perform the simulations presented in this work.
  • Metrics: We establish the way for performing speed measurements and density measurements. We design the speed metrics (the general speed and the particular speed) and the density metrics (the general density and the particular density) to be used in our procedures.
  • Procedures: Our procedures were implemented with codes. The codes behind a simulation present the procedures for estimating the links’ travel times, for gradually reducing vehicles (between simulations), and for controlling the simulations. The language of the codes is Python, we write the codes with Python version 3.10.6.
  • Tunning parameters: By running simulations and based on the output we were able to tune parameters and modify the codes to improve our procedures.
  • Experiments: To verify the method in different traffic scenarios we performed 10 experiments, each unique for its origin-destination table. In the IS of each experiment we consider a constant flow (each 6 s a vehicle enters the network for each entrance), in the subsequent simulations the number of vehicles is being reduced by our method; for an experiment, we run simulations until the FS is reached (all segments and periods present sustainable speed) and with the output of this, we are able to answer our first investigative question.
  • Data analysis: With the output data of the FS (and with the output data of the IS), for each link we calculate the person correlation coefficient between DG and VG, then we obtain the percentage of links for which exists a relationship between DG and VG; we did the same with DP and VP. For each link we calculate the difference of AVG (and STD) of VG between the FS and the IS, then we establish the percentage of links for which the difference benefits the FS; we did the same with VP, DG, and DP. With this knowledge, we answered our second and third investigative questions. The data analysis was conducted with MATLAB version R2022a.

3.1. Zone under Analysis

The selected location to construct the street network of our simulations is the center of the city Toluca de Lerdo, the capital of the state of Mexico since it has street segments presenting (at certain hours) low speed, as can be corroborated with google maps on traffic mode. The street network has 12 entry points (origins, from where the vehicles enter the network) and 15 exit points (destinations, from where the vehicles leave the network).
Figure 1 shows the street network with OpenStreetMap. Figure 2 shows the street network with NETEDIT, in this Figure, it can be visualized which intersections have traffic lights and which do not. The street network is exported from OpenStreetMap and imported into NETEDIT where is edited, i.e., we defined (with a logic consistent with the real location) the connections at intersections (the ways in which vehicles enter and leave intersections) and the traffic lights times. In this work a segment (or link, or edge) is the section of a street between two intersections, an intersection is the area where segments join; segments with traffic lights are abbreviated SCS (the traffic light is in the intersection at the end of the segment according to the travel direction) and segments without it are abbreviated SNS. In Appendix A, Table A1 presents the information of the network links (ID number, length, number of lanes, SCS or SNS), Figure A1 shows the network of Figure 2 but with the segments ID number (for vertical segments the number is at the center in the right, for horizontal segments is at the center in the top).

3.2. Origin-Destination Table

The origins (from e1 to e12) and destinations (from s1 to s15) of the network can be seen in Figure 2 and are located at the borders of the network (we do not consider origins and destinations anywhere else since the network is in the center most part of the city). Each of the 10 experiments we performed has its unique OD table, an OD table has the destination of each vehicle entering the network. The procedure to construct a synthetic OD table is presented in Algorithm A1 of Appendix B, with this procedure we pursued (and is guaranteed) that a destination is not repeated until each one of the 15 possible destinations is selected for one of the next 15 vehicles appearing in the simulation; a destination is randomly selected and each has the same probability of being selected, thus the order of destinations is constantly changing. The procedure to generate an OD table seeks to uniformly distribute the vehicles on the network links, but as randomness is involved, each OD table will produce a particular traffic outcome that can be similar to real traffic conditions, thus a candidate to test our method.

3.3. Routes Selection

For generating routes, we select the default mode of SUMO, which calculates the route with the least travel time with the Dijkstra algorithm. Algorithm A4 in Appendix B presents the procedure for forecasting (every 90 s) the links travel times. This procedure is speed-based and we propose the general speed (vg) for this matter, Algorithm A3 (in Appendix B) presents the procedure to perform speed measurements for computing vg. When a vehicle will be generated in a simulation it has an origin-destination (from the OD table) and SUMO finds the best route (in terms of least travel time) according to the current links travel times (which are calculated with the current vg and the historical of the vg, among others). We do not consider it necessary to establish the decrease of travel time achieved by using the generated routes by SUMO because it was out of the scope to develop the finest route generator; with the current implementation for generating routes, a route integrated with links presenting high speeds (hence, low travel times) is likely selected over a route integrated with links presenting low speeds (hence, high travel times), this outcome is the equivalent in the real life to the drivers tendency to select optimal routes.

3.4. Vehicles’ Parameters

The vehicles generated in the simulations were set in SUMO with the following parameters values: id = “pasajero”, vClass = “passenger”, sigma = “0.5”, maxSpeed = “21.66658”, speedFactor = “normc(1,0.1,0.7,1.3)”, length = “5”, minGap = “2.5”. The car following model used was the (default) Krauß model, in which sigma is a parameter to manipulate the imperfection for driving, is in the range [0, 1] with 0 indicating perfect driving; we set sigma = “0.5” looking for standard conditions, i.e., the middle between perfect and inaccurate driving. The parameter maxSpeed is the top speed that a vehicle can reach. The parameter speedFactor = “normc(mean, dev, min, max)”, is a value that comes from a normal distribution with mean = 1 and standard deviation dev = 0.1, it is limited to a minimum value of min = 0.7 and a maximum value of max = 1.3. The speed limit that a particular vehicle can reach is v = vel_nor × speedFactor, with vel_nor 16.66 m/s and speedFactor is a value from a normal distribution with parameters mean = 1, dev = 0.1, min = 0.7, max = 1.3. Thus, the speed limit of a vehicle can be in the range vel_nor × min 11.66 m/s to vel_nor × max = maxSpeed 21.66 m/s. According to the speedFactor values (from the normal distribution as previously commented), the resultant v values conform (approximately) the next percentages: for the 68.27% of vehicles its speed limit is in the range 14.9999 to 18.3333 m/s, for the 13.59% its speed limit is in the range 13.3333 to 14.9999 m/s, for the 13.59% its speed limit is in the range 18.3333 to 19.9999 m/s, for the 2.14% its speed limit is in the range 11.6666 to 13.3333 m/s, and for the 2.14% its speed limit is in the range 19.9999 to 21.6666 m/s. Thus, it is guaranteed that for a great percentage of vehicles (the ~ 68.27%) its speed limit (bounded on the right by vel_nor + 1.66 and the left by vel_nor − 1.66, being ~ 1.66 m/s the 10% of vel_nor) is closely around to vel_nor, which is the expected speed limit of a vehicle on a link of the selected street network. Since vClass = “passenger”, we use the default parameters values in SUMO [46] for a “passenger” vehicle class: acceleration ability = 2.6 m/s2, deceleration ability = 4.5 m/s2, emergency deceleration = 9 m/s2. A passenger vehicle’s length is five meters (the default length in SUMO). The parameter minGap = 2.5 m (the default value in SUMO) is the distance between the current vehicle and the vehicle in front when vehicles are at rest. When a vehicle is generated in a simulation we set typeID = ‘pasajero’, therefore the vehicle is generated with the parameters values as defined in this section (in Algorithm A5 in Appendix B the instructions for generating vehicles and routes).

3.5. Measurements and Metrics

D G i I S is the vector containing the dgi of each period associated with the i segment and the initial simulation (superscript IS = initial simulation); similarly, we have D G i F S with the dgi of each period of the final simulation (superscript FS = final simulation). D P i F S is the vector containing the dpi of each period associated with the i segment and the final simulation; similarly, we have D P i I S with the dpi of each period of the initial simulation. The superscripts IS or FS and the subscript i are also used for VG and VP, which are the vectors containing the vg and vp of the different periods, respectively.
The variable dgi = densityi/(number_of_lanesi × segment_lenghti), where densityi = j = 1 j = 90 o b s j / 90 with obsj the number of vehicles observed on segment i at the j step considering a 90 s interval and steps of 1 s, number_of_lanesi and segment_lenghti are the number of lanes and the segment length of the i segment, respectively. Variable dpi is calculated in the same way that dgi with the difference that densityi = j = 1 j = k o b s j / k , with k the number of observations (in the 90 s interval) for which obsj > 0, in addition, if i is the index of a SCS, an observation must occur in a time inside the measurement range to be considered, this range starts a few seconds after the beginning of the green time (so vehicles be likely already in motion) and ends along with the traffic light green time. The variable v g i = j = 1 j = 90 = s p e e d _ m e a s u r e m e n t j / 90 , with i as the segment index, j as the step index and s p e e _ m e a s u r e m e n t j = h = 1 h = n i n s t _ s p e e d h / n , where inst_speedh is the instantaneous speed of the h vehicle, and n is the number of vehicles on the i segment at the j step; if n = 0 and the i segment is a SCS, s p e e _ m e a s u r e m e n t j = v e l _ n o r × 0.95 ; if n = 0 and the i segment is a SNS, s p e e _ m e a s u r e m e n t j = v e l _ n o r . The variable v p i = j = 1 j = k = s p e e d _ m e a s u r e m e n t j / k , with k the number of steps (during a 90 s period) for which n > 0, additionally, if the i segment is a SCS, a step must occur inside the measurement range to be considered, so steps during the first seconds of the green time and during the entire duration of the yellow and red times are not considered (vp reflects the speed when the vehicles can be in motion). Regarding these formulas, for simplicity for any period we start the j step index with 1, which is different than the simulation steps count since the start of the simulation (1 s passes between the simulation steps).
We use the built-in SUMO function traci.edge.getLastStepMeanSpeed(‘segment_name’) to get the equivalent to what we defined as speed_measurement, i.e., the space mean speed (the average of the vehicles instantaneous speeds on a segment named ‘segment_name’), and traci.edge.getLastStepVehicleNumber(‘segment_name’) to acquire the equivalent to what we defined as obs, i.e., the number of vehicles on a segment. In all simulations and for each segment we calculate dg, dp, vg, and vp every 90 s (the duration of any traffic light cycle), so we calculate obs and speed_measurement every 1 s (the time between the simulation steps). A 90 s interval is called a period, for any simulation, the first period is in the range (0, 90] of the simulation time and is referred to with index = 0, the second is in the range (90, 180] and is referred to with index = 1, and so on. The full details of how measurements were made and grouped in Algorithm A3 in Appendix B.
The vg is used in the procedure to forecast the segments travel times, which in turn are used to generate the vehicles’ routes. When for a certain segment and period (a 90 s interval) the calculated v p v _ b , where v_b = (vel_nor/2) 8.33 m/s is what we called the speed threshold, that segment at that period is classified as of low speed. We set the speed threshold to be half of the speed limit on links, nevertheless, this value is not strictly fixed in order to use our method and can be adjusted, it can be set to a higher value with the effect of a lower number of vehicles in the FS or to a lower value with the effect of a higher number of vehicles in the FS, thus the speed threshold can be set according to the vp that should prevail on links. As commented in the introduction, the Korea Highway Corporation identifies congestion when the vehicles’ speed is below 30 km/h 8.33 m/s. The procedure for selecting vehicles on the segments and periods classified as of low speed in Algorithm A6 in Appendix B.

3.6. Types of Simulations

Vehicle elimination is performed in a simulation for measuring (SM) and the selection of vehicles in a simulation for selecting (SS). After a SS, if vehicles were selected, the next simulation is a SM. In a SM the segments and periods where v p v _ b are identified as of low speed. The first simulation (also the IS) is a SM, in this are generated nt = 7200 vehicles. The second simulation is a SS, in this are selected specific vehicles (for which v p v _ b ) in the segments and periods identified as of low speed in the previous SM. The vehicles selected in a SS are not generated in the next SM. According to our control design (in Algorithm A7 in Appendix B), if additional vehicles are selected in a SS (besides the selected in the previous SSs) it follows a SM, if not, we modify the value of specific parameters and it follows a SS; the process ends (no more simulations are required) when in a SM there is no segment, at any period, of low speed, i.e., the condition v p v _ b is false for all segments and periods.
In a SS, if a vehicle is in a segment and period identified as of low speed in the previous SM, and in a time within the measurement range if the segment is a SCS (there is no condition regarding the time for SNSs), and in a position within the called segment’ selection area (explained in Appendix B after Algorithm A6), and its current speed is less than v1 = (vel_nor/2) × factor = 4.1666 m/s, then the vehicle is selected for not being generated in the next SM. Initially, factor = 0.5, if a SS concluded without succeed, i.e., without additional vehicles being selected with respect to the previous SSs, then factor += 0.05 (hence, changing v1 and other variables, see Algorithm A7 in Appendix B and the subsequent explanation).

4. Results and Discussion

With the proposed method a final simulation is reached in which vp > v_b for all segments and periods. The effectiveness of the method was tested for 10 experiments, each with a particular OD table, with satisfactory results. We select an experiment for evidencing the analysis that can be conducted; for the first simulation (with 7200 vehicles in 1 h) and the final (without the selected vehicles in the SSs), for each link, we investigate the correlation between DG and VG, and between DP and VP.
The total number of segments under analysis is sg = 69, of which 61 are SCSs and 8 are SNSs. We calculate the Pearson correlation coefficient (r) between D G i I S and V G i I S , with i = 1…69 being the index of the segments; the r average for SCSs is −0.8732, and for SNSs is −0.9479; the 95.08% of the SCSs present r <= −0.75, the rest of the SCSs, i.e., segment i = 7, 49 and 55 present an r between −0.7 and −0.75; the 100% of the SNSs present r <= −0.9. Furthermore, we calculate the r between D G i F S and V G i F S ; the r average for SCSs is −0.8605, and for SNSs is −0.9285; again, 95.08% of the SCSs present r <= −0.75, the remaining SCSs are i = 7, 51, and 55 and present an r between −0.7 and −0.75; the 87.5% of the SNSs present r <= −0.9, the remaining SNS is i = 67 with r =− 0.86. As expected, the relation between DG and VG is better reflected by SNSs, since for SCSs the traffic lights add complexity to that relationship. Segments i = 7 and 51 are similar in length, their travel direction is the same and their start and end positions along the x-axis (the horizontal according to the point of view in Figure 2) are similar, then there is a positional relationship between them and may be the cause for which both present a similar r value between D G i F S and V G i F S . In the IS and the FS, the r average of SNSs is closer to −1 than the r average of the SCSs. From IS to FS the r average of SCSs slightly changes, the same is true for the r average of SNSs. In addition, we calculate the r between D P i I S and V P i I S ; the r average of SCSs is 0.7937 , and for SNSs is −0.8391; for the 80.33% of the SCSs the r is less than or equal to 0.7 , the same is true for 100% of the SNSs; the r value of SCS i = 3 is the closer to zero ( ~ −0.1), followed by SCS i = 50 ( ~ −0.47); segment i = 3 is short in length and is not frequently used, therefore there is no relationship between D P 3 I S and V P 3 I S . Furthermore, we calculate the r between D P i F S and V P i F S ; the r average of SCSs is −0.7790, and of SNSs is −0.7911; for 83.61% of the SCSs the r is less than or equal to −0.7, the same is true for the 87.5% of the SNSs; the r value of SCS i = 3 is the closest to zero again ( ~ −0.18); the r value of SCS i = 54 is ~ −0.48, this segment is the only one connected to two input segments (i.e., segments by which vehicles enter the network). In the IS and FS the r average of SNSs is more negative than of the SCSs; in the FS the r average of SCSs, and of SNSs, is slightly more positive than in the IS.
We calculate the average (AVG) of the content in the vector V G i F S minus the average of the content in the vector V G i I S , for i = 1…69. Segment i = 22 stands out since it has the higher value in the y-axis ( ~ 1.39 m/s), which means that for that segment the AVG of VG notoriously increased in the FS with respect to the IS. The second highest y-axis value ( ~ 0.82 m/s) is presented by segment i = 11. The segments for which A V G   o f   V G i F S A V G   o f   V G i I S 0 represent the (46/sg) × 100 66.66%, the mean of the y-axis values for those segments is 0.2864 m/s. The segments for which A V G   o f   V G i F S A V G   o f   V G i I S < 0 represent the (23/sg) × 100 33.33%, the mean of the y-axis values for those segments is -0.1965 m/s. If the summation of the change of AVG of VG is expressed as t_change = (46 × 0.2864) + (23 × |−0.1965|) = 17.6919, thus the percentage of positive change is p_change = ((46 × 0.2864)/t_change) × 100 = 74.4601%, and the percentage of negative change is n_change = 100-p_change = 25.5399%. In this case, p_change is an indicative (as a percentage) of how much of the AVG of VG change (between IS and FS) is in benefit to the network. We calculate the average of the vector V P i F S minus the average of the vector V P i I S , for i = 1…69. Again, SCS i = 22 is notorious for presenting the higher y-axis value ( ~ 2.8 m/s), followed by segments i = 11 ( ~ 0.89 m/s) and i = 21 ( ~ 0.75 m/s). Because of the nature of how vg and vp are calculated, the speed improvement for SCSs during the green time is better reflected with VP. The segments for which A V G   o f   V P i F S A V G   o f   V P i I S 0 represent the ( 42 69 ) × 100 60.8695%, the mean of the y-axis values for those segments is 0.2757 m/s; the segments for which A V G   o f   V P i F S A V G   o f   V P i I S < 0 represent the ( 27 / 69 )   ×   100 39.1304%, the mean of the y-axis values for those segments is −0.0691 m/s. We have that t_change = 13.446, p_change = 86.1301%, and n_change = 13.8699%. The positive effects (a higher speed in the FS than in the IS) of the reduction of vehicles are captured with the proposed speed measures: vg and vp. The percentage of segments for which AVG of VG was higher is ~ 66.66%, and for AVG of VP is ~ 60.86%. The variable p_change reflects (as a percentage) how much of the total speed change (from IS to FS) is positive (a higher speed in the FS than in the IS). The p_change considering the AVG of VG is 74.4601% and considering the AVG of VP is 86.1301%, therefore for both cases a significant amount of speed change is positive.
We calculate A V G   o f   D G i F S minus A V G   o f   D G i I S , for i = 1…69. The AVG of DG is notoriously lower in the FS than in the IS for segments i = 11 and 22, the same segments that showed the highest increase of AVG of VG, and of AVG of VP (thus we corroborate the expected, an increase of speed corresponds with a decrease of density). It is convenient to note that segments i = 11, 21, and 22 intersect in the same junction. The segments for which A V G   o f   D G i F S A V F   o f   D G i I S 0 represent the 72.4638%, the mean of the y-axis values for those segments is −9.7645 × 10−4 veh/m; the segments for which A V G   o f   D G i F S A V G   o f   D G i I S > 0 represent the 27.5362%, the mean of the y-axis values for those segments is 4.0518 × 10−4 veh/m. We have that t_change = 0.0565, p_change = 13.6204%, and n_change = 86.3796%. We calculate A V G   o f   D P i F S minus A V G   o f   D P i I S . Again, the AVG of DP is notoriously lower in the FS than in the IS for segments i = 11 and 22. The segments for which A V G   o f   D P i F S A V G   o f   D P i I S 0 represent the 62.3188%, the mean of the y-axis values for those segments is −8.1261 × 10−4 veh/m; the segments for which A V G   o f   D P i F S A V G   o f   D P i I S > 0 represent the 37.6812%, the mean of the y-axis values for those segments is 2.1490 × 10−4 veh/m. We have that t_change = 0.0405, p_change = 13.7858%, and n_change = 86.2142%. As expected, most of the segments exhibited a lesser density in the FS than in the IS and the summation of the negative values (as an absolute value) from the density average difference is larger than the summation of the positive values. The previous said applies to the DG and the DP.
Another important result is the change of standard deviation (STD) of the variables VG, VP, DG, and DP, from IS to FS. We calculate the STD of D G i F S minus the STD of D G i I S . The segments for which S T D   o f   D G i F S S T D   o f   D G i I S 0 represent the 82.6087%, for those segments the y-axis values mean is −8.4806 × 10−4 veh/m; the segments for which S T D   o f   D G i F S S T D   o f   D G i I S > 0 represent the 17.3913%, for those segments the y-axis values mean is 1.2161 × 10−4 veh/m. We have that t_change = 0.0498, p_change = 2.9305%, and n_change = 97.0695%. We calculate the STD of D P i F S minus the STD of D P i I S . The segments for which S T D   o f   D P i F S S T D   o f   D P i I S 0 represent the 81.1594%, for those segments the y-axis values mean is −6.5564 × 10−4 veh/m; the segments for which S T D   o f   D P i F S S T D   o f   D P i I S > 0 represent the 18.8406%, for those segments the y-axis values mean is 1.7210 × 10−4 veh/m. We have that t_change = 0.0390, p_change = 5.7435%, and n_change = 94.2565%. Then, the dg (and dp) between periods is similar in the FS than in the IS for most of the segments, and the negative change from the density standard deviation difference (for DG and DP) represents the majority of the total amount of change (|negative change| + positive change). SCSs i = 11, 25, and 69, and SNS i = 66 present the highest negative change of STD of DG. SCS i = 22 presents the highest negative change of STD of DP.
We calculate the STD of V G i F S minus the STD of V G i I S . The segments for which S T D   o f   V G i F S S T D   o f   V G i I S 0 represent the 89.8551%, for those segments the y-axis values mean is −0.2133 m/s; the segments for which S T D   o f   V G i F S S T D   o f   V G i I S > 0 represent the 10.1449%, for those segments the y-axis values mean is 0.0678 m/s. We have that t_change = 13.6994, p_change = 3.4636%, and n_change = 96.5364%. We calculate the STD of V P i F S minus the STD of V P i I S . The segments for which S T D   o f   V P i F S S T D   o f   V P i I S 0 represent the 73.913%, for those segments the y-axis values mean is -0.1991 m/s. The segments for which S T D   o f   V P i F S S T D   o f   V P i I S > 0 represent the 26.087%, for those segments the y-axis values mean is 0.0915 m/s. We have that t_change = 11.8023, p_change = 13.9623%, and n_change = 86.0377%. For most of the segments in the FS the vg is similar along the time periods than in the IS, for those segments the STD of VG is a lower value in the FS than in the IS. The same is true with vp. In addition, the summation (as an absolute value) of the negative change of the STD of VG is noticeably higher than the summation of the positive change. The same is true with VP. SCS i = 22 ( ~ −0.65 m/s) gets the lower value of the difference of STD of VG. SCSs i = 21 ( ~ -0.6 m/s), i = 22 ( ~ −0.71 m/s), i = 48 ( ~ −0.64 m/s) and i = 69 ( ~ −0.6 m/s) get the lower values of the difference of STD of VP.
Table 1 summarizes the results presented above (the units of the columns Positive values AVG and Negative values AVG are in m/s if the vectors compared is a difference involving VG or VP and in veh/m if the vectors compared is a difference involving DG or DP.
We investigate the correlation value of the cases presented in Table 2. The nomenclature of Table 2 is as follows: [ A V G   o f   X F S A V G   o f   X I S ] = [AVG of X 1 F S − AVG of X 1 I S , …, AVG of X 69 F S − AVG of X 69 I S ]T, where AVG can be substituted by STD, and X can be a vector of the set {VG,VP,DG,DP}. Of the 12 possibilities presented in Table 2, for six of them |r| >= 0.7. Therefore, the segments as a group show some relationships. For example, the difference of AVG of VP explains quite well (r = −0.9445) the difference of AVG of DP, i.e., if speed increases, density decreases. Other less obvious relationships exist, as the difference of STD of VP potentially can explain (r = 0.8125) the difference of STD of DP, in the understanding that if the difference of STD of VP is negative, then in the FS the speeds are similar (the vp from period to period) than in the IS, also, if the difference of STD of DP is negative, then in the FS the densities are similar (the dp from period to period) than in the IS.
The density vs. speed relationship for the segments of the FS is presented in Figure 3, showing A V G   o f   D G i F S v s . A V G   o f   V G i F S . We can see that the pattern of the SCSs is different from that of the SNSs since for the SCSs were considered speed and density measurements during the whole cycle of the traffic lights. The AVG of DG upper limit for SNSs is noticeably lower than the upper limit for SCSs. Furthermore, comparing the AVG of VG values between SCSs and SNSs, for obvious reasons (the lack of traffic lights) SNSs show higher y-axis values (speed average) along the x-axis (density average).
Figure 4 shows A V G   o f   D P i F S v s . A V G   o f   V P i F S . In the case of SCSs, the measurements for calculating vp and dp are captured only at an interval of the green time (the interval initiates 12 s after the start of the green time and finishes with the end of the green time) and when there are vehicles on the segment, therefore the vehicles are (likely) in motion and with the right to pass at the intersection; the measurements for calculating vg and dg are made (or forecasted if obs = 0 veh, in which case speed_measurement  16.66 × 0.95 m/s) during the green, yellow and red times; this is the reason for the higher y-axis values and lower x-axis values for SCSs in Figure 4 than in Figure 3. In the case of SNSs, the measurements for calculating vp and dp are made only when there are vehicles on the segment; for calculating vg and dg if obs = 0 veh (zero vehicles on the segment) we set speed_measurement  16.66 m/s, this is the reason of lower y-axis values, and higher x-axis values, for SNSs in Figure 4 than in Figure 3.
Regarding SNSs, segment i = 23 has a higher priority level (used by NETEDIT to derive the right of way rules) at the intersection located at the end of segment i = 23 according to the travel direction; segment i = 31 also has a higher priority level at the respective intersection. For any other SNS, besides segments i = 23 and 31, the following is true: the intersection (at the end of the SNS) has just one input (i.e., the vehicles traveling by the SNS). In Figure 4 we notice that SCS i = 22 (y-axis 12.89 m/s) and SNS i = 23 (y-axis 13.99 m/s) seem atypical in the sense that it is expected a higher AVG of VP according to the AVG of DP. On the contrary, SCS i = 65 (y-axis 14.87 m/s) looks atypical in the sense that it is expected a lower AVG of VP. Regarding segment i = 22, it accumulates a noticeable quantity of vehicles during the red time that is not quickly discharged during the green time. Regarding segment i = 23, the next segment according to the travel direction (i.e., segment i = 25) is short in length ( ~ 54.58 m) and at times accumulates vehicles to full capacity and the vehicles in segment i = 23 need to wait for empty spaces in segment i = 25. Regarding segment i = 65 (with a length of ~ 53.72 m), it is common that during the red phase, there is no accumulation of vehicles, so in the green phase vehicles enter the segment with speed.
The proposed method gradually selects vehicles from the segments and periods classified as low speed, these vehicles will be prevented from entering the network in the following simulations. The selection of vehicles continues until for all segments vp > v_b at each period. For completeness, the method was tested with 10 OD tables (one table per experiment), each table associates in a different way vehicles and destinations, therefore the vehicles destinations and routes are different among experiments. The last two questions of the research questions have already been answered through the section Results and Discussion, in Table 3 in the third column we present the answer to the first question. Furthermore, the OD table with ID = 1 was the one used to conduct the analysis presented so far.
What is changing from one experiment to another is the OD table; with the procedure for generating an OD table we looked for an equal distribution of the vehicles among the network links, however, the number of vehicles that were prohibited from circulating is slightly changing among experiments. Considering the data presented in column 2 (the number of vehicles prevented from circulating) of Table 3, the average is 368 veh (the ~ 5.11% of nt = 7200 vehicles) and the standard deviation is ~ 75.78 veh; it is worth noticing that 490 vehicles (the case with the maximum number of vehicles prevented from circulating) represent the ~ 6.8% of nt and that 276 (the minimum) represent the ~ 3.83%.
The speed threshold v_b can be modified to a lower value to allow more vehicles in circulation with the effect of reducing the speed on links and to a higher value to reduce even more the number of vehicles in circulation with the effect of increasing the speed on links. An important parameter is factor, this was tuned by trial and error and determines how quickly the vehicles that will be prevented from circulating are selected, the lowest the value of factor the slowest the vehicles are being selected. Table 3 shows that in some experiments was necessary to increase (this happens at increments of 0.05) the value of factor in order to obtain the number of vehicles that can enter the street network in 1 h.

5. Conclusions

The proposed method was applied to 10 OD tables with satisfactory results, i.e., it was possible to eliminate vehicles until no segment, at any period, presents vp <= v_b. In the simulations we consider 1 h of constant flow at each entrance and a simple control for traffic lights to generate representative traffic of the zone under study, nevertheless, we consider it adequate that drivers select with intelligence its route (as it happens in real life), therefore we developed a procedure for estimating the segments travel times and with this knowledge the vehicles routes are generated.
We propose two traffic metrics, named vg and vp. For the segments with traffic lights, a representative percentage of segments, ~ 95 % in the IS and the same percentage in the FS present a negative correlation less than or equal to −0.75 between DG and VG. For 100% of the segments without traffic lights there is a negative correlation less than or equal to −0.9 between DG and VG in the IS, and the same is true for 87.5% of the SNSs in the FS. The vg was designed (i.e., the way that measurements for calculating vg were implemented) to give information about the convenience of traveling on a segment; in the case of SCSs, when there are no vehicles traveling on it (i.e., obs = 0 veh), a speed_measurement (16.66) ×   0.95 m/s; in the case of SNSs when obs = 0 veh then speed_measurement 16.66 m/s, a greater speed than the selected for SCSs so the convenience of a SNS over a SCS (in the specific case when obs = 0 veh) can be accounted when travel times are estimated and routes are generated (vg is used in the procedure to calculate the links travel times, and these for choosing the vehicles routes). In the IS a correlation between DP and VP less than or equal to −0.7 stands for 80.33 % of the segments with traffic lights, and for 100 % of the segments without traffic lights. In the FS the percentage of SCSs for which the r between DP and VP is less than or equal to −0.7 is 83.61 % , and for the SNSs is 87.5 % . The measurements to calculate vp were made only when obs  0 veh and for the SCSs only in an interval of the green time (no measurements in the red and yellow times were made), then no forecasted measurements were included and measurements when the vehicles are likely in motion in did were included, in this way, a low vp can be attributed (mostly) to the lack of capacity of the segment, even more, to the lack of capacity of the street network to handle the number of vehicles on it.
With the proposed method we compute the number of vehicles that the street network can handle in 1 h so that the vp of the network segments is (always) greater than the speed threshold, therefore we compare the output from the first (with 7200 vehicles generated in 1 h) and the final (where the selected vehicles are not allowed to enter the network) simulations. From the IS to the FS, we found that for the ~ 66.66% of the segments there was an increase of AVG of VG, and for the ~ 89.85% there was a decrease of STD of VG. For the ~ 60.86% of the segments, there was an increase of AVG of VP, and for the ~ 73.91% there was a decrease of STD of VP. Therefore, in the FS and for most of the segments the standard deviation of the speed (VG or VP) is lower, and the average of the speed (VG or VP) is higher than in the IS. In addition, for the ~ 82.6 % of the segments the STD of DG from IS to FS was reduced, the same applies for the ~ 81.15 % of the segments and the STD of DP. For the ~ 72.46 % of the segments the AVG of DG from IS to FS was reduced, the same applies for the ~ 62.31 % of the segments and the AVG of DP.
Due to the selected vehicles that in the FS were not generated, we have segments for which the AVG of DG of the FS is lower than the AVG of DG of the IS. We can say the same regarding the AVG of DP. Furthermore, for the same reason, we have segments for which the AVG of VG is higher in the FS than in the IS, and segments for which the AVG of VP is higher in the FS than in the IS. A lower STD of DG (or DP) in the FS than in the IS implies, in the segments were that is true, that the dg (or dp) between time periods is similar in the FS than in the IS. Furthermore, a lower STD of VG (or VP) in the FS than in the IS implies, in the segments were that is true, that the vg (or vp) between time periods is similar in the FS than in the IS. Furthermore, that a segment obtains a higher AVG of VG (or VP) in the FS than in the IS (some of the time periods present higher speed in the FS than in the IS) does not prevent the segment from having a lower STD of VG (or VP) in the FS than in the IS (the speed values of the time periods are close to its mean in the FS than in the IS). All said in the last two paragraphs is (quantifiable) evidence of the traffic conditions improvement in the FS with respect to the IS.
We found that the number of vehicles that the network can handle (slightly) changes with the OD table, and thus are related. The knowledge generated in this work is expected to be useful for planning strategies and policies to reduce travel demand and prevent bad traffic. The future work will be to analyze how the network geometry, traffic lights control, rules at intersections, drivers’ behaviors, the flow at entry points, the origin-destination table and routes (the last two change the vehicles distribution on the network links), modify the results in Table 3.

Supplementary Materials

The following supporting information can be downloaded at: https://www.mdpi.com/article/10.3390/su151310272/s1, Project files necessary to run simulations.

Author Contributions

Conceptualization, J.G.C.-G. and J.L.-S.; Data curation, J.G.C.-G.; Formal analysis, J.G.C.-G. and J.L.-S.; Funding acquisition, G.L.-M.; Investigation, J.G.C.-G. and J.L.-S.; Methodology, J.G.C.-G. and J.L.-S.; Project administration, J.G.C.-G. and G.L.-M.; Resources, J.G.C.-G.; Software, J.G.C.-G.; Supervision, J.G.C.-G. and G.L.-M.; Validation, J.G.C.-G. and J.L.-S.; Visualization, J.G.C.-G., G.L.-M. and F.P.-M.; Writing—original draft, J.G.C.-G., G.L.-M. and F.P.-M.; Writing—review & editing, J.G.C.-G., G.L.-M. and F.P.-M. All authors have read and agreed to the published version of the manuscript.

Funding

This research received no external funding.

Institutional Review Board Statement

Not applicable.

Informed Consent Statement

Not applicable.

Data Availability Statement

We upload the whole project (as Supplementary Materials), with which the simulations we did can be reproduced to obtain the same data as the presented in this study.

Conflicts of Interest

The authors declare no conflict of interest.

Appendix A

Table A1. Segments information.
Table A1. Segments information.
ID NumberLength (m)Number of LanesSCS
184.563Yes
283.33No
344.723Yes
4130.813No
533.063Yes
6223.533Yes
7144.792Yes
8703Yes
988.613Yes
1059.812Yes
1145.872Yes
1257.912Yes
13141.063Yes
1459.923Yes
1543.413Yes
1679.763Yes
17182.372Yes
1859.594Yes
19142.974Yes
2093.133Yes
21227.392Yes
22178.172Yes
2386.972No
2448.992Yes
2554.582Yes
26923No
27119.713Yes
28143.233Yes
2955.154Yes
3060.244Yes
3183.373No
3244.343Yes
33191.683Yes
3475.323Yes
35225.122Yes
36183.323Yes
3792.573Yes
38176.283Yes
39179.243Yes
40225.942Yes
4147.594Yes
4254.264Yes
4352.744Yes
4455.014Yes
4558.044Yes
4652.623Yes
4751.473Yes
4855.813Yes
49226.792Yes
50175.623Yes
51139.823Yes
52117.363Yes
5367.653Yes
5470.583Yes
55195.023Yes
56201.723Yes
5755.693Yes
58131.593Yes
5960.763Yes
6056.473Yes
6150.993Yes
6253.313Yes
6345.673Yes
6456.932No
6553.722Yes
6657.692No
67178.384No
68187.123Yes
69224.312Yes
Figure A1. Network links with ID.
Figure A1. Network links with ID.
Sustainability 15 10272 g0a1

Appendix B

We present in this appendix the relevant codes of our simulations. The code for generating destinations in Algorithm A1.
Algorithm A1: Destinations’ generator
  import random

  nt = int(3600/6)*12
  id_salida = [i for i in range(15)]
  pesos = [1 for i in range(15)]
  destinos = []

  for i in range(nt):
    s = random.choices(id_salida, weights = pesos, k = 1)
    destinos.append(s)
    pesos[s [0]] = 0

    if sum(pesos) == 0:
      pesos = [1 for i in range(15)]

  with open(‘destinos1.csv’,’w’,newline = ‘‘) as f:
    writer = csv.writer(f)
    writer.writerows(destinos)
At any simulation, vehicles are generated during 1 h. In the IS each 6 s a vehicle is generated at each entrance (being 12), therefore the total number of vehicles generated in the IS is nt = (3600/6) × 12 = 7200 veh. After running Algorithm A1, the list destinos contains 7200 destination identifiers, which is equal to nt (for one vehicle, one destination). The function random.choices() has three arguments. The list id_salida contains the numbers in the range [0, 14], each number is the identifier of a destination (being 15). The list pesos contains the probability (of occurrence) of each destination, therefore if all values in pesos are equal, the probability of each destination is the same. The value k = 1 indicates that one selection will be made from id_salida. Then the result of calling random.choices(id_salida,weights = pesos,k = 1) is a list containing k selections from id_salida selected in accordance with the probabilities in pesos, the unique element of the result list is added to destinos. When a destination identifier is selected, we set its probability to occur to zero, once all identifiers have been selected we reset pesos so again each destination has the same probability to occur.
In a simulation each generated vehicle has its respective destination (taken from destinos1.csv, which was written with destinos). In the IS, every 6 s a vehicle is generated from each entrance (in order), and each vehicle has a destination following the order in destinos. From Algorithm A1, it is understood that in the list destinos an identifier is not repeated until all identifiers appear once since we pursued to distribute the vehicles on the streets (through time) at equal quantities but with randomness involved. Furthermore, in the IS 7200/12 = 600 vehicles will be generated from each entry point and 7200/15 = 480 vehicles will arrive at each exit point (after that a vehicle is removed from the simulation). The codes to run a simulation are in Algorithms A2–A7. Algorithm A2 presents the input data of a simulation.
Algorithm A2: Input data
  red = sumolib.net.readNet(‘osm3.net.xml’)
  links = red.getEdges();
  vel_nor = 16.6666; v_b = (vel_nor/2)*1
  dec0 = 2.6;dec1 = 4.5;dec2 = 9;
  factor = 0.5;
  v0 = 10/3.6; v1 = (vel_nor/2)*factor
  t1 = (v1 − v0)/dec0; d1 = (v0 + ((v1-v0)/2))*t1
  t2 = (v1 − v0)/dec1; d2 = (v0 + ((v1 − v0)/2))*t2
  entradas = 12;tie_sim = 3600;intervalo = 6;periodo = 90*1;par_impar = −1
  nt = int(tie_sim/intervalo)*entradas
  lista_no=[“no”,“gneE4”]; l_3=[];

  for lista in l_2:
    a2 = (lista [1]-lista [2])
    a1 = (lista [0]-1) + 12
    l_3.append([a1, a2])

  lista_LaneNumber = [];lista_EdgeId = [];lista_EdgeLength = [];lista_usual = []
  lista_medicion1 = [];lista_vg = [];lista_medicion2 = [];lista_vp = [];
  densidad = [];DENSIDAD = [];densidad2 = [];DENSIDAD2 = []
  li_mi = [];eliminar = [];li_existe0 = [];li_existe1 = [];
  li_sa0 = [];li_sa1 = [];li_g0 = [];li_g1 = [];
  salida_DENSIDAD = [];salida_DENSIDAD2 = []; li_de = [];res = [];

  with open(‘destinos1.csv’,’r’,newline = ‘‘) as f:
    contenido = csv.reader(f)
    for renglon in contenido:
      li_de.append(int(renglon [0]))
      li_existe0.append(1)
      li_existe1.append(1)

  k = 0
  for e in links:

    if e.getID() not in lista_no:
      lista_EdgeId.append(e.getID())
      lista_EdgeLength.append(e.getLength())
      lista_LaneNumber.append(e.getLaneNumber())
      lista_medicion1.append([]); lista_vg.append([])
      lista_medicion2.append([]); lista_vp.append([])
      densidad.append([]); densidad2.append([])
      DENSIDAD.append([]); DENSIDAD2.append([])

      if e.getID() in l_1:
        lista_usual.append(lista_EdgeLength[k]/(vel_nor*.85));
      else:
        lista_usual.append(lista_EdgeLength[k]/(vel_nor*.90));
      k + =1;
To simplify, we omit in Algorithm A2 the following lists: origen, destino, negar, lista_LaneId, l_1, l_2. The list origen contains the entry segments’ names, the list destino contains the exit segments’ names, the list negar contains the names of the entry and exit segments and the name of each segment located before an exit segment. The list lista_LaneId contains the name of each lane of each segment. The list l_1 contains the names of the segments with traffic light. The list l_2 contains a list for each name in l_1, the content of each list is associated with the respective name in l_1, a list of l_2 contains three numbers (mentioned here as in the actual order): the starting time of the traffic light green phase, the end time of the yellow phase, and the duration of the yellow phase; these numbers are in the range (0, 90], since this range corresponds with the duration of a traffic light cycle. In list l_3 there is a list associated with each name in l_1. A list in l_3 contains the measurement range (the start and end of the range) of the respective name in l_1. In lista_EdgeId the names (different than the real names) of the segments and in lista_EdgeLength the respective length of each segment. The number of names in lista_EdgeId is 111, which are the segments of the street network. For the analysis we exclude the segments in negar, therefore we use sg = 69 segments. Algorithm A3 presents the code to perform and store measurements.
Algorithm A3: Function sim1(), part 1. Measurements
  def sim1():

    global li_ru,salir,eliminar;
    total = 0;salir = ‘‘;vehID = −1;step = 0;per1 = 0;con1 = 0;con3 = 0;
    li_ru = [];lista_Routes = [];lista_TravelTime = [];lista_count = [];
    sumoBinary = checkBinary(‘sumo’)
    traci.start([sumoBinary, “-c”, “configuracion1.sumocfg”, “--no-warnings”])

    for k in range(len(lista_EdgeId)):
      lista_medicion1[k] = [];lista_vg[k] = [];lista_medicion2[k] = [];lista_vp[k] = [];
      lista_count.append([0,0,0]);
      densidad[k] = [];DENSIDAD[k] = [];densidad2[k] = [];DENSIDAD2[k] = [];
      lista_TravelTime.append(lista_usual[k]);
      traci.edge.adaptTraveltime(lista_EdgeId[k],lista_TravelTime[k])

    for k in range(len(li_mi)):
      li_mi[k] = []

    while 0 == 0:

      if step > = tie_sim and len(traci.vehicle.getIDList()) == 0:
        print(‘tiempo’,step,’espacio’,espacio,’vehiculos’,total,’factor’,factor)
        break

      traci.simulationStep()
      step = step + 1
      espacio = math.ceil((step/3600) * 40)−1
      new_step = step-(90*espacio)

      k = 0;
      for edge in lista_EdgeId:

        speed_green = −1;speed_rva = −1;
        densidad[k].append(traci.edge.getLastStepVehicleNumber(edge))

        if traci.edge.getLastStepVehicleNumber(edge) > 0:
          sp = traci.edge.getLastStepMeanSpeed(edge)
          speed_rva = sp
          if edge in l_1:
            indice = l_1.index(edge)
            if l_3[indice][0] < = new_step < = l_3[indice][1]:
              speed_green = sp
          else:
            speed_green = sp
        else:
          if edge in l_1:
            speed_rva = vel_nor*.95
          else:
            speed_rva = vel_nor*1

        if speed_rva! = −1:
          lista_medicion1[k].append(speed_rva)

        if speed_green! = −1:
          lista_medicion2[k].append(speed_green)
          densidad2[k].append(traci.edge.getLastStepVehicleNumber(edge))

        k = k + 1
In a simulation the vehicles are generated for 1 h, after that when there are no vehicles circulating, the simulation ends. A simulation is refreshed every 1 s with traci.simulationStep (); with the Traffic Control Interface (TraCI) we have control of a simulation in real time. For registering a speed measurement we use traci.edge.getLastStepMeanSpeed (‘segment_name’), which returns the space mean speed (the vehicles’ average speed in m/s) at the last time step on a segment named ‘segment_name’. For registering a density measurement we use traci.edge.getLastStepVehicleNumber (‘segment_name’), which returns the number of vehicles at the last time step on the segment with the name ‘segment_name’.
The value assigned to speed_rva is a speed measurement if there are vehicles on the segment, if there are not then the value assigned is predefined: if the segment has traffic light speed_rva = vel_nor × 0.95 , if the segment has not speed_rva = vel_nor. A speed measurement is assigned to speed_green only if a segment has vehicles on it, additionally, if the segment has a traffic light only if the current time is within the measurement range. For the k segment and every 90 s, speed_rva values are added in lista_medicion1[k] and speed_green values (different than −1, which is the default value) in lista_medicion2[k]. Similarly, density measurements (the number of vehicles on a segment) corresponding in time with each speed_rva value are stored in densidad[k], and the density measurements corresponding with speed_green values are stored in densidad2[k]. Algorithm A4 presents the code for estimating the segments’ travel times.
Algorithm A4: Function sim1(), part 2. Estimation of segments’ travel times
    con1 = con1 + 1
    if con1 == periodo:

      if len(li_mi) < con3 + 1:
        li_mi.append([])

      k = 0
      for edge in lista_EdgeId:

        if len(lista_medicion2[k])! = 0:
          vp = sum(lista_medicion2[k])/len(lista_medicion2[k])
          DENSIDAD2[k].append((sum(densidad2[k])/len(densidad2[k]))/
          (lista_LaneNumber[k]*lista_EdgeLength[k]))
        else:
          DENSIDAD2[k].append(0)
          vp = vel_nor

        lista_vp[k].append(vp)

        if vp <= v_b and edge not in negar:
          li_mi[con3].append(edge)

        lista_vg[k].append(sum(lista_medicion1[k])/len(lista_medicion1[k]))
        DENSIDAD[k].append((sum(densidad[k])/len(densidad[k]))/
        (lista_LaneNumber[k]*lista_EdgeLength[k]))

        dif1 = dif2 = dif3 = inf;
        peso1 = peso2 = peso3 = 0;
        parte0 = parte1 = parte2 = parte3 = 0;

        parte0 = lista_TravelTime[k];
        lista_TravelTime[k] = lista_EdgeLength[k]/(lista_vg[k][−1])
        parte1 = lista_TravelTime[k];
        parte3 = lista_usual[k]

        if con3 >= 1:
          dif1 = abs(parte0-parte1)
          dif3 = abs(parte3-parte1)

        if con3 >= 2:
          vg_pro = sum(lista_vg[k][0:con3])/len(lista_vg[k][0:con3])
          dif2 = abs((lista_EdgeLength[k]/vg_pro)—parte1)

        min2 = min([dif1,dif2,dif3]);

        if min2! = inf:

          if (dif1 == min2):
            lista_count[k][0] = lista_count[k][0] + 1

          if (dif2 == min2):
            lista_count[k][1] = lista_count[k][1] + 1

          if (dif3 == min2):
            lista_count[k][2] = lista_count[k][2] + 1

        cuenta_t = lista_count[k][0] + lista_count[k][1] + lista_count[k][2]

        if cuenta_t! = 0:
          peso1 = lista_count[k][0]/cuenta_t
          peso2 = lista_count[k][1]/cuenta_t
          peso3 = lista_count[k][2]/cuenta_t

        vg_pro = sum(lista_vg[k])/len(lista_vg[k])
        parte2 = (lista_EdgeLength[k]/vg_pro)

        actualizar = (parte1*peso1) + (parte2*peso2) + (parte3*peso3)

        if actualizar! = 0:
          traci.edge.adaptTraveltime(edge, actualizar)
        else:
          traci.edge.adaptTraveltime(edge, lista_TravelTime[k])

        lista_medicion1[k] = [];lista_medicion2[k] = [];densidad[k] = [];
        densidad2[k] = [];
        k = k + 1

      con1 = 0;
      con3 = con3 + 1;
Each periodo = 90 s, the vg and vp of each segment are calculated, also we estimate the travel time of each segment with the procedure presented in Algorithm A4. The variable vp is the average of the content in lista_medicion2[k], if the condition vp < = v_b is True, then the k segment is considered a low-speed segment and is added to the list li_mi[con3], with con3 being the period index. The current vp value is added to lista_vp[k]. The variable vg, which is the average of the data in lista_medicion1[k], is added to lista_vg[k]. The travel time of the k segment is set with actualizer = (parte1*peso1) + (parte2*peso2) + (parte3*peso3). The variable parte1 = lista_EdgeLength[k]/vg is the travel time calculated with the current vg, parte2 is the travel time calculated with the average of vg values (from the first period to the last), and parte3 is a constant travel time. The weights (peso1, peso2 and peso3) are recalculated at each period incrementing the weight of the respective variable (parte1, parte2 or parte3) that is likely to be similar to the travel time (parte1) of the next period. Algorithm A5 presents the code to generate vehicles and routes.
Algorithm A5: Function sim1(), part 3. Generating vehicles and routes
    per1 = per1 + 1;
    if per1 == intervalo:
      per1 = 0;
      for i in range(entradas):

        if vehID + 1 >= nt:
          break

        vehID = vehID + 1
        ruta1 = traci.simulation.findRoute(origen[i], destino[li_de[vehID]],
        vType = ‘pasajero’, depart = step, routingMode = 0)

        ruta1 = list(ruta1.edges)

        if ruta1 in lista_Routes:
          routeID = lista_Routes.index(ruta1)
        else:
          lista_Routes.append(ruta1)
          routeID = lista_Routes.index(ruta1)
          traci.route.add(str(routeID), ruta1)

        if li_existe0[vehID] == 0:
          pass
        else:

          traci.vehicle.add(str(vehID), str(routeID), typeID = ‘pasajero’,
          depart = step, departLane = ‘random’, departPos = ‘base’,
          departSpeed = ‘8.3333’, arrivalLane = ‘current’, arrivalPos = ‘max’,
          arrivalSpeed = ‘current’)

          try:
            temporal = traci.vehicle.getMaxSpeed(str(vehID))
            total + =1
            li_ru.append(ruta1)
          except:
            pass
The destination of a vehicle is in the list li_de (the ID of a vehicle is used as the position index of its destination), the destinations were sorted in a way that a destination is not repeated until all (fifteen) destinations have been selected. The built-in SUMO function for generating a route is: traci.simulation.findRoute(origen, destino, vType = ‘pasajero’, depart = step, routingMode = 0), where origen and destino are the variables referencing the names of the entry and exit segments, respectively. The parameter Vtype is equal to ‘pasajero’, the parameters values of a vehicle with id = ‘pasajero’ have already been explained (in the vehicles’ parameters section). The variable depart is to establish the time at which the vehicle enters the network (step is the current time step). The variable routingMode is for selecting the routing mode, with 0 is selected the ROUTING_MODE_DEFAULT, which uses the loaded travel times through traci.edge.adaptTraveltime(‘segment_name’, actualizar) for finding a convenient (with the least travel time) route (with ID routeID). A vehicle is generated if li_existe0[vehID]! = 0, the vehicle name (or ID) is vehID (when used as a name it needs to be converted to a string since it is a number) which also works as an index. The vehicle is generated with the function traci.vehicle.add() which has several parameters: the vehicle vehID with route routeID with vehicle type ID ‘pasajero’ will depart at the current time step (step), departLane = ‘random’ is for selecting a random lane for the vehicle to be inserted, departPos = ‘base’ indicates that the vehicle will appear at the beginning of the edge, departSpeed = ‘8.3333’ indicates that the vehicle is tried to be inserted with a speed 8.33 m/s, arrivalLane = ‘current’ indicates that the vehicle will arrive at the final edge (the last edge of its route) by the lane in which will be traveling at that time, arrivalPos = ‘max’ indicates that the vehicle will drive to the end of the final edge, arrivalSpeed = ‘current’ indicates that the vehicle will not change its current speed when reaching its destination. Algorithm A6 presents the code for selecting vehicles that will not be generated in the next simulations.
Algorithm A6: Function sim1(), part 4. Selecting vehicles
    if par_impar%2 == 0:

      if espacio < len(eliminar):
        for segmento in eliminar[espacio]:
          if segmento in l_1:
            indice = l_1.index(segmento)

          if ((segmento in l_1 and l_3[indice][0]<=new_step<=
          l_3[indice][1]) or (segmento not in l_1)):

            lista_vehiculos = traci.edge.getLastStepVehicleIDs(segmento)
            for vehiculo in lista_vehiculos:

              if li_existe1[int(vehiculo)]! = 0:
                ubicacion = traci.vehicle.getLanePosition(vehiculo)
                longitud = (lista_EdgeLength
                [lista_EdgeId.index(segmento)])

                if ubicacion > d1 and ubicacion < (longitud-d2):
                  if traci.vehicle.getSpeed(vehiculo) < (v1):
                    li_existe1[int(vehiculo)] = 0

    if keyboard.is_pressed(‘|’):
      salir = ‘|’
      break

  traci.close()
If par_impar%2 == 0, we are in a SS. At the end of a simulation, in eliminar is assigned a copy of li_mi, thus in eliminar[espacio] we have the low-speed segments detected in espacio (the period index). If the current simulation time is in the range (0, 90], espacio = 0, if it is in the range (90, 180], espacio = 1, and so on. To proceed with the selection of vehicles, for the segments in eliminar[espacio] with traffic lights, the current time (new_step, which restarts every 90 s to be in line with the traffic lights’ cycle) should fall inside the measurement range, for the segments without traffic light no condition regarding the time applies. Then, if a vehicle is in a low-speed segment and considering the time condition if applies, if ubicacion > d1 and ubicacion < (longitud-d2), and if its current speed is less than v1 = (vel_nor/2)×factor, the vehicle is selected for not being generated in the following simulations, therefore we set li_existe1[vehID] = 0. The variable ubicacion is the vehicle position with respect to the segment and longitud is the segment’ length, d1 is the distance required by the vehicle to overcome v1 if it enters the segment at the low-speed v0 =   10   k m / h 2.77   m / s , and longitud-d2 is the distance required by the vehicle for reducing its speed from v1 to v0 (if the vehicle is leaving the segment at the low-speed v0). The area of the segment for which ubicacion > d1 and ubicacion < (longitud-d2) is called the segment’ selection area.
A simulation ends when all the generated vehicles (during 1 h) have left the network, and the connection with SUMO is finalized with the instruction traci.close(). Algorithm A7 presents the code to control simulations.
Algorithm A7: Control block
  while 0 == 0:
    sim1()

    if salir! = ‘‘:
      break

    if par_impar%2! = 0:
      res.append(li_existe0.count(0))

    if par_impar%2 == 0:
      res.append(li_existe1.count(0))

    li_existe0 = copy.deepcopy(li_existe1)
    eliminar = copy.deepcopy(li_mi)

    if par_impar%2! = 0:
      ok = True
      for k1 in range(len(eliminar)):
        if len(eliminar[k1]) == 0:
          pass
        else:
          ok = False; break

      if (ok == True):
        break

    if len(res) > =2 and res[−1] == res[−2] and par_impar%2 == 0:
      factor = factor + 0.05
      v1 = (vel_nor/2)*factor
      t1 = (v1 − v0)/dec0; d1 = (v0 + ((v1 − v0)/2))*t1
      t2 = (v1 − v0)/dec1; d2 = (v0 + ((v1 − v0)/2))*t2
      par_impar + =1

    par_impar + =1
In a SM we have that par_impar%2! = 0, at the end of the simulation, the number of vehicles not generated is li_existe0.count(0). In a SS we have that par_impar%2 == 0, at the end of the simulation, the number of selected vehicles (and the selected in previous simulations) is li_existe1.count(0). The instruction li_existe0 = copy.deepcopy(li_existe1) has the purpose to have in a SM the information of which were the selected vehicles, if li_existe0[k] == 0 the k vehicle is not generated. The instruction eliminar = copy.deepcopy(li_mi) has the purpose to have in a SS (in eliminar) which were the low-speed segments. We stop calling the function sim1() when each list in eliminar[] is empty, meaning that in the last SM were no detected low-speed segments at any period, if it is not empty sim1() will be called to run a SS. If the number of selected vehicles at the end of a SS is the same as in the previous simulation, i.e., no additional vehicles were selected, then with factor + = 0.05 we induce better chances for selecting additional vehicles in the next SS (skipping the SM) and we update v1, d1, and d2.

References

  1. Gakenheimer, R. Urban mobility in the developing world. Transp. Res. Part A-Policy Pract. 1999, 33, 671–689. [Google Scholar] [CrossRef]
  2. Jain, V.; Sharma, A.; Subramanian, L. Road traffic congestion in the developing world. In Proceedings of the 2nd ACM Symposium on Computing for Development, Atlanta, GA, USA, 11–12 March 2012. [Google Scholar]
  3. Arampatzis, G.; Kiranoudis, C.; Scaloubacas, P.; Assimacopoulos, D. A GIS-based decision support system for planning urban transportation policies. Eur. J. Oper. Res. 2004, 152, 465–475. [Google Scholar] [CrossRef]
  4. Salarvandian, F.; Dijst, M.; Helbich, M. Impact of traffic zones on mobility behavior in Tehran, Iran. J. Transp. Land Use 2017, 10, 965–982. [Google Scholar] [CrossRef] [Green Version]
  5. Gonzales, E.J.; Geroliminis, N.; Cassidy, M.J.; Daganzo, C.F. On the allocation of city space to multiple transport modes. Transp. Plan. Technol. 2010, 33, 643–656. [Google Scholar] [CrossRef]
  6. Daganzo, C.F. Urban gridlock: Macroscopic modeling and mitigation approaches. Transp. Res. Part B-Methodol. 2007, 41, 49–62. [Google Scholar] [CrossRef]
  7. Daganzo, C.F. Improving City Mobility through Gridlock Control: An Approach and Some Ideas; Berkeley Center of Excellence on Future Urban Transport, Working Paper; Institute of Transportation Studies: Berkeley, CA, USA, 2005. [Google Scholar]
  8. Keyvan-Ekbatani, M.; Kouvelas, A.; Papamichail, I.; Papageorgiou, M. Exploiting the fundamental diagram of urban networks for feedback-based gating. Transp. Res. Part B Methodol. 2012, 46, 1393–1403. [Google Scholar] [CrossRef]
  9. Ampountolas, K.; Zheng, N.; Geroliminis, N. Perimeter Flow Control of Bi-modal Urban Road Networks: A Robust Feedback Control Approach. In Proceedings of the 2014 European Control Conference (ECC), Strasbourg, France, 24–27 June 2014; pp. 2569–2574. [Google Scholar]
  10. Zhong, R.; Huang, Y.; Chen, C.; Lam, W.; Xu, D.; Sumalee, A. Boundary conditions and behavior of the macroscopic fundamental diagram based network traffic dynamics: A control systems perspective. Transp. Res. Part B Methodol. 2018, 111, 327–355. [Google Scholar] [CrossRef]
  11. Kouvelas, A.; Saeedmanesh, M.; Geroliminis, N. Enhancing model-based feedback perimeter control with data-driven online adaptive optimization. Transp. Res. Part B Methodol. 2017, 96, 26–45. [Google Scholar] [CrossRef] [Green Version]
  12. Loder, A.; Ambühl, L.; Menendez, M.; Axhausen, K.W. Understanding traffic capacity of urban networks. Sci. Rep. 2019, 9, 16283. [Google Scholar] [CrossRef] [Green Version]
  13. Akçelik, R. The relationship between capacity and driver behaviour. In Proceedings of the TRB National Roundabout Conference, Kansas, MO, USA, 18–21 May 2008. [Google Scholar]
  14. Daganzo, C.F.; Gayah, V.V.; Gonzales, E.J. Macroscopic relations of urban traffic variables: Bifurcations, multivaluedness and instability. Transp. Res. Part B Methodol. 2011, 45, 278–288. [Google Scholar] [CrossRef]
  15. Ge, Y.E.; Zhang, H.M.; Lam, W.H.K. Network Reserve Capacity under Influence of Traveler Information. J. Transp. Eng. 2003, 129, 262–270. [Google Scholar] [CrossRef]
  16. Joshi, M.; Vaidya, A.; Deshmukh, M. Sustainable Transport Solutions for the Concept of Smart City. In Sustainable Energy and Transportation: Technologies and Policy; Springer: Singapore, 2018; pp. 21–42. [Google Scholar]
  17. Meneguette, R.I.; Boukerche, A. Vehicular Clouds Leveraging Mobile Urban Computing Through Resource Discovery. IEEE Trans. Intell. Transp. Syst. 2020, 21, 2640–2647. [Google Scholar] [CrossRef]
  18. Murk; Malik, A.W.; Mahmood, I.; Ahmed, N.; Anwar, Z. Big Data in Motion: A Vehicle-Assisted Urban Computing Framework for Smart Cities. IEEE Access 2019, 7, 55951–55965. [Google Scholar] [CrossRef]
  19. Sérgio Manuel Serra da Cruz, R.J.M.C. Enabling Smart City Provenance-Based Applications to Improve Urban Mobility in Brazilian Cities. In Sustainable Transportation and Smart Logistics; Elsevier: Amsterdam, The Netherlands, 2019; pp. 439–466. [Google Scholar]
  20. Fernández-Ares, A.; Mora, A.M.; Arenas, M.G.; García-Sánchez, P.; Romero, G.; Rivas, V.; Castillo, P.A.; Merelo, J.J. Studying real traffic and mobility scenarios for a Smart City using a new monitoring and tracking system. Future Gener. Comput. Syst. 2017, 76, 163–179. [Google Scholar] [CrossRef]
  21. Ma, X.; Liu, C.; Wen, H.; Wang, Y.; Wu, Y.-J. Understanding commuting patterns using transit smart card data. J. Transp. Geogr. 2017, 58, 135–145. [Google Scholar] [CrossRef]
  22. Canitez, F. Transferring sustainable urban mobility policies: An institutional perspective. Transp. Policy 2020, 90, 1–12. [Google Scholar] [CrossRef]
  23. Hashem, I.A.T.; Usmani, R.S.A.; Almutairi, M.S.; Ibrahim, A.O.; Zakari, A.; Alotaibi, F.; Alhashmi, S.M.; Chiroma, H. Urban Computing for Sustainable Smart Cities: Recent Advances, Taxonomy, and Open Research Challenges. Sustainability 2023, 15, 3916. [Google Scholar] [CrossRef]
  24. Ogryzek, M.; Adamska-Kmieć, D.; Klimach, A. Sustainable Transport: An Efficient Transportation Network—Case Study. Sustainability 2020, 12, 8274. [Google Scholar] [CrossRef]
  25. Salanova, J.M.; Ayfantopoulou, G.; Magkos, E.; Mallidis, I.; Maleas, Z.; Narayanan, S.; Antoniou, C.; Tympakianaki, A.; Martin, I.; Fajardo-Calderin, J. Developing a Multilevel Decision Support Tool for Urban Mobility. Sustainability 2022, 14, 7764. [Google Scholar] [CrossRef]
  26. Cruz, C.O.; Sarmento, J.M. “Mobility as a Service” Platforms: A Critical Path towards Increasing the Sustainability of Transportation Systems. Sustainability 2020, 12, 6368. [Google Scholar] [CrossRef]
  27. Albalate, D.; Fageda, X. Congestion, Road Safety, and the Effectiveness of Public Policies in Urban Areas. Sustainability 2019, 11, 5092. [Google Scholar] [CrossRef] [Green Version]
  28. Georgakis, P.; Almohammad, A.; Bothos, E.; Magoutas, B.; Arnaoutaki, K.; Mentzas, G. Heuristic-Based Journey Planner for Mobility as a Service (MaaS). Sustainability 2020, 12, 10140. [Google Scholar] [CrossRef]
  29. Tomás, R.; Fernandes, P.; Macedo, J.; Coelho, M.C. Carpooling as an Immediate Strategy to Post-Lockdown Mobility: A Case Study in University Campuses. Sustainability 2021, 13, 5512. [Google Scholar] [CrossRef]
  30. Ayaragarnchanakul, E.; Creutzig, F.; Javaid, A.; Puttanapong, N. Choosing a Mode in Bangkok: Room for Shared Mobility? Sustainability 2022, 14, 9127. [Google Scholar] [CrossRef]
  31. Wang, X.; Shao, C.; Yin, C.; Zhuge, C.; Li, W. Application of Bayesian Multilevel Models Using Small and Medium Size City in China: The Case of Changchun. Sustainability 2018, 10, 484. [Google Scholar] [CrossRef] [Green Version]
  32. Pucher, J.; Korattyswaropam, N.; Mittal, N.; Ittyerah, N. Urban transport crisis in India. Transp. Policy 2005, 12, 185–198. [Google Scholar] [CrossRef]
  33. Rao, A.M.; Rao, K.R. Measuring urban traffic congestion—A review. Int. J. Traffic Transp. Eng. 2012, 2, 286–305. [Google Scholar]
  34. Erhardt, G.D.; Roy, S.; Cooper, D.; Sana, B.; Chen, M.; Castiglione, J. Do transportation network companies decrease or increase congestion? Sci. Adv. 2019, 5, 11. [Google Scholar] [CrossRef] [Green Version]
  35. Kim, J.; Wang, G. Diagnosis and Prediction of Traffic Congestion on Urban Road Networks Using Bayesian Networks. Transp. Res. Rec. J. Transp. Res. Board 2016, 2595, 108–118. [Google Scholar] [CrossRef] [Green Version]
  36. Kii, M.; Goda, Y.; Vichiensan, V.; Miyazaki, H.; Moeckel, R. Assessment of Spatiotemporal Peak Shift of Intra-Urban Transportation Taking a Case in Bangkok, Thailand. Sustainability 2021, 13, 6777. [Google Scholar] [CrossRef]
  37. Lozano, A.; Granados, F.; Antun, J.P. Estimation of Vehicle Flows and Emissions for Various Scenarios of Street Network Modifications in Mexico City. Am. J. Environ. Sci. 2008, 4, 198–203. [Google Scholar] [CrossRef] [Green Version]
  38. Farda, M.; Balijepalli, C. Exploring the effectiveness of demand management policy in reducing traffic congestion and environmental pollution: Car-free day and odd-even plate measures for Bandung city in Indonesia. Case Stud. Transp. Policy 2018, 6, 577–590. [Google Scholar] [CrossRef]
  39. Mahendra, A. Vehicle restrictions in four Latin American cities: Is congestion pricing possible? Transp. Rev. 2008, 28, 105–133. [Google Scholar] [CrossRef]
  40. Geroliminis, N.; Daganzo, C.F. Existence of urban-scale macroscopic fundamental diagrams: Some experimental findings. Transp. Res. Part B Methodol. 2008, 42, 759–770. [Google Scholar] [CrossRef] [Green Version]
  41. Gayah, V.V.; Daganzo, C.F. Clockwise hysteresis loops in the Macroscopic Fundamental Diagram: An effect of network instability. Transp. Res. Part B Methodol. 2011, 45, 643–655. [Google Scholar] [CrossRef]
  42. Daganzo, C.F.; Geroliminis, N. An analytical approximation for the macroscopic fundamental diagram of urban traffic. Transp. Res. Part B Methodol. 2008, 42, 771–781. [Google Scholar] [CrossRef]
  43. Buisson, C.; Ladier, C. Exploring the Impact of Homogeneity of Traffic Measurements on the Existence of Macroscopic Fundamental Diagrams. Transp. Res. Rec. J. Transp. Res. Board 2009, 2124, 127–136. [Google Scholar] [CrossRef]
  44. Wong, W.; Wong, S.C.; Liu, H.X. Network topological effects on the macroscopic fundamental Diagram. Transp. B Transp. Dyn. 2021, 9, 376–398. [Google Scholar] [CrossRef]
  45. Simulation of Urban MObility. Available online: https://www.eclipse.org/sumo/ (accessed on 18 February 2022).
  46. Vehicle Type Parameter Defaults. Available online: https://sumo.dlr.de/docs/Vehicle_Type_Parameter_Defaults.html (accessed on 3 May 2022).
Figure 1. Street network with OpenStreetMap.
Figure 1. Street network with OpenStreetMap.
Sustainability 15 10272 g001
Figure 2. Street network with NETEDIT.
Figure 2. Street network with NETEDIT.
Sustainability 15 10272 g002
Figure 3. A V G   o f   D G i F S   v s .   A V G   o f   V G i F S .
Figure 3. A V G   o f   D G i F S   v s .   A V G   o f   V G i F S .
Sustainability 15 10272 g003
Figure 4. A V G   o f   D P i F S   v s .   A V G   o f   V P i F S .
Figure 4. A V G   o f   D P i F S   v s .   A V G   o f   V P i F S .
Sustainability 15 10272 g004
Table 1. Summary of results.
Table 1. Summary of results.
Vectors Compared %   of   Values     0 %   of   Values   <   0 Positive Values AVGNegative Values AVGp_Change (%)n_Change (%)
A V G   o f   V G i F S A V G   o f   V G i I S ~ 66.66% ~ 33.33%0.2864 −0.1965 74.4601%25.5399%
A V G   o f   V P i F S A V G   o f   V P i I S 60.8695%39.1304%0.2757 −0.0691 86.1301%13.8699%
A V G   o f   D G i F S A V G   o f   D G i I S 27.5362%72.4638%4.0518 × 10−4 −9.7645 × 10−4 13.6204%86.3796%
A V G   o f   D P i F S A V G   o f   D P i I S 37.6812%62.3188%2.1490 × 10−4 −8.1261 × 10−4 13.7858%86.2142%
S T D   o f   D G i F S S T D   o f   D G i I S 17.3913%82.6087%1.2161 × 10−4 −8.4806 × 10−4 2.9305%97.0695%
S T D   o f   D P i F S S T D   o f   D P i I S 18.8406%81.1594%1.7210 × 10−4 −6.5564 × 10−4 5.7435%94.2565%
S T D   o f   V G i F S S T D   o f   V G i I S 10.1449%89.8551%0.0678 −0.2133 3.4636%96.5364%
S T D   o f   V P i F S S T D   o f   V P i I S 26.087%73.913%0.0915 −0.1991 13.9623%86.0377%
Table 2. The correlation value of different cases.
Table 2. The correlation value of different cases.
Correlation betweenr
[ A V G   o f   V G F S A V G   o f   V G I S ]   and   [ A V G   o f   D G F S A V G   o f   D G I S ] −0.7559
[ A V G   o f   V G F S A V G   o f   V G I S ]   and   [ S T D   o f   V G F S S T D   o f   V G I S ] −0.3195
[ A V G   o f   V G F S A V G   o f   V G I S ]   and   [ S T D   o f   D G F S S T D   o f   D G I S ] −0.3777
[ A V G   o f   V P F S A V G   o f   V P I S ]   and   [ A V G   o f   D P F S A V G   o f   D P I S ] −0.9445
[ A V G   o f   V P F S A V G   o f   V P I S ]   and   [ S T D   o f   V P F S S T D   o f   V P I S ] −0.6123
[ A V G   o f   V P F S A V G   o f   V P I S ]   and   [ S T D   o f   D P F S S T D   o f   D P I S ] −0.7009
[ A V G   o f   D G F S A V G   o f   D G I S ]   and   [ S T D   o f   V G F S S T D   o f   V G I S ] 0.4903
[ A V G   o f   D G F S A V G   o f   D G I S ]   and   [ S T D   o f   D G F S S T D   o f   D G I S ] 0.7066
[ A V G   o f   D P F S A V G   o f   D P I S ]   and   [ S T D   o f   V P F S S T D   o f   V P I S ] 0.5691
[ A V G   o f   D P F S A V G   o f   D P I S ]   and   [ S T D   o f   D P F S S T D   o f   D P I S ] 0.7433
[ S T D   o f   V G F S S T D   o f   V G I S ]   and   [ S T D   o f   D G F S S T D   o f   D G I S ] 0.6243
[ S T D   o f   V P F S S T D   o f   V P I S ]   and   [ S T D   o f   D P F S S T D   o f   D P I S ] 0.8125
Table 3. Experiments results.
Table 3. Experiments results.
ID of the OD TableNumber of Vehicles Prevented from CirculatingNumber of Vehicles That the Street Network Supports in 1 hFactor Value at the Final Simulation
129769030.5
234268580.5
328969110.5
427669240.5
544067600.55
643167690.5
744067600.5
834768530.5
932868720.85
1049067100.5
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Carrillo-González, J.G.; López-Maldonado, G.; Lopez-Sauceda, J.; Perez-Martinez, F. Method for Selecting the Vehicles That Can Enter a Street Network to Maintain the Speed on Links above a Speed Threshold. Sustainability 2023, 15, 10272. https://doi.org/10.3390/su151310272

AMA Style

Carrillo-González JG, López-Maldonado G, Lopez-Sauceda J, Perez-Martinez F. Method for Selecting the Vehicles That Can Enter a Street Network to Maintain the Speed on Links above a Speed Threshold. Sustainability. 2023; 15(13):10272. https://doi.org/10.3390/su151310272

Chicago/Turabian Style

Carrillo-González, José Gerardo, Guillermo López-Maldonado, Juan Lopez-Sauceda, and Francisco Perez-Martinez. 2023. "Method for Selecting the Vehicles That Can Enter a Street Network to Maintain the Speed on Links above a Speed Threshold" Sustainability 15, no. 13: 10272. https://doi.org/10.3390/su151310272

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop