Sự xuất hiện của Farebox, một giải pháp định tuyến giao thông công cộng mới được viết bằng ngôn ngữ Rust, đã thu hút sự quan tâm đáng kể từ cộng đồng công nghệ giao thông, đặc biệt là với cách tiếp cận sáng tạo trong việc tối ưu hóa bộ nhớ cho quy hoạch tuyến đường.
Đột phá về hiệu suất bộ nhớ
Cách triển khai thuật toán RAPTOR (Round-Based Public Transit Optimized Router) của Farebox đã đạt được hiệu suất bộ nhớ đáng chú ý, với báo cáo cho thấy lịch trình của khu vực Puget Sound chỉ chiếm khoảng 40 MiB trên ổ đĩa trong khi tiến trình máy chủ chỉ sử dụng khoảng 100k RAM. Hiệu suất ấn tượng này đạt được thông qua kỹ thuật zero-copy và memory mapping, khiến nó có tiềm năng ứng dụng trên thiết bị di động - một khả năng khác biệt so với các giải pháp tiêu tốn nhiều tài nguyên hơn như OpenTripPlanner.
Tôi đã từng nghĩ về việc lập kế hoạch hành trình ngoại tuyến trên điện thoại, nhưng việc chạy OTP là không thể vì một đồ thị có thể chiếm đến hàng gigabyte và mất hàng phút để tải.
Thông số Kỹ thuật Chính:
- Dung lượng bộ nhớ: ~40 MiB trên ổ đĩa (lịch trình Puget Sound)
- RAM cho Quy trình Máy chủ: ~100k
- Ngôn ngữ lập trình: Rust
- Thuật toán cốt lõi: RAPTOR
- Định tuyến chuyển tuyến: Tích hợp Valhalla
Giải pháp thay thế cho hệ thống truyền thống
Dự án này định vị như một bổ sung cho OpenTripPlanner, đặc biệt tập trung vào các khu vực chưa được các hệ thống hiện có phủ sóng. Việc tích hợp với Valhalla để xử lý các chuyển tuyến và định tuyến cho chặng đầu/cuối, kết hợp với khả năng hỗ trợ nhiều cơ quan vận tải và nhận biết múi giờ, khiến nó trở thành một giải pháp đầy hứa hẹn cho quy hoạch giao thông toàn diện. Mặc dù còn một số hạn chế như thiếu hình dạng tuyến đường trong lịch trình và việc tính toán chuyển tuyến trước hạn chế khả năng tùy chỉnh đi bộ/đạp xe theo yêu cầu, dự án vẫn duy trì phạm vi rõ ràng cho phát triển trong tương lai.
Những hạn chế hiện tại:
- Không có hình dạng tuyến đường trong lịch trình
- Chỉ có các điểm chuyển tiếp được tính toán trước
- Khả năng tùy chỉnh đi bộ/đạp xe theo yêu cầu còn hạn chế
- Một số lỗi định tuyến với các tuyến đường dài
Phản hồi từ cộng đồng và tiềm năng tương lai
Cộng đồng công nghệ giao thông đặc biệt quan tâm đến tiềm năng của Farebox trong ứng dụng di động ngoại tuyến và cách tiếp cận tiết kiệm bộ nhớ của nó. Các nhà phát triển và chuyên gia giao thông đặc biệt hứng thú với khả năng phủ sóng toàn cầu từ một phiên bản duy nhất, điều này có thể giảm đáng kể chi phí lưu trữ. Mặc dù đã phát hiện một số lỗi định tuyến, chẳng hạn như các tuyến xe buýt đường dài xuất hiện không mong muốn thay vì các tùy chọn tàu cao tốc, dự án vẫn duy trì phát triển tích cực và tương tác với cộng đồng.
Dự án cũng gợi ý về việc triển khai định tuyến rRAPTOR trong tương lai, cho phép tính toán đồng thời các lịch trình qua nhiều thời điểm khởi hành - một tính năng thường không có trong các cách triển khai tìm kiếm A* truyền thống thông qua đồ thị định tuyến phụ thuộc thời gian.
Ghi chú kỹ thuật: RAPTOR (Round-Based Public Transit Optimized Router) là một thuật toán được thiết kế đặc biệt cho định tuyến giao thông công cộng xử lý các tuyến theo vòng, thường mang lại hiệu suất tốt hơn so với phương pháp tìm kiếm A truyền thống cho mạng lưới giao thông.*
Tham khảo: Farebox - Triển khai RAPTOR nhanh bằng Rust được thiết kế cho máy có bộ nhớ hạn chế