Thuật toán vi khuẩn (BFO)

Một phần của tài liệu Nghiên cứu lý thuyết dự đoán quỹ đạo trôi dạt và tính toán tuyến đường tìm kiếm tối ưu cho phương tiện gặp nạn trong vùng biển ninh thuận kiên giang (Trang 111 - 175)

9. Kết cấu của Luận án

4.2.4 Thuật toán vi khuẩn (BFO)

Thuật toán vi khuẩn (Bacterial Foraging Optimization Algorithm - BFOA) được đề xuất đầu tiên bởi Passino [53], [87] năm 2002, thuật toán tối ưu dựa trên phương pháp tìm kiếm thức ăn của bầy vi khuẩn đã thu hút được sự quan tâm của nhiều nhà nghiên cứu trong những năm qua và hiện được coi là giải pháp khả thi cho rất nhiều vấn đề khác nhau về tối ưu. BFO là phương pháp tối ưu số dựa vào số đông trong bầy. Phương pháp này rất đơn giản về mặt lý thuyết song lại là công cụ tính toán rất mạnh và đã được ứng dụng thành công trong nhiều vấn đề kỹ thuật khác nhau như điều khiển tối ưu, trí tuệ nhân tạo hoặc các dự đoán điều hòa…

Là một thuật toán dựa trên số đông các vi sinh vật đơn giản, BFO đáng tin cậy và hiệu quả hơn so với các phương pháp số thông thường (dựa trên các tính toán đối với Gradient) nhờ các ưu điểm chính như sau:

- Các phần tử riêng biệt trong tập hợp có tính chất tự chủ và phân tán. Không có sự điều khiển tập trung nên việc một hoặc một số phần tử kém hiệu quả hoặc thất bại không làm ảnh hưởng tới việc giải quyết vấn đề của cả tập hợp. Nói cách khác, các phần tử còn lại vẫn có khả năng tìm nghiệm tối ưu cho bài toán một cách độc lập. Nhờ vậy, thuật toán này hiệu quả và mạnh hơn so với các phương pháp số khác.

- Do việc hợp tác (kết bầy) của các cá thể là thông qua các liên lạc gián tiếp nên thuật toán có thể được mở rộng dễ dàng. Đối với một vấn đề đơn giản, một tập hợp vi khuẩn nhỏ cũng có thể thực hiện tìm kiếm hiệu quả. Tuy nhiên, khi mức độ phức tạp của vấn đề tăng lên, cần sử dụng số lượng vi khuẩn lớn hơn.

Do sự mở rộng dễ dàng của thuật toán BFO, ta có thể tăng quy mô tập hợp vi khuẩn để giải quyết được những vấn đề phức tạp hơn một cách nhanh chóng.

- Thuật toán BFO chỉ sử dụng các công thức toán học cơ bản do đó có thể được áp dụng một cách đơn giản, nhanh chóng và hiệu quả trên máy tính. - Khi áp dụng BFO, ta không cần các giả định về tính khả vi, hàm lồi cũng như các yêu cầu khác về mặt toán học. Do đó, các thuật toán có thể áp dụng được cho rất nhiều vấn đề khác nhau.

Đường chạy tàu SAR tìm kiếm vật thể bị nạn phải đảm bảo ưu tiên quét hết vùng xác suất trôi dạt của vật thể với thời gian ngắn, trong quá trình chạy tàu SAR chịu sự tác động của điều kiện sóng gió, đây là bài toán tối ưu hàm nhiều biến. Với các yếu tố này, thuật toán mà nghiên cứu sinh sử dụng trong tính toán đường chạy tàu tìm kiếm tối ưu được lựa chọn là thuật toán BFO.

4.2.4.1 Nguyên lý chung của BFO

Giả sử, ta cần tìm cực tiểu của 1 hàm Q(S) với miền xác định cho trước (được gọi là miền giải pháp, miền nghiệm số hay miền tìm kiếm). Ngoài ra, 1 nghiệm S phải thỏa mãn một số điều kiện ràng buộc nhất định. Trong nhiều ứng dụng thực tế, bài toán này hết sức phức tạp và không thể (hoặc rất khó có thể) giải được bằng các phương pháp giải tích thông thường, hoặc thậm chí là các phương pháp số vì các khó khăn khi cần tính giá trị đạo hàm (hay Gradient)

