Yêu cầu bài toán Xây dựng hệ thống tìm đường trên bản đồ cho nhóm hàng bài với khả năng chọn điểm xuất phát và điểm đến từ người dùng.. Các yêu cầu chính bao gồm khả năng sử dụng thu
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÁO CÁO ĐỒ ÁN MÔN HỌC NHẬP MÔN TRÍ TUỆ NHÂN TẠO
Đề tài:
Lớp : 144916
Học phần : Nhập môn Trí tuệ nhân tạo
Mã học phần : IT3160
Giảng viên hướng dẫn : PGS TS Trần Đình Khang
Danh sách thành viên nhóm:
1 Phạm Nhật Nam 20210620 Trưởng nhóm
2 Nguyễn Hữu Lộc 20210536
3 Bùi Toàn Thắng 20210782
4 Trần An Khánh 20210479
Trang 2MỤC LỤC
1 Phân tích bài toán: tìm đường đi ngắn nhất trên bản đồ 5
2 Thuật toán tìm đường 5
3 Đường đi và truy vết 5
4 Hiển thị trên giao diện đồ họa 5
5 Giao diện người dùng 5
CHƯƠNG 3 CÔNG NGHỆ SỬ DỤNG VÀ BỘ DỮ LIỆU 6
2 Nhận xét, đánh giá 8
Trang 3LỜI NÓI ĐẦU
Trang 4CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI Xây dựng và Tối ưu Hóa Hệ Thống Tìm Đường Trên Bản Đồ:
Ứng Dụng Cho Hàng Bài
1 Lý do chọn đề tài
Tìm đường đi trên bản đồ đóng một vai trò quan trọng trong nhiều lĩnh vực, bao gồm giao thông, quản lý đối tượng di động, và robot tự động di chuyển
Đề tài hứa hẹn mang lại giá trị thực tế bằng cách tối ưu hóa chi phí và thời gian di chuyển, có ứng dụng rộng rãi và tích cực đối với nhóm hàng bài
2 Yêu cầu bài toán
Xây dựng hệ thống tìm đường trên bản đồ cho nhóm hàng bài với khả năng chọn điểm xuất phát và điểm đến từ người dùng
Các yêu cầu chính bao gồm khả năng sử dụng thuật toán tìm đường như DFS, BFS, Dijkstra, và A* để đảm bảo đường đi ngắn nhất
Giao diện người dùng thân thiện, cho phép người dùng dễ dàng tương tác
và chọn điểm trên bản đồ
3 Ý tưởng thực hiện
Thu thập dữ liệu bản đồ và xây dựng biểu đồ đồ thị để mô phỏng mối quan hệ giữa các điểm trên bản đồ
Sử dụng thuật toán DFS và BFS để tìm kiếm đường đi cơ bản
Áp dụng thuật toán Dijkstra để tối ưu hóa theo chi phí và thuật toán A* để tối ưu hóa cả chi phí và thời gian di chuyển
Phát triển giao diện người dùng đẹp, thân thiện và dễ sử dụng, cho phép người dùng chọn điểm xuất phát và điểm đến, sau đó hiển thị đường đi ngắn nhất trên bản đồ
Tối ưu hóa và kiểm thử hệ thống để đảm bảo độ chính xác và hiệu suất cao
Triển khai tính năng bảo trì và cập nhật để đáp ứng nhu cầu thay đổi và cải thiện hệ thống theo thời gian
4
Trang 5CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
1 Phân tích bài toán: Tìm đường đi ngắn nhất trên bản đồ
a) Môi trường:
Bản đồ với các điểm quan trọng như giao lộ, ngã tư, địa danh
Dữ liệu về các con đường và khoảng cách giữa các điểm trên bản đồ
1 Performance Measure (Đo lường hiệu suất):
i Mục tiêu chính: Tìm đường đi ngắn nhất giữa hai điểm trên bản đồ
ii Đánh giá: Chi phí và thời gian di chuyển thấp, đường đi phải
là đường ngắn nhất
2 Environment (Môi trường):
i Bản đồ:
ii Được tạo ra với các điểm quan trọng như giao lộ, ngã tư, và địa danh
iii Chứa dữ liệu về các con đường và khoảng cách giữa các điểm
3 Actuators (Bộ truyền động):
i Hệ thống thuật toán tìm đường:
ii Thực hiện các thuật toán như Dijkstra, A* để tìm đường đi iii Tương tác với dữ liệu bản đồ và trả về đường đi tối ưu
4 Sensors (Cảm biến):
i Dữ liệu bản đồ:
ii Thu thập thông tin về các điểm quan trọng và con đường iii Điểm xuất phát và điểm đến:
iv Nhận dạng và xác nhận điểm xuất phát và điểm đến từ người dùng
b) Tác tử:
Người dùng: Có khả năng chọn điểm xuất phát và điểm đến trên bản đồ
Hệ thống: Xử lý yêu cầu của người dùng, triển khai các thuật toán tìm đường
Trang 62 Thuật toán tìm đường:
a) DFS (Depth-First Search):
Duyệt sâu vào đồ thị để tìm đường đi
Sử dụng cho môi trường có nhiều lựa chọn nhánh
b) BFS (Breadth-First Search):
Duyệt rộng trên đồ thị để tìm đường đi
Sử dụng cho môi trường có cấu trúc rõ ràng và các lựa chọn có thể cân nhắc
c) Dijkstra:
Tìm đường đi ngắn nhất giữa các đỉnh trên đồ thị
Phù hợp cho môi trường với trọng số cạnh dương
d) A (A-star):*
Kết hợp giữa Dijkstra và heuristic để tối ưu hóa chi phí và thời gian
Sử dụng trong môi trường yêu cầu tối ưu hóa đồng thời về chi phí
và thời gian
e) Iterative Deepening Search (IDS):
IDS là sự kết hợp của DFS và BFS
Thực hiện DFS với giới hạn độ sâu tăng dần cho đến khi đạt được đích
Đảm bảo tìm kiếm có độ phức tạp thấp như BFS nhưng không đòi hỏi bộ nhớ lớn
f) Uniform Cost Search (UCS):
UCS tập trung vào việc tìm đường đi có chi phí tổng thấp nhất
Sử dụng hàng đợi ưu tiên để giữ các đỉnh theo thứ tự tăng dần của chi phí
Hiệu quả khi chi phí trên các cạnh là biến đổi và không đồng đều
g) Greedy Best-First Search (GBFS):
GBFS chọn đường đi dựa trên một hàm heuristics
Hàm heuristics ước lượng khoảng cách tới đích từ mỗi đỉnh
Tập trung vào việc chọn đường dẫn trông có vẻ gần nhất đến đích
3 Đường Đi và Truy Vết:
Trang 7 Lưu trữ thông tin về đường đi, có thể là danh sách các điểm hoặc đỉnh trên đồ thị
Thuật toán sẽ xác định đường đi ngắn nhất giữa điểm xuất phát và điểm đến
4 Hiển Thị Trên Giao Diện Đồ Họa:
Sử dụng thư viện Vite và React hiển thị bản đồ và môi trường
Hiển thị đường đi trên bản đồ để người dùng có cái nhìn tổng quan
5 Giao Diện Người Dùng:
Giao diện đơn giản, dễ sử dụng cho việc chọn điểm xuất phát và điểm đến
Hiển thị kết quả đường đi ngắn nhất
Cung cấp tùy chọn thêm như điều chỉnh thuật toán, thay đổi kiểu hiển thị
Trang 8CHƯƠNG 3 CÔNG NGHỆ SỬ DỤNG VÀ BỘ DỮ LIỆU
1 Công nghệ sử dụng
a) FastAPI:
1 FastAPI được sử dụng để xây dựng API nhanh chóng và hiệu quả
2 Cung cấp cơ chế tạo các endpoint RESTful và hỗ trợ kiểu dữ liệu dưới dạng Pydantic models
b) React + Vite:
1 Xây dựng giao diện người dung
2 Gọi API để lấy về dữ liệu đường đi được trả về từ backend cho thuật toán tương ứng
c) json:
1 Lý do sử dụng: Thư viện json được sử dụng để làm việc với dữ liệu JSON, đọc và ghi các tệp JSON
d) math:
1 Lý do sử dụng: Thư viện math cung cấp các hàm toán học cơ bản Trong đoạn mã của bạn, có thể được sử dụng để tính toán khoảng cách giữa các tọa độ
e) osmnx:
1 Lý do sử dụng: Thư viện osmnx được sử dụng để tải dữ liệu đồ thị đường phố từ OpenStreetMap và thực hiện các phân tích về đồ thị đường phố Tuy nhiên, trong đoạn mã của bạn, có vẻ không có sử dụng thực tế của thư viện này
f) heapq:
1 Lý do sử dụng: Thư viện heapq cung cấp các chức năng liên quan đến hàng đợi ưu tiên (priority queue), được sử dụng trong thuật toán A* và Dijkstra để tối ưu hóa việc chọn nút theo ưu tiên
g) deque:
1 Lý do sử dụng: Thư viện deque cung cấp cấu trúc dữ liệu hàng đợi hai đầu (double-ended queue), được sử dụng trong thuật toán BFS
2 Bộ dữ liệu
Bộ dữ liệu của chương trình bao gồm các tệp JSON như sau:
edges.json:
Chứa thông tin về các cạnh trong đồ thị mạng, với các trường như u (đỉnh nguồn), v (đỉnh đích), oneway (hướng một chiều hay không),
và length (độ dài hoặc trọng số của cạnh)
hangbai_edges.json:
Có thể chứa thông tin về các cạnh liên quan đến một khu vực cụ thể mang tên "hangbai."
hangbai_nodes.json:
Trang 9 Chứa thông tin về các đỉnh trong khu vực hoặc tính năng
"hangbai."
nodes.json:
Là tệp dữ liệu chung về các đỉnh trong toàn bộ đồ thị mạng, bao gồm id, x (tọa độ x), và y (tọa độ y)
simplified_edges.json:
Có thể là phiên bản đơn giản hóa của thông tin cạnh trong đồ thị
simplified_nodes.json:
Có thể chứa thông tin tóm tắt về các đỉnh trong đồ thị
Trang 10CHƯƠNG 4 KẾT QUẢ TỔNG QUAN
1 Sản phẩm demo
Dưới đây là hình ảnh demo ứng dụng với từng thuật toán:
- BFS
- DFS:
- Dijkstra:
Trang 112 Nhận xét, đánh giá:
Sau khi thử nghiệm với nhiều vị trí khác nhau, có thể kết luận rằng thuật toán BFS và Dijkstra cho kết quả đường đi tương tự nhau và tốt hơn đáng kể so với thuật toán DFS
3 Hướng phát triển:
Mở rộng phạm vi tìm kiếm đường đi
Thử nghiệm các thuật toán mới để gia tăng độ chính xác
Trang 12-
TÀI LIỆU THAM KHẢO
1 https://fastapi.tiangolo.com/
2 https://reactnative.dev/
3 https://vitejs.dev/guide/
4 Bài giảng Nhập môn Trí Tuệ Nhân Tạo, IT3160, SOICT