Submitted:
05 February 2026
Posted:
06 February 2026
You are already at the latest version
Abstract
Keywords:
1. Introduction
2. Related Work
2.1. Optimization Methods for Bus Stop Location
2.2. Heuristic Algorithm Frameworks for Bus Route Optimization
2.3. Multi-Objective Algorithms in Transit Optimization
2.4. Empirical Case Studies
3. Study area and Datasets
3.1. Study Area

3.2. Dataset
4. Methodology

4.1. Candidate Selection

4.2. Indicator Aggregation
4.3. Network Generation
Generate Bus Routes
- 1.
- Moderate Distance Between Consecutive Stops: Adjacent candidate stops should maintain an optimal spacing interval. According to the Chinese National Standard GB 55011-2021 "Code for Urban Road Engineering Construction Projects", the recommended spacing between candidate stops in urban areas typically ranges from 300 to 800 meters. This range strikes a balance between pedestrian accessibility and operational efficiency. Excessively short spacing increases stop density, which in turn reduces traffic flow speeds and raises accident risks. Conversely, excessively large gaps reduce service coverage, inconvenience residents, and lower ridership. Specifically, the inter-stop distances must satisfy the following conditions:
- 2.
- Progression Toward the Destination: To ensure logical and efficient route planning, the bus route must maintain consistent forward progression towards the final destination. To prevent the final path from significantly deviating from the target direction, the route should not include unnecessary detours, sharp turns, or looping segments. To enforce this, the forward direction of the bus route should not deviate excessively. As illustrated in the following diagram, assume a route is planned from O to D. The current stop is O, and the bus route's forward direction should align with the positive direction of the Xₙ axis. The next selected stop, A, must satisfy two conditions: (1) it must lie on the same side of the Yₙ axis as O, and (2) the straight-line distance from intermediate stop A to stop D must be shorter than the straight-line distance from stop O to stop D. This restriction prevents the bus from making sudden directional changes or backtracking, which would otherwise increase travel time, reduce operational efficiency, and negatively impact passenger experience. Therefore, the schematic diagram is shown below:

- 3.
-
Increasing Distance from the Origin: To maintain logical and efficient route progression, the position of each new bus stop must be farther from the starting point (Stop 1) than the previous one along the actual route path. This ensures steady forward movement from the origin, preventing inefficient routing patterns such as circular paths, backtracking, or zigzag segments that would create unnecessary travel distance and time.By enforcing this condition, the route guarantees cumulative progress in one primary direction while still allowing necessary turns within reasonable limits. This principle helps avoid redundant path segments, ensures a better passenger experience by providing clearer trip progression, and aids in preventing unnecessary congestion by minimizing route deviations. Therefore, the distance between stations should satisfy the following conditions:

- 4.
- Decreasing Distance to the Destination: To ensure efficient and passenger-friendly route planning, the location of each new bus stop must be closer to the final destination (D) than the previous stop when measured in straight-line distance. This requirement works in tandem with the forward progression rule (moving away from the origin). This condition ensures steady progress towards the destination while allowing necessary turns and adjustments to serve key locations. The combination of moving away from the origin while progressing towards the destination creates optimal route geometry that meets both operational requirements and passenger needs. Therefore, the distance between stations should satisfy the following conditions:

- 5.
- Smooth Route with Minimal Detours: The bus route should maintain smooth transitions between stops, avoiding sharp turns or unnecessary detours. This is achieved by selecting each subsequent stop () as the nearest feasible location to the current stop (), while still adhering to directional progression requirements. By minimizing the distance between consecutive stops and prioritizing the closest valid candidate point, the route naturally forms gentler curves. This approach not only improves passenger comfort but also reduces fuel consumption and travel time. The smooth geometry enhances operational efficiency, as drivers can maintain more consistent speeds without frequent braking or acceleration caused by sudden directional changes. Therefore, the route must satisfy the following geometric conditions to maintain optimal smoothness:
- 6.
- 7.
- As shown in the figure below, the Z-shaped path will be pruned by this constraint. For the path from point O to E, since G is more distant than C, the path segments O-G and G-E are pruned.

4.4. Problem Modeling
4.5. Algorithm Analysis

