Bài toán tối ưu có thể được xem như bài toán tìm kiếm giải pháp tốt nhất trong không gian vô cùng lớn các giải pháp. Khi không gian tìm kiếm nhỏ thì các phương án tối ưu hóa truyền thống có thể thích hợp để giải (như phương pháp tính trực tiếp, phương pháp đồ thị, phương pháp Lagrange …). Tuy nhiên, các phương pháp tối ưu truyền thống thì không phù hợp với miền phổ rộng, không hiệu quả khi khoảng khảo sát quá rộng. Các thuật toán xây dựng trên cơ sở các phương pháp này không đủ mạnh với số ràng buộc và số tham số cần tối ưu quá lớn. Đã có nhiều phương án tiếp cận khác nhau nhằm giải quyết các loại bài toán này, song gần đây việc ứng dụng giải thuật tối ưu hóa bầy đàn (Particle Swarm Optimization - PSO) đã bắt đầu cho thấy được ưu điểm nổi bật [19].
Phương pháp tối ưu bầy đàn 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ưthuật giải di truyền (Genetic algorithm - GA), thuật toán đàn kiến (Ant colony algorithm - ACA). 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 việc mô hình hóa đàn chim bay đi tìm kiếm thức ăn nên nó thường được xếp vào loại thuật toán có sử dụng trí tuệ bầy đàn. Thuật toán này được giới thiệu bởi James Kennedy và Russell C. Eberhart [85] vào năm 1995 tại một hội nghị của IEEE. Thuật toán có nhiều ứng dụng quan trọng trong tất cả các lĩnh vực ở đó đòi hỏi phải giải quyết các bài toán tối ưu hóa. Để hiểu thuật toán PSO, hãy xét 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ể rất ngẫu 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 nơi có thức ăn. Tùy theo số lượng thức ăn vừa tìm được mà cá thể này gửi tín hiệu đến các các cá thể khác ở vùng lân cận. Tín hiệu này được lan truyền trên toàn bộ 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 hướng về nơi có nhiều thức ăn nhất. Cơ chế truyền tin như vậy thường được xem như là một kiểu hình của trí tuệ bầy đàn. 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 [85].
Như vậy, đàn chim đã dùng trí tuệ, kiến thức và kinh nghiệm của cả đàn để nhanh chóng tìm ra nơi chứa thức ăn. Việc mô hình hóa này thường được gọi là quá
trình phỏng sinh học. Thuật toán xây dựng dựa trên việc mô hình hóa các quá trình trong sinh học đượcgọi là thuật toán phỏng sinh học.
Xét bài toán tối ưu của hàm số Q trong không gian hai chiều (S, t). Mỗi vị trí trong không gian là một điểmcó tọa độ hai chiều (S, t). Hàm Q là hàm mục tiêu xác định
trong không gian hai chiều và nhận giá trị thực. Mục đích là tìm rađiểm cực đại của
hàm Q trong miền xác định nào đó của (S, t). Giả sử số lượng thức ăn tại một vị trí tỉ lệ thuận với giá trị của hàm Q tại vị trí đó. Có nghĩa là ở một vị trí, giá trị hàm Q càng
89
lớn thì số lượng thức ăn càng lớn. Việc tìm vùng chứa thức ăn nhiều nhất tương tự với việc tìm vùng chứa điểm cực đại của hàm Q trong không gian tìm kiếm.
PSO được khởi tạo bằng một nhóm cá thể (nghiệm) ngẫu nhiên và sau đó tìm nghiệm tối ưu bằng cách cập nhật các thế hệ. Trong mỗi thế hệ, mỗi cá thể được cập nhật theo hai giá trị tốt nhất. Giá trị thứ nhất là vị trí tốt nhất mà nó từng đạt được cho tới thời điểm hiện tại, gọi là Pbestj. Một nghiệm tối ưu khác mà cá thể này bám theo là nghiệm tối ưu toàn cục Gbest, đó là vị trí tốt nhất mà quần thể này đạt được cho tới thời điểm hiện tại. Nói cách khác, mỗi cá thể trong quần thể cập nhật vị trí theo vị trí tốt nhất của nó và của cả quần thể tính tới thời điểm hiện tại.
Vận tốc và vị trí của mỗi cá thể được tính như sau:
k 1 k k k j j 1 1 bestj j 2 2 best j k 1 k k 1 j j j v w.v c .rand ()(P x ) c .rand ()(G x ) x x v (4. 7) trong đó: xjk: Vị trí của cá thể thứ j tại thế hệ thứ k; vjk: Vận tốc của cá thể thứ j tại thế hệ thứ k; xjk+1: Vị trí của cá thể thứ j tại thế hệ thứ k + 1; vjk+1: Vận tốc của cá thể thứ j tại thế hệ thứ k + 1; Pbestj: Vị trí tốt nhất của cá thểthứ j; Gbest: Vị trí tốt nhất của tất cả các cá thể;
ω: trọngsố quán tính (ωmin= 0,4 và ωmax = 0,9); c1, c2: các hệ số gia tốc, nhận giá trị từ 1,5 đến 2,5;
rand1, rand2: các số ngẫu nhiên nhận giá trị trong khoảng [0, 1].
Giá trị của trọng số quán tính ω sẽ giảm tuyến tính từ 0,9 đến 0,4 tùy thuộc vào số lần lặp xác định trước.
Các nhà nghiên cứu đã tìm ra rằng giá trị ω lớn cho phép các cá thể thực hiện mở rộng phạm vi tìm kiếm, giá trị ω nhỏ làm tăng sự thay đổi để nhận được giá trị tối ưu địa phương. Bởi vậy, có thể đạt được hiệu năng tốt nhất khi sử dụng giá trị ω lớn nhất (chẳng hạn 0,9) ở thời điểm bắt đầu và sau đó giảm dần dần cho đến khi đưa ra được giá trị ω nhỏ nhất (0,4).