Với những bài toán có kích thước nhỏ (ít thành phố khoảng 10 đến 20 thành phố, và ít xe từ 2 đến 6 xe) ta có thể sử dụng các phương pháp tìm kiếm
đường đi trên đồ thị sẽ cho kết quả chính xác. Nhưng với những bài toán có kích thước lớn hơn cần sử dụng các thuật toán sau:
2.4.1 Thuật toán nhánh cận
Trong mục này, luận văn trình bày tóm tắt thuật toán nhánh cận(xem[8]) được xem là cách tiếp cận tốt và cho được nghiệm tối ưu với trường hợp bài toán có kích thước trung bình.
Xét bài toán tối ưu
min f x( ) :xS
Trong đó S là tập hữu hạn phần tử được gọi là miền ràng buộc, còn f S: R
là hàm thực xác định trên S.
Để áp dụng thuật toán nhánh cận giải bài toán đặt ra, chúng ta cần xây dựng hai thủ tục chính sau đây:
1. Thủ tục rẽ nhánh: Phân hoạch liên tiếp miền ràng buộc S thành các tập con với kích thước nhỏ hơn và bảo đảm cuối cùng sẽ xây dựng được phân hoạch miền ràng buộc ra thành các tập con chỉ gồm một phần tử, nói cách khác là đảm bảo duyệt vét cạn tất cả các phần tử của tập S
2. Thủ tục nhánh cận: Xây dựng được hàm tính cận dưới fbound xác định trên
tập con của tập S thỏa mãn:
( ) min ( ) :
bound i
f s f x xS với mọi Si thuộc S
Giá trị fbound( )Si được gọi là cận dưới của Si
Giả sử ta biết được một lời giải x*
thuộc S, khi đó nếu
* * ( ) bound( ) f f x f S Thì từ bất đẳng thức * * ( ) bound( ) min ( ) : i f f x f S f x xS k
Procedure Branch_And_Bound_Algorithm;
BEGIN
// Bước khởi tạo
Đặt P Silà một phân hoạch của tập S; Tìm x* thuộc S, tính * *
( )
f f x ;
Repeat
Loại khỏi P tập con có triển vọng nhất Si; Phân hoạch Si thành các tập con Sij;
Cập nhật giá trị mục tiêu tốt nhất f*; P P Sij For all SijP do If * ( ) bound ij
f S f then loại bỏ Sij khỏi P Until P ;
END
Hình 2.3: Thuật toán nhánh cận
Thông thường Si được coi là có triển vọng nếu nó có giá trị cận dưới
( )
bound ij
f S là nhỏ nhất. (chuyển lên trên)
2.4.2 Giải thuật di truyền
Thuật toán di truyền là kỹ thuật mô phỏng theo quá trình tiến hóa tự thích nghi của các quần thể sinh học dựa trên học thuyết Darwin. Trong sự tiến hóa tự nhiên, mỗi loài sinh vật đều phải tìm cách thích nghi tốt nhất với một môi trường sống phức tạp và luôn thay đổi. Sự thích nghi đó được đúc kết và ghi lại trong cấu trúc nhiễm sắc thể của chúng. Rõ ràng, những sinh vật thuộc thế hệ sau được sinh ra (tính trung bình) sẽ thích nghi với môi trường tốt hơn các thế hệ trước.
Thuật toán di truyền bắt chước tương tự sự tiến hóa tự nhiên. Để sử dụng thuật toán di truyền khó khăn chính là chọn lọc được kiểu gene, cấu trúc nhiễm sắc thể và các thủ tục tạo mẫu, toán tử di truyền thích hợp để xử lý các ràng buộc.
Procedure GA Begin
t 0;
Khởi tạo P(t); // khởi tạo quần thể Đánh giá P(t);// đánh giá độ thích nghi While not kết_thúc do // vòng lặp tiến hóa
Begin
// biến đổi quần thể p t'( )Biến đổi (P(t));
// đánh giá độ thích nghi mới Đánh giá p’(t); //Tạo ra thế hệ mới P(t+1)chọn lọc (p’(t)); tt+1; End; End;
Hình 2.4: Thuật toán di truyền
Thuật toán di truyền và những phát triển của nó với tên gọi chung “Phương pháp tính toán tiến hóa” đã đạt được những thành công nhất định. Một trong những tiếp cận khác là phương pháp tối ưu hóa đàn kiến. Cách tiếp cận này là cách tiếp cận Metaheuristic mới, được giới thiệu bởi Dorigo và phát triển mạnh mẽ trong hơn một thập kỷ qua. Trong chương 3, luận văn sẽ trình bày cách thức áp dụng tối ưu đàn kiến giải bài toán điều phối xe.
CHƢƠNG 3
PHƢƠNG PHÁP TỐI ƢU ĐÀN KIẾN CHO BÀI TOÁN ĐIỀU PHỐI XE
Để giải một bài toán tối ưu tổ hợp bằng phương pháp tối ưu đàn kiến, đầu tiên ta phải đưa bài toán về dạng tìm kiếm đường đi tối ưu trên đồ thị. Trong bài toán điều phối xe, đồ thị các chuyến xe được xây dựng dựa trên thứ tự các thành phố mà mỗi xe đi qua. Các con kiến di chuyển trên đồ thị theo quy tắc xây dựng lời giải, hành trình của một con kiến tương ứng với hành trình của một xe. Chương này luận văn trình bày về cách áp dụng tối ưu đàn kiến giải bài toán điều phối xe.