| Algorithm 1: Pathfinding with DFS and Constraints |
| Input:Excel file with stations, MinDistance, MaxDistance, max_paths |
| Output:Found paths from 'O' to 'D' (up to max_paths) |
| 1: function read_stations_from_excel(xlsx_file_path) |
| 2: df ← read Excel file |
| 3: stations ← {row['ID']: (row['X'], row['Y']) for each row in df} |
| 4: return stations |
| 5: end function |
| 6: function dist(p1, p2) |
| 7: return sqrt((p1[0] − p2[0])² + (p1[1] − p2[1])²) |
| 8: end function |
| 9: function can_move(curr_id, next_id, stations, MinDist, MaxDist) |
| 10: d ← dist(stations[curr_id], stations[next_id]) |
| 11: if d < MinDist or d > MaxDist then return false |
| 12: if dist(stations['O'], stations[next_id]) ≤ dist(stations['O'], stations[curr_id]) then return false |
| 13: if dist(stations['D'], stations[next_id]) ≥ dist(stations['D'], stations[curr_id]) then return false |
| 14: return true |
| 15: end function |
| 16: function smooth_constraint(next_id, path, stations) |
| 17: distances ← [(dist(stations[next_id], stations[pid]), pid) for pid in path] |
| 18: closest_id ← min(distances)[1] |
| 19: return closest_id == path[-1] |
| 20: end function |
| 21: function valid_next_station(path, candidate, stations, MinDist, MaxDist) |
| 22: if candidate in path or not can_move(path[-1], candidate, stations, MinDist, MaxDist) then return false |
| 23: if not smooth_constraint(candidate, path, stations) then return false |
| 24: return true |
| 25: end function |
| 26: function dfs_all_paths(current_path, stations, MinDist, MaxDist, max_paths) |
| 27: if current_path[-1] == 'D' then |
| 28: add current_path to found_paths |
| 29: if length(found_paths) ≥ max_paths then return true |
| 30: return false |
| 31: end if |
| 32: for each next_id in stations do |
| 33: if next_id ≠ 'O' and valid_next_station(current_path, next_id, stations, MinDist, MaxDist) then |
| 34: append next_id to current_path |
| 35: if dfs_all_paths(current_path, stations, MinDist, MaxDist, max_paths) then return true |
| 36: pop from current_path |
| 37: end if |
| 38: end for |
| 39: return false |
| 40: end function |
| 41: function write_routes_to_csv(routes, csv_file_path) |
| 42: open csv_file_path for writing |
| 43: write header to CSV |
| 44: for each route in routes do |
| 45: write route index and path to CSV |
| 46: end for |
| 47: end function |
| 48: if __name__ == "__main__" then |
| 49: stations ← read_stations_from_excel('path_to_excel_file') |
| 50: MinDist ← 300, MaxDist ← 800, max_paths ← 30 |
| 51: start_path ← ['O'] |
| 52: dfs_all_paths(start_path, stations, MinDist, MaxDist, max_paths) |
| 53: write_routes_to_csv(found_paths, 'output_file_path') |
| 54: print "Found ", len(found_paths), " paths" |
| 55: end if |
| Algorithm 2: ParetoPathOptimization |
| Input:Excel file with station data, CSV file with found paths |
| Output:Pareto Front solutions (non-dominated paths) |
| 1: function read_station_info(xlsx_file) |
| 2: df ← read Excel file |
| 3: coord_map, pop_map, poi_map ← {}, {}, {} |
| 4: for each row in df do |
| 5: coord_map[row['ID']] ← (row['X'], row['Y']) |
| 6: pop_map[row['ID']] ← row['pop'] |
| 7: poi_map[row['ID']] ← row['poi'] |
| 8: end for |
| 9: return coord_map, pop_map, poi_map |
| 10: end function |
| 11: function dist(p1, p2) |
| 12: return sqrt((p1[0] − p2[0])² + (p1[1] − p2[1])²) |
| 13: end function |
| 14: function compute_route_metrics(route_str, coord_map, pop_map, poi_map) |
| 15: stations_in_route ← split(route_str, '->') |
| 16: total_pop ← sum(pop_map[st] for st in stations_in_route) |
| 17: total_poi ← sum(poi_map[st] for st in stations_in_route) |
| 18: total_dist ← 0 |
| 19: for i ← 0 to len(stations_in_route) - 2 do |
| 20: total_dist += dist(coord_map[stations_in_route[i]], coord_map[stations_in_route[i+1]]) |
| 21: end for |
| 22: return total_pop, total_poi, total_dist |
| 23: end function |
| 24: function dominates(sol_a, sol_b) |
| 25: f1a, f2a, f3a ← -sol_a['Pop'], -sol_a['POI'], sol_a['Dist'] |
| 26: f1b, f2b, f3b ← -sol_b['Pop'], -sol_b['POI'], sol_b['Dist'] |
| 27: return (f1a ≤ f1b) and (f2a ≤ f2b) and (f3a ≤ f3b) and (f1a < f1b or f2a < f2b or f3a < f3b) |
| 28: end function |
| 29: function non_dominated_sort(solutions) |
| 30: pareto_front ← [] |
| 31: for each sol in solutions do |
| 32: dominated ← false |
| 33: for each other in solutions do |
| 34: if dominates(other, sol) then |
| 35: dominated ← true |
| 36: break |
| 37: end if |
| 38: end for |
| 39: if not dominated then |
| 40: pareto_front.append(sol) |
| 41: end if |
| 42: end for |
| 43: return pareto_front |
| 44: end function |
| 45: function write_routes_to_csv(routes, csv_file_path) |
| 46: open csv_file_path for writing |
| 47: write header to CSV |
| 48: for each route in routes do |
| 49: write route index and path to CSV |
| 50: end for |
| 51: end function |
| 52: dfs_all_paths(start_path, stations, MinDist, MaxDist, max_paths) |
| 53: write_routes_to_csv(found_paths, 'output_file_path') |
| 54: print "Found ", len(found_paths), " paths" |
| 55: end if |
| 56: for each row in df_paths do |
| 57: total_pop, total_poi, total_dist ← compute_route_metrics(row['Route'], coord_map, pop_map, poi_map) |
| 58: solutions.append({'PathIndex': row['PathIndex'], 'Route': row['Route'], 'Pop': total_pop, 'POI': total_poi, 'Dist': total_dist}) |
| 59: end for |
| 60: pareto_front ← non_dominated_sort(solutions) |
| 61: print "Pareto Front:", pareto_front |
| 62: write_routes_to_csv(pareto_front, 'output_csv_path') |
| 63: end if |
5. Result
5.1. Spatial Distribution Characteristics of Candidate Stop Locations
5.1.1. Spatial Distribution

