Tải bản đầy đủ - 0 (trang)
1 Dữ liệu thực nghiệm

1 Dữ liệu thực nghiệm

Tải bản đầy đủ - 0trang

 Nhiều thư viện có sẵn. Ví dụ thư viện data mining Scikit-learn, Pandas...

 Dễ dàng sử dụng Python để tạo ra các sản phẩm demo một cách nhanh

chóng. Hơn nữa, các cơng ty, hoặc lập trình viên chun nghiệp luôn ưu

tiên sử dụng Python cho việc phát triển những sản phẩm chất lượng.

 Tốc độ xử lý cực nhanh, python có thể tạo ra những chương trình từ

những script siêu nhỏ tới những phần mềm cực lớn

2.3. Nhược điểm của Python

Ngơn ngữ lập trinh Python có rât nhiều ưu điểm nổi trội nhưng bên cạnh đó

còn một vài nhược điểm như sau:

 Khơng có các thuộc tính như : protected, private hay public, khơng có

vòng lặp do…while và switch….case.

 Mặc dù tốc độ xử lý của Python nhanh hơn PHP nhưng không bằng JAVA

và C++

2.4. Một số điểm đặc biệt trong cú pháp python so với các ngôn ngữ lập trình khác

 Python được thiết kế tối ưu cho việc dễ đọc, dễ hiểu. Có nhiều điểm tương

đồng với tiếng Anh và chịu ảnh hưởng từ các thuật ngữ tốn học.

 Đối với Python, việc xuống dòng rất quan trọng. Vì mỗi câu lệnh trong

Python tương ứng với 1 dòng code, khác với các ngơn ngữ khác sử dụng

dấu phẩy chấm hoặc dấu ngoặc để ngăn cách các câu lệnh.

 Bên cạnh đó, quy tắt thụt đầu dòng cũng quan trọng khơng kém. Đối với

những ngơn ngữ lập trình khác, lập trình viên sử dụng cặp dấu ngoặc nhọn

để định nghĩa các khối lệnh, vòng lặp, hàm, lớp, v.v... Nhưng với Python,

chúng ta sử dụng khoảng cách đầu dòng để gộp các khổi lệnh lại. Có

nghĩa là những dòng code có chung khoảng cách đầu dòng sẽ được Python

xem là một khối lệnh. Hình 17 dưới đây là một ví dụ so sánh đơn giản

giữa Python và các ngơn ngữ lập trinh khác.



38



Hình 17: Ví dụ đơn giản về so sánh giữa Python và các ngơn ngữ lập trình khác



12. Chương trình thực nghiệm

Dựa trên dữ liệu test nói trên, bài toán điều phối xe điện với thời gian sạc pin

và thời gian di chuyển biến đổi được giải quyết. Với cùng một bộ dữ liệu đầu vào,

chúng tôi tiến hành hai thí nghiệm chạy trên hai bộ code với thuật tốn khác nhau

Trong thí nghiệm lần 1 chúng tơi cài đặt thuật tốn di truyền để có được các tuyến

đường, thời gian xe khởi hành tại kho, và kế hoạch sạc pin. Trong đó, thuật tốn

Dijkstra động được áp dụng để tìm đường đi ngắn nhất giữa bất kỳ hai nút liền kề

dọc theo các tuyến đường. Thí nghiệm 2 chúng tôi cho chạy bộ dữ liệu test trên bộ

code chỉ áp dụng thuật toán di truyền để giải bài tốn. Từ đó có thể đưa ra so sánh

trực quan.

Chúng tơi thực hiện chạy chương trình trên 3 bộ dữ liệu test với các đồ thị lần

lượt có số đỉnh là 20, 36 và 50. Do tính ngẫu nhiên của thuật tốn, chúng tơi cho

chạy hai thuật tốn là GA + Dijkstra và GA thuần liên tục 5 lần trên cùng một bộ

dữ liệu đầu vào. Mỗi lần chạy chương trình thì kết quả chỉ ra chi phí và thời gian



39



thực thi của mỗi thuật tốn. Sau đó thì chúng tơi chúng tơi tính chi phí và thời gian

trung bình cho mỗi bộ dữ liệu. Các kết quả được minh họa ở các bảng dưới đây

GA + Dijkstra



GA Thuần



Chi phí



Thời gian (ms)



Chi phí



Thời gian (ms)



Lần 1



134



