Thuật toán nhánh cận

Một phần của tài liệu Phương pháp tối ưu đàn kiến cho bài toán điều phối xe (Trang 32 - 33)

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 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 f

bound xác định trên

tập con của tập S thỏa mãn:

fbound (si ) ≤ min {f ( x ) : x S} 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

f * = f ( x * ) ≤ fbound ( S )

Thì từ bất đẳng thức

f * = f ( x * ) ≤ fbound ( S ) ≤ min {f ( x ) : x Si }k

Ta suy ra tập Si chắc không chứa lời giải tối ưu và có thể loại bỏ việc duyệt

31

Procedure Branch_And_Bound_Algorithm;

BEGIN

/ Bước khởi tạo

Đặt P = ∪Si là 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

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

f (S

ij )

là nhỏ nhất. (chuyển lên trên)

bound (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Phương pháp tối ưu đàn kiến cho bài toán điều phối xe (Trang 32 - 33)