. Vì vậy, các bài toán này được gọi là bài toán tối ưu không sử dụng gradient. Đối với các bài toán này, thay vì xác định giá trị tối ưu chính xác, bài toán có thể được coi như đã giải quyết xong nếu ta tìm được nghiệm xấp xỉ với giá trị tối ưu.

Dựa trên mô phỏng quá trình phát triển của tập hợp vi khuẩn, BFO là một công cụ tối ưu hóa bằng cách lặp đi lặp lại việc tìm các phương án (hay

) (s Q

một nghiệm khả thi) tốt hơn từ một phương án ban đầu, trong đó, các phương án mới được tạo ra một cách ngẫu nhiên. Mỗi phương án được thể hiện bằng vị trí của một cá thể vi khuẩn trong một không gian đặc trưng cho không gian nghiệm. Trong phần này, vị trí của một cá thể được dùng đồng nghĩa với một phương án hay một giải pháp cho bài toán tối ưu. Áp dụng thuật toán BFO, bài toán có thể được giải quyết nhờ việc lặp đi lặp lại mô phỏng về sự phát triển của tập hợp vi khuẩn được thể hiện qua các giai đoạn trong thời gian sống của mỗi cá thể như sau:

- Mỗi cá thể vi khẩn tự thích nghi với môi trường và phát triển.

- Sự phù hợp của cá thể vi khuẩn với môi trường (hay gọi đơn giản là sức khỏe) được xác định trong mỗi thế hệ. Các cá thể vi khuẩn khỏe nhất tồn tại được và sinh sôi, các cá thể yếu chết đi và không còn tồn tại trong tập hợp.

- Các cá thể vi khuẩn tồn tại được trong tập hợp có xu hướng kết bầy. Như vậy, sau mỗi vòng lặp như trên, các cá thể vi khuẩn sẽ khỏe hơn các cá thể trước đó, tức là vi khuẩn đang tiến gần hơn tới nghiệm tối ưu của bài toán. Nếu được thiết kế phù hợp, thuật toán sẽ cho phép tìm được giá trị gần đúng của phương án tối ưu sau một số hữu hạn các vòng lặp như vừa nêu.

Các thuật ngữ sau đây sẽ được sử dụng trong phần này để minh họa cho một thuật toán BFO cổ điển và cải tiến của thuật toán

S = [p(1), p(2),…, p(i),…,p(N)] là một vector thể hiện một phương án hay chính là vị trí của một cá thể vi khuẩn trong không gian tìm kiếm

Trong đó:

- i: tọa độ thứ i

- V = [v(1), v(2),…, v(i),…,v(N)] là một vector thể hiện hướng tìm kiếm, với v(i) = 0 hoặc v(i) = 1

- D: Khoảng cách dịch chuyển (hay còn gọi là bước tìm)

- Q: Hàm mục tiêu (hay là chỉ số sức khỏe của cá thể vi khuẩn) - dQ: giá trị bổ xung cho hàm mục tiêu thể hiện mối liên hệ giữa

các cá thể vi khuẩn

Hình 4.4. Hoạt động cơ bản của vi khuẩn

Swim Tumble CCW CW Flagella CCW: counter-clockwise CW: clockwise Swim Tumble CCW CW Flagella CCW: counter-clockwise CW: clockwise

4.2.4.2 Thuật toán BFO cổ điển

Nói ngắn gọn, thuật toán BFO cổ điển được thực hiện qua 3 bước như sau:

- Bước 1: Khởi tạo. Khởi tạo tập hợp vi khuẩn, trong đó mỗi cá thể vi khuẩn được đặt ở một vị trí ngẫu nhiên trong không gian tìm kiếm. - Bước 2: Tiến hóa. Lặp đi lặp lại quá trình tiến hóa của tập hợp vi khuẩn

qua 3 bước nhỏ bao gồm:

+ Tìm kiếm, phát triển và kết bầy (chemotaxis and swarming) + Sinh sản