5.1.2. Spatial Autocorrelation

5.1.3. Distribution Characteristics Summary
5.2. Algorithm Effectiveness and Comparative Analysis
5.2.1. Data-Driven Analysis of Algorithm Outputs


5.2.2. Validation of Algorithm Effectiveness
| Number | POP | Percentage Change of POP | POI | Percentage Change of POI | DIST | Percentage Change of DIST |
|---|---|---|---|---|---|---|
| Origin | 1.9 | 0% | 7.6 | 0% | 15145.6 | 0% |
| 51 | 1.8 | -5.26% | 7.4 | -2.63% | 12380.9 | 18.26% |
| 62 | 1.8 | -5.26% | 7.8 | 2.63% | 12932.1 | 14.61% |
| 73 | 2.0 | 5.26% | 8.5 | 11.84% | 13555.2 | 10.50% |
| 74 | 2.0 | 5.26% | 8.3 | 9.21% | 13388.2 | 11.59% |
| 75 | 2.0 | 5.26% | 8.3 | 9.21% | 13485.3 | 11.09% |
| 76 | 2.0 | 5.26% | 8.5 | 11.84% | 13745.7 | 9.24% |
| 78 | 2.0 | 5.26% | 8.2 | 7.89% | 13157.1 | 13.12% |
| 79 | 1.9 | 0.00% | 8.1 | 6.58% | 12990.1 | 14.10% |
| 80 | 2.0 | 5.26% | 8.3 | 9.21% | 13336.1 | 11.94% |
| 83 | 2.0 | 5.26% | 8.3 | 9.21% | 13526.6 | 10.68% |
| 85 | 1.9 | 0.00% | 7.7 | 1.32% | 12425.1 | 17.96% |
| 90 | 2.1 | 10.53% | 8.7 | 14.47% | 14047.6 | 7.25% |
| 91 | 2.0 | 5.26% | 8.6 | 13.16% | 13880.6 | 8.35% |
| 92 | 2.0 | 5.26% | 8.6 | 13.16% | 13977.7 | 7.70% |
| 93 | 2.1 | 10.53% | 8.8 | 15.79% | 14238.1 | 5.99% |
| 95 | 2.0 | 5.26% | 8.5 | 11.84% | 13649.5 | 9.87% |
| 96 | 2.0 | 5.26% | 8.3 | 9.21% | 13482.4 | 11.11% |
| 97 | 2.0 | 5.26% | 8.6 | 13.16% | 13828.4 | 8.69% |
| 100 | 2.0 | 5.26% | 8.6 | 13.16% | 14018.9 | 7.44% |
6. Conclusion and Discussion
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Acknowledgments
Conflicts of Interest
References
- J. Anable, “‘complacent car addicts’ or ‘aspiring environmentalists’? Identifying travel behaviour segments using attitude theory,” Transp. Policy, vol. 12, no. 1, pp. 65–78, Jan. 2005. [CrossRef]
- M. A. Kashem, M. Shamsuddoha, and T. Nasir, “Digitalization in sustainable transportation operations: a systematic review of AI, IoT, and blockchain applications for future mobility,” Future Transp., vol. 5, no. 4, pp. 157–189, Nov. 2025. [CrossRef]
- T. Monahan and C. G. Lamb, “Transit’s downward spiral: assessing the social-justice implications of ride-hailing platforms and COVID-19 for public transportation in the US,” Cities, vol. 120, p. 103438, Jan. 2022. [CrossRef]
- L. dell’Olio, A. Ibeas, and P. Cecín, “Modelling user perception of bus transit quality,” Transp. Policy, vol. 17, no. 6, pp. 388–397, Nov. 2010. [CrossRef]
- S. Stradling, M. Carreno, T. Rye, and A. Noble, “Passenger perceptions and the ideal urban bus journey experience,” Transp. Policy, vol. 14, no. 4, pp. 283–292, Jul. 2007. [CrossRef]
- Y. Wei, N. Jiang, Z. Li, D. Zheng, M. Chen, and M. Zhang, “An improved ant colony algorithm for urban bus network optimization based on existing bus routes,” ISPRS Int. J. Geo-Inf., vol. 11, no. 5, p. 317, May 2022. [CrossRef]
- Z. Ahern, A. Paz, and P. Corry, “Approximate multi-objective optimization for integrated bus route design and service frequency setting,” Transp. Res. Part B Methodol., vol. 155, pp. 1–25, Jan. 2022. [CrossRef]
- Y. He, Y. Xiao, J. Chen, and D. Wang, “An improved multi-objective method for the selection of driverless taxi site locations,” Int. J. Transp. Sci. Technol., p. S204604302400128X, Oct. 2024. [CrossRef]
- A. Gupta, G. R. Bivina, and M. Parida, “Prioritising pedestrian’s needs around transit stations through walkability assessment: a walk audit tool approach,” Transp. Res. Procedia, vol. 82, pp. 1205–1228, 2025. [CrossRef]
- A. Sirikijpanichkul, S. Winyoopadit, and A. Jenpanitsub, “A multi-actor multi-criteria transit system selection model: a case study of Bangkok feeder system,” Transp. Res. Procedia, vol. 25, pp. 3736–3755, 2017. [CrossRef]
- M. H. Baaj and H. S. Mahmassani, “Hybrid route generation heuristic algorithm for the design of transit networks,” Transp. Res. Part C Emerg. Technol., vol. 3, no. 1, pp. 31–50, Feb. 1995. [CrossRef]
- T. Vlachopanagiotis, K. Grizos, G. Georgiadis, and I. Politis, “Public transportation network design and frequency setting: pareto optimality through alternating-objective genetic algorithms,” Future Transp., vol. 1, no. 2, pp. 248–267, Aug. 2021. [CrossRef]
- G. Hüsselmann, J. H. Van Vuuren, and S. J. Andersen, “An improved solution methodology for the urban transit routing problem,” Comput. Oper. Res., vol. 163, p. 106481, Mar. 2024. [CrossRef]
- Z. Drezner and G. O. Wesolowsky, “Network design: selection and design of links and facility location,” Transp. Res. Part Policy Pract., vol. 37, no. 3, pp. 241–256, Mar. 2003. [CrossRef]
- P. Chakroborty and T. Wivedi, “Optimal route network design for transit systems using genetic algorithms,” Eng. Optim., vol. 34, no. 1, pp. 83–100, Jan. 2002. [CrossRef]
- F. A. Kidwai and K. Deb, “A genetic algorithm based bus scheduling model for transit network,” Proc. East. Asia Soc. Transp. Stud., vol. 5, 2005.
- K. Huang, L. Xu, Y. Chen, Q. Cheng, and K. An, “Customized bus route optimization with the real-time data,” J. Adv. Transp., vol. 2020, pp. 1–9, Aug. 2020. [CrossRef]
- S. Wang, Z. Zuo, and Y. Liu, “Study on location of bus stop in subway service area based on residents’ travel accessibility,” Sustainability, vol. 15, no. 5, p. 4517, Mar. 2023. [CrossRef]
- S. Ji-yang, H. Jian-ling, C. Yan-yan, W. Pan-yi, and J. Jian-lin, “Flexible bus route optimization for multitarget stations,” Math. Probl. Eng., vol. 2020, pp. 1–8, Mar. 2020. [CrossRef]
- Y. Tu et al., “Uncovering the nature of urban land use composition using multi-source open big data with ensemble learning,” Remote Sens., vol. 13, no. 21, Art. no. 21, Oct. 2021. [CrossRef]
- M. Wei, C. Yang, and T. Liu, “An integrated multi-objective optimization for dynamic airport shuttle bus location, route design and departure frequency setting problem,” Int. J. Environ. Res. Public. Health, vol. 19, no. 21, p. 14469, Nov. 2022. [CrossRef]
- Z. Zhang, X. Cheng, Z. Xing, and X. Gui, “Pareto multi-objective optimization of metro train energy-saving operation using improved NSGA-II algorithms,” Chaos Solitons Fractals, vol. 176, p. 114183, Nov. 2023. [CrossRef]
- H. T. M. Nguyen, A. H. F. Chow, and C. Ying, “Pareto routing and scheduling of dynamic urban rail transit services with multi-objective cross entropy method,” Transp. Res. Part E Logist. Transp. Rev., vol. 156, p. 102544, Dec. 2021. [CrossRef]
- M. Liang, M. Xu, and S. Wang, “A novel multi-objective evolutionary algorithm for transit network design and frequency-setting problem considering passengers’ choice behaviors under station congestion,” Transp. Res. Part B Methodol., vol. 197, p. 103238, Jul. 2025. [CrossRef]
- M. Owais and M. K. Osman, “Complete hierarchical multi-objective genetic algorithm for transit network design problem,” Expert Syst. Appl., vol. 114, pp. 143–154, Dec. 2018. [CrossRef]
- Y. Hadas and O. E. Nahum, “Urban bus network of priority lanes: a combined multi-objective, multi-criteria and group decision-making approach,” Transp. Policy, vol. 52, pp. 186–196, Nov. 2016. [CrossRef]
- C. Iliopoulou and M. A. Makridis, “Critical multi-link disruption identification for public transport networks: a multi-objective optimization framework,” Phys. Stat. Mech. Its Appl., vol. 626, p. 129100, Sep. 2023. [CrossRef]
- X. Zhou, H. Guo, B. Li, and X. Zhao, “Transit dynamic operation optimization using combination of stop-skipping strategy and local route optimization,” Appl. Sci., vol. 14, no. 17, p. 7783, Sep. 2024. [CrossRef]
- K. Sriprateep et al., “Multi-objective optimization of resilient, sustainable, and safe urban bus routes for tourism promotion using a hybrid reinforcement learning algorithm,” Mathematics, vol. 12, no. 14, p. 2283, Jul. 2024. [CrossRef]
- R. Balcombe et al., “The demand for public transport: a practical guide”.
- F. Cevallos and F. Zhao, “Minimizing transfer times in public transit network with genetic algorithm”.
- A. T. Murray, “A coverage model for improving public transit system accessibility and expanding access,” Ann. Oper. Res., vol. 123, no. 1, Art. no. 1, Oct. 2003. [CrossRef]
- F. Zhao and I. Ubaka, “Transit network optimization – minimizing transfers and optimizing route directness,” J. Public Transp., vol. 7, no. 1, pp. 63–82, Jan. 2004. [CrossRef]
- J. Chen, S. Wang, Z. Liu, and X. Chen, “Network-level optimization of bus stop placement in urban areas,” KSCE J. Civ. Eng., vol. 22, no. 4, pp. 1446–1453, Apr. 2018. [CrossRef]
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. |
© 2026 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).