2.2. CÁC PHƯƠNG PHÁP ĐÃ SỬ DỤNG GIẢI BÀI TOÁN ORPD
2.2.5. Phương pháp PSO (Particle Swarm Optimization)[12, 2]
Thuật toán PSO (Particle Swarm Optimization) – tối ƣu bầy đàn (tạm dịch) là một trong những thuật toán xây dựng dựa trên khái niệm trí tuệ bầy đàn để tìm kiếm lời giải cho các bài toán tối ƣu hóa trên một không gian tìm kiếm nào đó. PSO là một dạng của các thuật toán tiến hóa quần thể đã được biết đến trước đây như giải thuật di truyền (GA), thuật toán đàn kiến (ACO). Tuy vậy PSO khác với GA ở chỗ nó thiên về sử dụng sự tương tác giữa các cá thể trong một quần thể để khám phá không gian tìm kiếm. PSO là kết quả của sự mô hình hóa việc đàn chim bay đi tìm kiếm thức ăn cho nên thường được xếp vào loại thuật toán có sử dụng trí tuệ bầy đàn. PSO đƣợc giới thiệu vào năm 1995 tại một hội nghị IEEE bởi James Kennedy và Rusell C.Eberhart.
Thuật toán có nhiều ứng dụng quan trọng trong tất cả các lĩnh vực mà ở đó đòi hỏi phải giải quyết các bài toán tối ƣu hóa. Để hiểu rõ thuật toán PSO ta hãy xem một ví dụ đơn giản về quá trình tìm kiếm thức ăn của một đàn chim. Không gian tìm kiếm thức ăn lúc này là toàn bộ không gian ba chiều mà chúng đang sinh sống.
Tại thời điểm bắt đầu tìm kiếm cả đàn bay theo một hướng nào đó, có thể là rất ngẫu nhiên. Tuy nhiên sau một thời gian tìm kiếm một số cá thể trong đàn bắt đầu tìm ra đƣợc nơi có chứa thức ăn. Tùy theo số lƣợng thức ăn vừa tìm kiếm, mà cá thể gửi tín hiệu đến các cá thể đang tìm kiếm ở vùng lân cận, tín hiệu này nhanh chóng lan truyền trên toàn quần thể. Dựa vào thông tin nhận đƣợc mỗi cá thể sẽ điều chỉnh hướng bay và vận tốc theo hướng về nơi có nhiều thức ăn nhất. Cơ chế này giúp cả đàn chim tìm ra nơi có nhiều thức ăn nhất trên không gian tìm kiếm vô cùng rộng lớn.
Trong thuật toán PSO, quỹ đạo của mỗi cá thể trong không gian tìm kiếm đƣợc hiệu chỉnh bằng cách thay đổi vận tốc của từng cá thể, thông qua kinh nghiệm bay của nó và kinh nghiệm bay của những cá thể khác trong không gian tìm kiếm.
Vector vị trí và vector vận tốc của một cá thể thứ i trong không gian đa chiều là:
xi = (x11; x12; …; xn); vi = (v11; v12; …; vn) (2.24)
Thông qua cách đặt hàm định nghĩa, chúng ta sẽ tìm ra đƣợc giá trị phù hợp nhất tại thời điểm t là gbest = (p11; p12; …; pn). Sau đó, vận tốc mới và vị trí mới của các cá thể đƣợc tính toán bằng 2 biểu thức sau [31]:
) (
. ) (
. 1 ( ) ( ) 2 2 ( ) ( )
1 ) ( ) 1
( k
id k id k
id k id k
id k
id v c rand pbest x c rand gbest x
v (2.25)
) 1 ( ) ( ) 1
(k idk idk
id x v
x (2.26)
Trong đó:
c1, c2 là những hằng số gia tốc; rand1 và rand2 là dạng tạo số ngẫu nhiên trong đoạn [0;1] (2 hàm này có mối liên hệ đồng dạng với nhau).
Phần đầu tiên trong công thức (2.25) đại diện cho vận tốc trước đó, để tạo đà cho cá thể tiếp tục đi lang thang trong không gian tìm kiếm. Thành phần thứ 2, đƣợc xem là thành phần Cognitive, đại diện cho suy tính nhân tạo của các cá thể. Chính thành phần này sẽ hướng các cá thể đến vị trí tốt nhất của nó. Thành phần thứ 3 đƣợc xem là thành phần xã hội, nó đại diện cho hiệu ứng colaborative của cá thể trong quá trình tìm kiếm lời giải tối ƣu toàn cục, chính thành phần xã hội sẽ lôi kéo các cá thể hướng đến giá trị tối ưu toàn cục.
Ban đầu các cá thể đƣợc tạo ra với 1 vị trí ngẫu nhiên, sau đó các vận tốc ngẫu nhiên đƣợc ấn định cho từng cá thể. Sự phù hợp của các cá thể đƣợc ƣớc lƣợng thông qua hàm mục tiêu. Ở mỗi thời điểm, vận tốc của từng cá thể đƣợc tính toán thông qua vị trí trong lần ƣớc lƣợng tới đƣợc cập nhật lại bằng (2.26). Sau mỗi khoảng thời gian nếu các cá thể tìm ra vị trí tối ưu hơn vị trí trước thì vị trí của nó được lưu vào bộ nhớ.
Giới hạn trên và dưới của mỗi thành phần trong phần tử xid là giới hạn lớn nhất và nhỏ nhất đƣợc đƣa ra của các biến. Vận tốc của mỗi phần tử là giới hạn trong khoảng [-vid max, vid max]; i = 1, …, n và d = 1, …, np. Trong đó, vận tốc lớn nhất và nhỏ nhất của mỗi thành phần i thuộc phần tử d trong khoảng không gian tìm kiếm đƣợc xác định bởi:
) (
* max min
max id id
id R x x
v (2.27)
max
min id
id v
v (2.28)
Trong đó R là hệ số giới hạn vận tốc, thường được chọn trong đoạn [0.1, 0.25].
Thuật toán PSO đƣợc mô tả nhƣ sau:
- Lựa chọn thông số bài toán.
- Thiết lập giá trị vận tốc và vị trí cho mỗi phần tử.
- Ƣớc lƣợng hàm thích hợp cho vị trí mỗi phần tử.
- Khởi tạo giá trị ban đầu cho mỗi phần tử đến vị trí tốt nhất pbestd.
- Khởi tạo vị trí của phần tử với hàm phù hợp nhất đến vị trí tốt nhất toàn cục gbest.
- Trong khi tiêu chuẩn điểm cuối chƣa gặp - Tính vận tốc mới cho mỗi phần tử
- Cập nhật vị trí mới cho mỗi phần tử - Ƣớc lƣợng hàm phù hợp cho mỗi phần tử
- Nếu giá trị phù hợp tốt hơn giá trị phù hợp trong những lần lặp trước, khởi tạo vị trí của phần tử hiện tại nhƣ là giá trị pbestd mới.
- Ngƣợc lại, vị trí phần tử phù hợp với giá trị phù hợp nhất trong những lần lặp trước thì khởi tạo giá trị pbestd mới.
- Chọn vị trí của phần tử phù hợp với giá trị tốt nhất của tất cả các phần tử là gbest mới.
- Kết thúc
Chương 3