+ Loại trừ và phân tán

- Bước 3: Kết thúc. Trả về phương án ứng với cá thể vi khuẩn có sức khỏe tốt nhất.

Quá trình lặp trong bước 2 cho phép tập hợp vi khuẩn tập trung dần về vùng thuận lợi nhất trong không gian tìm kiếm. Đối với vi khuẩn, đó là vùng có nhiều thức ăn nhất. Còn trong bài toán cần giải, đó là vùng có hàm mục tiêu đạt giá trị lớn nhất (với bài toán tìm cực đại). Mô phỏng cách thức tìm kiếm thức ăn của vi khuẩn E.coli, trong thuật toán BFO, giá trị tối ưu được tìm trong không gian nghiệm bằng cách cho các cá thể vi khuẩn thực hiện việc tìm kiếm cục bộ xung quanh vị trí của mình. Tiếp đó, thông qua việc kết bầy, việc tìm kiếm cục bộ được phân bổ thích hợp. Nhờ quá trình sinh sản, quá trình tìm kiếm được tập trung nhiều hơn vào các khu vực cụ thể. Cuối cùng, việc phân tán sẽ giúp cho quá trình tìm kiếm tránh được các giá trị cực trị cục bộ.

a. Chemotaxis

Chemotaxis là hiện tượng trong đó các vi khuẩn (bao gồm cả vi khuẩn E.coli) thực hiện việc di chuyển do sự tồn tại của các thành tố hóa học nhất định trong môi trường xung quanh vị trí của nó. Hiển nhiên, để tồn tại được, vi

khuẩn cần di chuyển đến nơi có nhiều thức ăn hơn hoặc ít nhất là tránh xa nơi có chất độc. Chuyển động chemotaxis có thể được gọi là dương khi vi khuẩn di chuyển đến vị trí có mức độ tâp trung thành tố hóa học nêu trên cao hơn và ngược lại, chuyển động chemotaxis mang dấu âm khi vi khuẩn di chuyển ra xa từ khu vực này. Sự di chuyển của vi khuẩn là kết quả tổng hợp của hai hành động được gọi là Xoay (tumble) và Bơi (swim).

Bơi là chuyển động của vi khuẩn theo một hướng cho trước. Chuyển động này có được khi vi khuẩn xoay roi của mình theo hướng ngược chiều kim đồng hồ. Trong thuật toán BFO, Bơi có thể được xem như chuyển động trượt lên điểm cao (up-hill) tới vùng cực trị cục bộ. Nếu khoảng cách bơi lớn, vi khuẩn sẽ có khả năng di chuyển tới giá trị cực trị này một cách nhanh chóng. Tuy nhiên, việc này lại có thể làm cho vi khuẩn bị dao động quanh giá trị cực tiểu này. Ngược lại, khi khoảng cách bơi là nhỏ, vi khuẩn sẽ trượt từ từ tới giá trị tối ưu cục bộ một cách chậm rãi nhưng chắc chắn. Hạn chế của khoảng cách bơi ngắn, là thời gian tính toán dài và vi khuẩn không có khả năng vượt ra được khỏi vùng hấp dẫn của các giá trị tối ưu cục bộ.

Ngược lại, Xoay là chuyển động chuyển hướng của các cá thể vi khuẩn có được bằng cách xoay các roi theo chiều thuận chiều kim đồng hồ. Trong quá trình tìm kiếm thức ăn của vi khuẩn, hành động này có thể được xem như việc bắt đầu tìm kiếm thức ăn trên một hướng mới. Việc kết hợp 2 hành động này mang nhiều tính ngẫu nhiên. Một chuyển động xoay có thể được nối tiếp bằng một chuyển động xoay khác hoặc bằng các chuyển động bơi. Thông qua việc đánh giá hiệu quả của hướng di chuyển trong mỗi chuyển động Chemotaxis, vi khuẩn có khả năng tự di chuyển tới các khu vực có các điều kiện thuận lợi hơn, hay nói cách khác, đó là các vùng mà giá trị cần tìm (hàm mục tiêu) lớn hơn.

Chuyển động Chemotaxis của vi khuẩn trong không gian N chiều được tính bằng công thức như sau:

𝑆;(𝑗 + 1) = 𝑆;(𝑗) + 𝑉(𝑗)𝑥 𝐷 (4.2)

Trong đó: - i: vi khuẩn thứ i

- j: bước di chuyển chemotaxis thứ j

Phương án mới (j+1) được áp dụng nếu điều kiện kiểm tra sau đây được thỏa mãn:

𝑄(𝑆;(𝑗 + 1)) < 𝑄(𝑆;(𝑗)) + 𝑑𝑄(𝑆;(𝑗 + 1)) (4.3)

Trong đó: dQ là tổng các lực hấp dẫn lẫn nhau (attractive force) / lực đẩy nhau (repellent force) giữa các cá thể vi khuẩn.

Mục tiêu chung của việc mô phỏng chuyển động chemotaxis của vi khuẩn là thông qua các chuyển động này, vi khuẩn từng bước di chuyển lên các đỉnh cao trong đồ thị của hàm mục tiêu.

b. Kết bầy (Swarming)

Các cá thể vi khuẩn có xu hướng hành động theo bầy một cách đáng kinh ngạc. Việc ghép bầy thực hiện được nhờ cơ chế trao đổi thông tin đơn giản giữa các thể vi khuẩn với các cá thể khác. Do có cấu trúc rất đơn giản, vi khuẩn chỉ có thể liên lạc với các cá thể ở gần. Chính nhờ các thông tin này, có thêm các tham số bổ sung cho vi khuẩn trong việc lựa chọn hướng (tumble) và bước di chuyển (swim). Tuy nhiên, cơ chế trao đổi thông tin và đưa ra quyết định này rất phức tạp và hiện vẫn chưa được giải thích triệt để.

Trong thuật toán BFO, hiện tượng này được mô phỏng bằng cách thêm các lực hấp dẫn lẫn nhau (attractive force) và lực đẩy nhau (repellent force) giữa các cá thể vi khuẩn ở gần. Khi thiết kế thuật toán, cần lựa chọn hợp lý một

số các tham số khác nhau. Để đơn giản, cơ chế về việc đẩy và hấp dẫn giữa các vi khuẩn được thể hiện bằng công thức sau:

dQ(Si(j+1))=∑Ns dQtSi(j+1),Sh(j)u

k=1 (4.4)

=∑Ns [-dattractexp(-wattractvSi(j+1)-Sk(j)v2)]

k=1 +

∑Ns [-hrepellentexp(-wrepellentvSi(j+1)-Sk(j)v2)]

k=1 (4.5)

Trong đó:

‖𝑆‖: chiều dài vectơ S;

dattract ; wattract ; hrepellent; wrepellent : hệ số khoảng cách và lực hấp dẫn (attractive force) / lực đẩy nhau (repellent force) giữa các cá thể vi khuẩn.

Nếu được thiết kế hợp lý, cơ chế này sẽ có tác dụng phân bố lại việc tìm kiếm nghiệm tối ưu trong không gian nghiệm.

c. Sinh sản

Sau một số bước dịch chuyển chemotaxis, một số vi khuẩn chiếm được vị trí có lượng thức ăn nhiều hơn so với các vi khuẩn khác. Nhờ vậy, vi khuẩn này khỏe hơn (hay phát triển thành dài hơn). Vi khuẩn mạnh khỏe hơn có nhiều khả năng sinh sản hơn. Ngược lại, các vi khuẩn yếu hơn ít khả năng sinh sản và chết dần.

Trong thuật toán BFO, vi khuẩn mạnh khỏe hơn là các cá thể vi khuẩn nằm trong vùng không gian nghiệm ứng với giá trị hàm mục tiêu lớn hơn. Ngược lại, vi khuẩn yếu là các cá thể nằm trong vùng có giá trị hàm mục tiêu nhỏ (xét bài toán tìm cực đại). Việc cho phép các vi khuẩn trong vùng thuận lợi hơn này sinh sản chính là việc tăng cường tìm kiếm trong vùng không gian nghiệm thuận lợi. Để giữ cho tổng số vi khuẩn trong tập hợp không đổi, cần lựa chọn sao cho số vi khuẩn sinh sản bằng số vi khuẩn chết đi sau mỗi vòng lặp. Như vậy, quá trình này sẽ đẩy nhanh tốc độ tìm kiếm giá trị tối ưu trong

