Các vấn đề hiện thực

Một phần của tài liệu (LUẬN văn THẠC sĩ) thuật toán di truyền song song giải bài toán VRP (vehicle routing problem) với hạn chế thời gian (Trang 64 - 68)

Chương 5 : Hiện thực và đánh giá chương trình

5.1 Các vấn đề hiện thực

5.1.1 Cấu trúc dữ liệu biểu diễn lộ trình và lời giải

Một lộtrình là tập hợp các khách hàng được phục vụ ở b i một xe và thỏa mãn tất cả

các ràng buộc về ả t i trọng xe và thời gian. Mộ ờt l i giải cho bài toán VRPTW gồm tập hợp các lộtrình phục vụ ấ t t cảkhách hàng.

Trong quá trình xây dựng l ộ trình, các khách hàng thường xuyên được thêm vào một lộ trình đã có sẵn tại bất kỳ ị v trí nào thích hợp nhất. Đồng thời, thao tác loại bỏ

l ộ trình cũng thường xuyên được th c hiự ện trong phương thức tìm các lân cận )

(S

Nλ , với Slà m t l i giộ ờ ải cho trư c. Do đó, cớ ấu trúc danh sách liên kết được hiện thực đ lưu trể ữ ộ l trình. B i vì mở ột lộ ình xutr ất phát từ kho, ph c vụ ụ các khách hàng và trở ề v kho ban đ u. Khách hàng đầ ầu tiên và cu i cùng trên lố ộ trình được liên k t vế ới kho trung tâm.

Hình 5.1 Minh họa cấu trúc danh sách liên kết biểu diễn một lộ trình class Route { class Route {

private:

int numOfVertex; //Sốkhách hàng trong lộtrình T

double rDistance; // ổng khoảng cách của lộtrình

; Vertex* firstVertex;// Con trỏ đến khách hàng đầu tiên trên lộtrình double aQuantity; //Tải cộng gộp của lộtrình

//Các phương thức của lớp }

Một lời giải được biểu diễn bởi mảng một chiều lưu giữcác con trỏ(là các con trỏ

trỏ đến các khách hàng đầu tiên c a các lủ ộtrình).

Hình 5.2 Minh họa cấu trúc dữ liệu lời giải cho VRPTW

5.1.2 Hai chiến lược khởi tạo quần thể ban đầu

Như đã trình bày trong phần ”Kh i tở ạo qu n th ầ ểban đầu” trong chương trước, quần thểđược chia làm hai phần, m i phỗ ần có phương thức khở ại t o khác nhau. Cụthể, phần thứ nh t c a quấ ủ ần thểđược kh i tở ạo ngẫu nhiên, phần còn lại được khởi tạo t ừ

lời giải thu được từ phương pháp PFIH của Solomon đềxuất. Phần này sẽtrình bày chi tiết hơn vềcách thức khở ại t o các cá thể trong phần th hai c a qu n thứ ủ ầ ể.

Hai chiến lược đượ đềc xuất và hi n thệ ực để ạ t o phần thứ hai của qu n thầ ểnhư sau:

 Tìm lời giải khả thi ban đầu S0 bằng phương pháp PFIH với khách hàng đầu tiên của lộ trình được chọn là khách hàng có cửa sổ thời gian kết thúc sớm nhất.

 Tìm các lời giải lân cận Si∈ Nλ(S0), mỗi lời giải Si thu được sẽ được

mã hóa thành một cá thể (nhiễm sắc thể) trong quần thể.

• Chiến lược 2: kh i t o tr c ti p t PFIH. Chiở ạ ự ế ừ ến lược này l i dợ ụng đ c điặ ểm quan trọng của phương pháp PFIH là cách chọn lựa khách hàng đầu tiên để

xây dựng một lộ trình m s ới ẽ ảnh hư ng đở ến chất lượng lời giải kh thi cả ủa PFIH. C : ụthể

 Lặp các bước sau cho đến khi thu được số cá thể cần:

 Tìm lời giải khả thi Sibằng phương pháp PFIH với khách hàng đầu tiên được lựa chọn ngẫu nhiên.

 Mỗi Sithu được sẽ được mã hóa thành một cá thể và được thêm vào trong quần thể.

Qua thực nghiệm cho th y, chấ ất lượng lời gi i sau cùng ả thu được khi áp dụng chiến

lược hai thường tốt hơn lời gi i khi áp dả ụng chiến lược m t. ộ Điều này có th gi i ể ả thích như sau: các lời giải khả thi Si∈ Nλ(S0) thuộc vùng lân cận của S0 (thử

nghiệm với λ =2), nếu lời giải S0 xa lời giải tối ưu thì các Sicũng sẽ xa l i gi i t i ờ ả ố ưu. Do đó, quá trình i thộ ụ ẽ ấ s r t lâu t i l i gi i tớ ờ ả ối ưutrong trường h p này. ợ Ngược lại, theo chiến lược hai, các Sicó khảnăng phân tán rộng trên không gian lời giải và nhi u ề khảnăng có một lời giải nào đó nằm gần lời gi i tả ối ưu.

5.1.3 Một số kỹ thuật song song hóa

Khi song song thuật toán, một trong các vấn đề thường gặp là đồng bộ ấ t t cả các tiến trình t i m t thạ ộ ời điểm nào đó. Nghĩa là ph i đả ảm bảo tất c các tiả ến trình đều

đến v trí xị ảy ra đồng b . Ví d ộ ụnhư trong thu t toán di truyậ ền song song có đồng bộ, tiến trình chủ phả ải đ m bả ấo t t cả các tiến trình tớ đã thực hiện xong nhiệm vụ

của chúng và đã gửi kết quả ề v tiến trình chủ trước khi thao tác chọn lọc diễn ra. Bởi lẽthao tác chọn lọc được thực hiện trên toàn bộquần thể. Giả ử ộ s m t tiến trình t ớ Pi nào đó chạy rất chậm, điều này sẽ ẫ d n đến tiến trình chủphải chờ đợi kết quả

t ừ Pi trước khi tiếp tục, trong khi các tiến trình tớ khác đang nhàn rỗi.

Để tránh vấn đề trên, trong hi n th c gi i thu t di truy n song song gi i bài toán ệ ự ả ậ ề ả

VRPTW, tiến trình chủ thay vì gửi n/p cặp cá thể đến ti n trình tế ớP1, n/p cặp cá thể đến ti n trình t ế ớ P2, ..., n/p cặp cá thể đến ti n trìnhế t ớ Pp (n: số ặ c p cá thể, p: sốtiến trình tớ) và chờ nh n tậ ấ ả ết c k t quảtrả ề v ; Ti n trình chế ủchỉ ử g ti ừng cặp cá thể đế n mỗi tiến trình tớ ỗ m i lần, đồng thời lắng nghe kết quả vtrả ề. Ngay khi nhận được kết quả ừ t tiến trình Pi(1≤i ≤ p), tiến trình chủ ậ l p tức gửi tiếp một cặp cá thểkhác cho tiến trình Pi này. Như vậy, với các hih ện thực song song này, các tiến trình sẽ

hạn chế ố t i đa th i gian chờ ờ đợi các tiến trình chậm chạp khác.

Giả ử s có pti n trình t , ế ớ n cặp cá th (ể n ≥ p). Thuật toán được mô tả như sau:

Nếu (tiến trình chủ) {

Gửi p cặp cá thể đến ptiến trình.

Lặp các bư c sau cho đ n khi đã gớ ế ửi hết n cặp cá thể

Nhận mộ ặt c p cá th con, ghi nh n ể ậ rank ti n trình t ế ớđã gửi Cập nhật các cá th ểcon vào quần thể ớ m i

Gửi tiếp mộ ặt c p cá th ểkhác đến ti n trình có ế rank trên

Chờ đểnhận tất cảcác cá thểcon còn lại và cập nhật chúng vào quần th ể

Thông báo cho các tiến trình t k t thúc vi c ch nh n ớ ế ệ ờ ậ

}

Ngượ ạc l i { //ti n trình t ế ớ

p Chờ đến khi nhận đư c thông điợ ệp có source, tagvà commthích hợ

Lặp các bư c sau đớ ến khi nhận được thông báo kết thúc từtiến trình chủ

t

Nhận một cặp cá thể ừtiến trình chủ

h

Thực hiện các thao tác tái tổ ợp đểsinh ra cặp cá thểcon

Đánh giá tính thích nghi của các cá thểcon Gửi cặp cá thểcon vềtiến trình chủ

}

Hơn nữa, d li u c a mữ ệ ủ ột khách hàng hoặc một nhiễm sắc thể bao g m nhiồ ều

trường dữ ệ li u được lưu trữ không liên t c nhau trong bụ ộ nh . Ví d ớ ụnhư dữ liệu c a ủ

một khách hàng bao gồm định danh của khách hàng, hai giá trị thể hiện vị trí, nhu cầu của khách hàng và hai giá trị thể hiện cửa sổ thời gian liên kết với khách hàng

đó Thông thư. ờng, ti n trình ch mu n gế ủ ố ửi một khách hàng đến các tiến trình t , ớ

tiến trình chủ phải gửi 6 thông điệp cho 6 giá trị thuộc tính của khách hàng. Điều này làm cho số ợlư ng thông điệp qua mạng tăng đáng k . Do đó, ể để ễ d dàng truyền nhận cũng như giảm số ợlư ng thông điệp truy n nhề ận, các ki u dể ữ ệ li u mới đã được

định nghĩa nh m tóm lưằ ợc các trường d li u r i r c. T ó, các hàm truy n thông ữ ệ ờ ạ ừ đ ề

s ẽ làm việc với các kiểu dữliệu mới này. Và thay vì phải gửi 6 thông điệp cho các giá trị thuộc tính của m i khách hàng, ỗ nay chỉ ầ c n gửi một thông điệp trên mỗi khách hàng.

Một phần của tài liệu (LUẬN văn THẠC sĩ) thuật toán di truyền song song giải bài toán VRP (vehicle routing problem) với hạn chế thời gian (Trang 64 - 68)

Tải bản đầy đủ (PDF)

(84 trang)