10959



159



9526



Lần 2



129



11609



145



10231



Lần 3



117



13590



139



10321



Lần 4



128



17269



141



11322



Lần 5



136



23134



139



12442



Trung

bình



128.8



15312.2



144.6



10768.4



Bảng 3. Kết quả chạy chương trình trên đồ thị gồm 20 đỉnh (có 5 trạm sạc và 15

khách hàng)



GA + Dijkstra



GA Thuần



Chi phí



Thời gian (ms)



Chi phí



Thời gian (ms)



Lần 1



231



18544



238



10362



Lần 2



213



15427



241



11327



Lần 3



215



16747



235



11740



Lần 4



240



18425



249



13873



Lần 5



232



12575



241



14325



Trung

bình



226.2



16343.6



240.8



12325.4



Bảng 4. Kết quả chạy chương trình trên đồ thị gồm 36 đỉnh (có 10 trạm sạc và 26

khách hàng)



GA + Dijkstra



GA Thuần



Chi phí



Thời gian (ms)



Chi phí



Thời gian (ms)



Lần 1



253



11577



299



10648



Lần 2



272



10773



293



9636



40



Lần 3



257



17717



292



13753



Lần 4



289



17970



291



13834



Lần 5



241



28999



295



15733



Trung

bình



262.4



17407.2



294



12720.8



Bảng 5. Kết quả chạy chương trình trên đồ thị gồm 50 đỉnh (có 10 trạm sạc và 40

khách hàng)

Sau khi chạy lần lượt 5 lần với mỗi bộ dữ liệu test, chúng tơi đưa ra bảng tổng

hợp kết quả trung bình gồm chi phí và thời gian sau đây

GA+DIJKTRA

Chi phí



Thời gian



128.8



15312.2



226.2



16343.6



262.4



17407.2

Bảng 6. Bảng tổng hợp kết quả thực nghiệm



Nhìn vào kết quả trực quan, ta có thể thấy được khi áp dụng thuật toán GA và

Dijkstra động vào để giải bài toán, thời gian chạy có lâu hơn một chút nhưng sẽ

đưa ra được hiệu suất giải pháp tối ưu và tốt hơn.



KẾT LUẬN

Trong nghiên cứu này, chúng tôi đã giới thiệu, nghiên cứu và đưa ra giải pháp

cho Bài toán điều phối xe điện với thời gian sạc pin và thời gian di chuyển biến

41



đổi. Cụ thể, chúng tôi áp dụng thuật toán di truyền và thuật toán Dijkstra động để

đưa ra lời giải gần đúng cho bài toán. Kết quả thực nghiệm cho thấy thuật tốn di

truyển có kết hợp thuật toán Dijkstra động tuy thời gian thực thi lâu hơn nhưng

cho lời giải tối ưu hơn so với thuật tốn di truyền thuần túy.

Trong tương lai, đề tài có thể phát triển theo hướng phân tích thêm một số ràng

buộc mở rộng cho bài toán điều phối xe điện như thời gian cửa sổ,.. và nghiên cứu

một số áp dụng khác vào bài toán.



DANH MỤC TÀI LIỆU THAM KHẢO

[1] Jane Lin, Wei Zhou, OuriWolfson - Electric vehicle routing problem, 2015

[2] Jose-Alejandro Montoya - Electric Vehicle Routing Problems : models and



solution approaches, 2016

[3] Sai Shao, Wei Guan, Bin Ran, Zhengbing He, Jun Bi - Electric vehicle routing



problem with charging time and variable travel time, 2016

[4] Sunita, Deepak Garg -Dynamizing Dijkstra: A solution to dynamic shortest path



problem through retroactive priority queue, 2017

42



[5] Giải thuật di truyền (GAs) và các ứng dụng, Trần Kim Hương, Nguyễn Thị Ngọc



Chi, Khoa Sư phạm Toán tin, Đại học Đồng Tháp.

[6] Vijini Mallawaarachchi – Introduction to Genetic Algorithms, including example



code, 2017

[7] Tutorials Point (I) Pvt. Ltd – Genetic Algorithms - 2016



[8]



E. W. Dijkstra, “A note on two problems in connexion with graphs,” Numerische



Mathematik, vol. 1, no. 1, pp. 269–271, 1959



43



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

1 Dữ liệu thực nghiệm

Tải bản đầy đủ ngay(0 tr)

×