các vùng nhiều khả năng xuất hiện giá trị tối ưu hơn và ngược lại, giảm quan tâm hoặc thậm chí bỏ qua các vùng trong không gian tìm kiếm mà tại đó ít có khả năng xuất hiện giá trị tối ưu.

Điểm hạn chế của quá trình sinh sản này là một số cá thể vi khuẩn thực tế nằm trong vùng hấp dẫn của giá trị tối ưu cần tìm nhưng vẫn bị tiêu diệt trước khi cá thể này tiến tới gần giá trị tối ưu. Vì vậy, miền không gian tìm kiếm ứng với các cá thể này có thể không được tìm kiếm kỹ lưỡng. Hạn chế này cần được lưu ý trong quá trình xây dựng và sử dụng thuật toán.

d. Loại trừ và phân tán

Trong tự nhiên, có nhiều trường hợp vì những biến đổi bất thường của môi trường ở một khu vực nào đó, chẳng hạn như việc thay đổi nhiệt độ, nhiều vi khuẩn trong một vùng này bị tiêu diệt. Ngược lại, khi có các điều kiện thuận lợi cho việc sinh sôi ở một vùng khác trong không gian, một lượng vi khẩn mới phát sinh và phát triển ở đây. Hiện tượng này cũng có thể được sử dụng trong thuật toán BFO, theo đó, trong mỗi thế hệ, tập hợp vi khuẩn trải qua quá trình loại trừ và phân tán.

Loại trừ, đơn giản là việc loại bỏ một số vi khuẩn ra khỏi tập hợp vi khuẩn. Các vi khuẩn bị loại bỏ được lựa chọn một cách ngẫu nhiên. Ngược lại, một số lượng tương tự các vi khuẩn được thêm vào tập hợp và được đặt vào các vị trí bất kỳ (ngẫu nhiên). Thực tế, quá trình này giúp thuật toán tránh được việc bị hút vào các giá trị tối ưu cục bộ mà không thoát ra được (hiện tượng Premature Convergence). Đồng thời, thông qua quá trình này, tập hợp vi khuẩn có thể ngẫu nhiên thực hiện việc tìm kiếm ở các vùng của không gian tìm kiếm mà trước đó chưa có cá thể vi khuẩn nào tồn tại. Như vậy, thông qua quá trình này, khả năng tất cả các vùng của không giam nghiệm, trong đó có vùng chứa giá trị tối ưu, được dò tìm đã được tăng lên đáng kể. Theo đó, xác suất tìm được

giá trị (gần đúng) tối ưu được đảm bảo và thuật toán hiệu quả hơn nhiều so với các phương pháp Gradient truyền thống.

4.2.4.3 Các hạn chế và bổ sung của thuật toán (BFO)

Qua việc thử nghiệm với nhiều hàm đa mô hình với độ phức tạp khác nhau, các nhà khoa học nhận thấy nhược điểm cơ bản của thuật toán BFO là khả năng tìm kiếm giá trị tối ưu giảm mạnh khi số chiều của không gian tìm kiếm hoặc độ phức tạp của bài toán tăng lên.

Để giải quyết các vấn đề này, nhiều sửa đổi đối với thuật toán BFO cổ điển đã được đề xuất nhằm nâng cao hiệu quả tìm kiếm.

Tripathy et al. [61] đề xuất thuật toán BFO trong đó áp dụng 2 thay đổi là:

- Giá trị tối ưu ở mỗi vị trí được sử dụng thay vì giá trị trung bình của tất cả các bước.

- Khoảng cách từ mỗi vi khuẩn tới vi khuẩn ứng với nghiệm số tốt nhất đã

Một phần của tài liệu Nghiên cứu lý thuyết dự đoán quỹ đạo trôi dạt và tính toán tuyến đường tìm kiếm tối ưu cho phương tiện gặp nạn trong vùng biển ninh thuận kiên giang (Trang 111 - 175)