Báo cáo project

EV Router.

Hệ thống tối ưu hóa lộ trình xe điện ứng dụng thuật toán A* và KD-Tree để giải quyết nỗi lo hết pin dọc đường bằng cách gợi ý trạm sạc thông minh.

Nhóm 5 thành viênPythonFlaskMongoDBGoongJSA* Algorithm
Cuộn xuống để khám phá

Chức năng chính

Tìm tuyến tối ưu theo thời gian, khoảng cách và mức tiêu thụ pin.

Phân tích trạm sạc

KD-Tree gợi ý trạm sạc gần nhất trên lộ trình.

Mô hình pin phi tuyến

Ước tính pin theo tốc độ, khoảng cách và điều kiện tuyến đường.

Adaptive sampling

Điều chỉnh mật độ lấy mẫu tuyến đường để tuyến dài không bị timeout.

Fallback bản đồ

Fallback Goong/Mapbox/OSRM giúp hệ thống vẫn trả kết quả khi API chính lỗi.

Dữ liệu trạm & toll

Xử lý dữ liệu trạm sạc, cao tốc, trạm thu phí và tuyến đặc thù Việt Nam.

Flask/MongoDB backend

Backend Flask đọc dữ liệu route/station từ MongoDB và trả kết quả cho bản đồ.

Situation - Bối cảnh

Người dùng xe điện không chỉ cần đường ngắn nhất mà cần biết tuyến đó có đủ pin, có trạm sạc phù hợp và tổng thời gian có hợp lý không.

Dữ liệu Việt Nam đặc thù

Source có dữ liệu trạm sạc, highway, toll station, phà/cao tốc và bản đồ Việt Nam, nên project không chỉ dùng dữ liệu mẫu.

Stack thuật toán ứng dụng

Python/Flask xử lý thuật toán, MongoDB lưu dữ liệu không gian, GoongJS/Leaflet hiển thị bản đồ và API fallback tăng độ ổn định.

Không phải map wrapper

Dự án không chỉ gọi API vẽ route; phần chính là tính energy-feasible path, charging stop và cảnh báo tuyến.

Có báo cáo kỹ thuật

Repo có README, dữ liệu JSON, script import MongoDB, update data và file viết báo cáo, giúp nội dung có bằng chứng.

Giá trị portfolio

EV Router bổ sung câu chuyện thuật toán/optimization, giúp portfolio không chỉ xoay quanh CRUD web app.

Task - Nhiệm vụ

Tuyến ngắn nhất có thể không khả thi nếu pin không đủ tới trạm sạc tiếp theo hoặc cần sạc quá lâu.

Tìm trạm gần tuyến tốn chi phí

Nếu quét toàn bộ danh sách trạm cho từng điểm route, thời gian xử lý tăng mạnh khi dữ liệu nhiều.

Tuyến dài dễ timeout

Route Bắc-Nam có quá nhiều điểm; sample quá dày thì chậm, sample quá thưa thì dự báo pin/trạm thiếu chính xác.

Pin không tuyến tính tuyệt đối

Tiêu thụ pin phụ thuộc khoảng cách, tốc độ, điều kiện route và việc sạc cũng không nên giả định luôn tuyến tính.

API bản đồ có thể lỗi

Goong/Mapbox/OSRM có giới hạn, route thiếu hoặc lỗi mạng; hệ thống cần fallback và warning thay vì crash.

UI phải giải thích kết quả

Người dùng cần thấy trạm sạc đề xuất, cảnh báo, khoảng cách, pin và route chứ không chỉ một polyline trên bản đồ.

Action - Quyết định & Thực thi

Tôi triển khai/diễn giải A* với heuristic Haversine, cost gắn khoảng cách, thời gian, sạc và khả năng đáp ứng pin.

Tối ưu bằng KD-Tree

Tôi dùng KD-Tree để truy vấn trạm sạc gần tuyến nhanh hơn cách quét tuyến tính toàn bộ dataset.

Áp dụng corridor buffer

Tôi giới hạn trạm trong vùng gần route thay vì xét toàn quốc, giúp kết quả tập trung vào hành trình thật.

Adaptive sampling

Tôi điều chỉnh mật độ sample theo độ dài tuyến để route dài không timeout nhưng vẫn giữ dự báo pin có ích.

Mô phỏng pin và sạc

Tôi đưa vào tiêu thụ kWh/100km và mô phỏng sạc phi tuyến để kết quả gần thực tế hơn phép chia khoảng cách đơn giản.

Fallback bản đồ

Tôi thiết kế fallback Goong -> Mapbox -> OSRM và warning khi tuyến còn yếu tố người dùng muốn tránh.

Import dữ liệu vào MongoDB

Tôi dùng script import/update dữ liệu để tách dữ liệu trạm/route khỏi code xử lý thuật toán.

Result - Kết quả đạt được

Theo báo cáo dự án, adaptive sampling giúp tuyến dài giảm từ khoảng 25 giây xuống còn 6-10 giây.

Tối ưu truy vấn không gian

KD-Tree giảm chi phí tìm trạm gần route, đặc biệt khi số lượng trạm sạc tăng.

Demo có dữ liệu thật

Repo có dataset trạm sạc/toll/highway, Flask app, Mongo import script và giao diện bản đồ để kiểm chứng.

Khác biệt với CRUD

EV Router giúp tôi nói về algorithm, geospatial data, fallback strategy, performance trade-off và modeling.

Limitation thật

Độ chính xác phụ thuộc dữ liệu trạm/API bản đồ; chưa có dữ liệu realtime về trạm trống, công suất sạc và traffic.

Hướng phát triển

Có thể thêm realtime availability, cache tuyến phổ biến, profile xe theo model và benchmark tự động cho nhiều route.

Tối ưu Thuật toán

Tôi học được cách chuyển một thuật toán học thuật như A* thành logic sản phẩm có ràng buộc pin, trạm sạc, thời gian và trải nghiệm người dùng.

Tư Duy Đánh Giá Trade-off Kỹ Thuật

Tôi hiểu hơn về trade-off hiệu năng: chính xác tuyệt đối nhưng timeout thì không dùng được; nhanh nhưng sai pin thì nguy hiểm.

Dự án giúp tôi

Dự án giúp tôi có một câu chuyện kỹ thuật sâu hơn về optimization, fallback strategy và dữ liệu không gian.

Video báo cáo sản phẩm

Bằng chứng video EV Router

Video này chứng minh điều gì? Video bao cao thuat toan va flow van hanh EV Router, dung lam bang chung truc quan cho A*, KD-Tree, rang buoc pin va fallback ban do.

Preview & Trải nghiệm thực tế

Mỗi màn hình đi kèm phần mô tả chi tiết để làm rõ luồng hoạt động và trải nghiệm người dùng thực tế.

trang chủ
Xem toàn màn hình
01

trang chủ

Ảnh này dùng làm bằng chứng cho flow EV Router. Màn hình "trang chủ" giúp giải thích rõ trạng thái UI, dữ liệu hiển thị và thao tác người dùng ở bước đó.

Mã nguồn & Demo

Trải nghiệm dự án
Source Code & Demo

Xem toàn bộ mã nguồn trên GitHub hoặc mở bản demo hoạt động thực tế.

DỰ ÁN TIẾP THEO
Sẵn sàng cho cơ hội mới

Cùng hợp tác nhé.

Tôi đang tìm kiếm những thử thách mới và cơ hội hợp tác. Nếu bạn có câu hỏi hoặc chỉ muốn chào hỏi, tôi sẽ phản hồi sớm nhất có thể.