2.4.3.1 Định nghĩa
Trong PSO, Mô hình bài toán tối ưu tổng quát luôn được nghiên cứu trong không gian n chiều Rn .
Định nghĩa 1: Trong PSO, mỗi cá thể Pi được mô hình như một cá thể của
đàn chim. Ở mỗi thế hệ, các cá thể Pi có một vài vị trí k i
x trong không gian tìm kiếm n
R và xik+1 sẽ cho biết vị trí của cá thể thứ k sau khi được cập nhật lại thế hệ sau đó. Mỗi cá thể biểu diễn một lời giải của bài toán nhưng chưa phải là lời giải tối ưu. Tùy từng mô hình bài toán mà mỗi cá thể sẽ được biểu diễn ở các dạng cấu trúc dữ liệu khác nhau như dạng cây , dạng chuỗi số hay dạng mã nhị phân … Mỗi lời giải trong bài toán có thể được coi như là một vị trí trong không gian đó. Trong quá trình giải quyết bài toán, một cá thể tương với vị trí của nó sẽ biểu diễn một phương án tiềm năng. Hình 2.7 biểu diễn các cá thể trong không gian tìm kiếm 2 chiều.
Hình 2.7: Bầy đàn với 10 cá thể trong không gian tìm kiếm 2 chiều
Định nghĩa 2: Trong PSO, một bầy đàn P = (P P1, 2,...,Pn) là một tập các cá thể (một tập các lời giải của bài toán). Các cá thể có thể có thông tin về toàn bộ quần thể hoặc thông tin về một phần quần thể. Thông tin đó thường là thông tin về cá thể tốt nhất trong quần thể, nó được đánh giá qua giá trị của hàm mục tiêu.
Định nghĩa 3: Vận tốc của cá thể vik = (u u1, 2,...,un) là một vector làm thay đổi (di chuyển) vị trí của các thể Pi ở thế hệ k. Về mặt toán học, quan hệ vị trí – vận tốc có mối quan hệ như sau:
1 1
k k k
i i i
x + = x + v + (2.1)
Vận tốc của cá thể sẽ bị ảnh hưởng bởi chính cá thể và các cá thể hàng xóm thông qua các công thức sau đây
1 k i v + = 1(individual_experience) + 2(global_experience) (2.2) 1 k i v + = wvik + 1(experiencei) + 2(experienceg) (2.3) 1 k i
v + = wvik + c1.rand1.(pbesti – xik) + c2.rand2.(gbest –xik) (2.4) Hình 2.8 biểu diễn quan hệ vị trí – vận tốc trong không gian hai chiều với giá trị k 1
i
v + được cập nhật theo kinh nghiệm bay tốt nhất của cá thể trong quá khứ và kinh nghiệm bay tốt nhất của cá thể tốt nhất trong quần thể. Nó sẽ tiến hành thay đổi (điều chỉnh hướng bay) tới vị trí mới k 1
i
x +
Hình 2.8: Quan hệ vị trí – vận tốc trong không gian 2 chiều
Mỗi cá thể sẽ có một vận tốc riêng, nó dùng để tính vị trí tiếp theo của cá thể trong không gian lời giải của bài toán. Mỗi cá thể sẽ di chuyển trong không gian bài toán để tìm ra lời giải tối ưu. Tùy vào bài toán cụ thể mà hàm vận tốc sẽ được biểu diễn phù hợp.
Định nghĩa 4: Lân cận (neighbourhood) xác định cấu trúc xã hội của bầy đàn và chỉ ra các nhóm cá thể nên tương tác. Với cùng một lân cận, các cá thể sẽ tương tác, giao tiếp và chia sẻ thông tin với nhau. Để hình thành một lân cận, chúng ta không thể giới hạn bằng khoảng cách vật lý giữa các cá thể; trong thực thế, chúng được xác định bằng các nhãn của các cá thể trong PSO.
Ví dụ: 9 cá thể được liệt kê với các nhãn P1, P2, P3, P4, P5, P6, P7, P8, P9. Liên quan đến khoảng cách vật lý, (P1, P2, P3) là lân cận với kích thước 3, tương tự ta có các lân cận (P4, P5, P6), (P7, P8, P9)
Hình 2.9: Một bầy đàn toàn cục và lân cận cục bộ
Chú ý:
+ Các lân cận có thể chồng lên nhau nhau và một cá thể có thể thuộc nhiều lân cận.
+ Các cấu trúc liên kết theo dạng hình sao (star), dạng vòng (ring) và bánh xe (wheel) là các cấu trúc lân cận thường được sử dụng:
Hình 2.10: Các topology lân cận đơn giản
Trong ngữ cảnh của giải thuật PSO, có hai thuật ngữ thường được sử dụng là “local” và “global” trong đó “Local” xem như một lân cận cá nhân trong khi đó “global” - một thực thể bầy đàn được xem như là lân cận lớn nhất.
Trong hình 2.9, chúng ta có ba lân cận cục bộ.Ví dụ khác: theo topology ở hình 2.10, chúng ta có các cá thể P1, P2, P3, P4, P5 hình thành các lân cận với kích
thước 3 thì tổng số các lân cận là 5 với { P1, P2, P3), {P2, P3, P4}, {P3, P4, P5}, { P4, P5, P1} và { P5,P1, P2}. Cá thể trong lân cận trên sẽ lấy thông tin từ hai cá thể trong cùng lân cận có kết nối trực tiếp tới nó.
Cấu trúc lân cận khác nhau có thể ảnh hưởng trực tiếp tới hiệu năng của bầy đàn. Chúng xác định cách thức truyền thông giữa các cá thể do đó ảnh hưởng trực tiếp đến sự hội tụ của các cá thể. Tức là khi nào và làm thế nào các cá thể có thể liên kết với nhau, từ đó đạt đến các trạng thái ổn định và dừng tiến hóa phương án. Các cá thể có thể hội tụ trên các tối ưu cục bộ khác nhau hoặc thời gian khác nhau với các topology lân cận khác nhau.
Trong topology hình sao như hình 2.8a, tất cả các cá thể bị ảnh hưởng bởi một vị trí tốt nhất toàn cục trong mỗi lần lặp thế hệ, và di chuyển theo hướng cục bộ, vì vậy chúng có xu hướng hội tụ nhanh chóng tới tốt nhất toàn cục.
Trong topology dạng vòng như hình 2.8b, các phân đoạn lân cần chồng chéo lên nhau, vị vậy sự hội tụ có thể ảnh hưởng từ lân cận này tới lân cận khác và kéo theo tất cả các cá thể. Bằng cách dần dần lan rộng thông tin, sự hội tụ trên mạng vòng sẽ chậm hơn mạng hình sao.
Đối với bầy đàn có topology dạng bánh xe quay, tồn tại một và chỉ một cá thể trung tâm phục vụ như bộ đệm. Cá thể trung tậm sẽ thu thập và so sánh vị trí của tất cả các cá thể, tìm ra vị trí tốt nhất và di chuyển hướng tới vị trí tốt nhất. Tất cả các cá thể khác sẽ lấy thông tin từ cá thể trung tâm và bắt đầu di chuyển hướng tới vị trí tương tự. Bởi ảnh hượng bộ nhớ đêm, một topology dạng bánh xe sẽ bảo đảm việc hội tụ lâu hơn một chút và ngăn cho bầy đàn hội tụ quá nhanh trên tối ưu cục bộ.
Định nghĩa 5: Hàm mục tiêu (objective function) hay hàm thích nghi (fitness
function) hay hàm đánh giá (evaluation function) F(x) là hàm mô tả yêu cầu của bài toán cần đạt tới. Hàm này dùng để đánh giá các lời giải của bài toán. Tùy vào bài toán khác nhau, hàm mục tiêu sẽ khác nhau. Bằng cách đánh giá và so sánh giải pháp hiện tại với giải pháp tốt nhất, các cá thể sẽ xác định bước đi tiếp theo. Ba giải pháp (vị trí) tốt nhất là: tốt nhất cá nhân (pbest), tốt nhất toàn cục (gbest) và tốt nhất cục bộ (lbest).
2.4.3.2 Mô tả thuật toán
Quần thể ban đầu gồm n cá thể (mỗi cá thể là một lời giải cho bài toán, nhưng chưa tối ưu). Mỗi cá thể thứ i trong quần thể được biểu diễn bởi một vector
i
x - m chiều (giá trị m tùy thuộc vào mỗi bài toán khác nhau và cách xử lý khác
nhau) và một vector vận tốc v ii( = 1.. )n . Hàm mục tiêu của bài toán là
: m
f R ® R .
Thuật toán
Bước 1: Khởi tạo quần thể với việc khởi tạo vector vị trí xi và vector vận tốc
( 1.. )
i
v i = n cho cá thể thứ i, i = 1,.., n (cho mỗi cá thể Pi trong quần thể P(n)) Bước 2: Khởi tạo các thông tin ban đầu về vị trí tốt nhất của các cá thể và cả quần thể
+ pbesti = xi (khởi tạo vị trí tốt nhất của cá thể thứ i bằng vị trí được khởi
tạo hiện tại)
+ gbest = min (f(xi)), i = 1,..n (khởi tạo vị trí tốt nhất của cả quần thể bằng vị trí nhỏ nhất trong tất cả các vị trí của tất cả các cá thể được khởi tạo) Bước 3: Bước lặp với điều kiện lặp xác định trước (sau một số lần lặp cho trước hoặc sau một số lần lặp mà không thu được kết quả tốt hơn).
for i=1:n (với mỗi cá thể)
vik+1 = w.vik + c1.rand1.(pbesti – xik) + c2.rand2.(gbest – xik) (cập nhật lại chuyển động ở thế hệ tiếp theo theo chuyển động tốt nhất hiện tại của chính cá thể và theo chuyển động của cá thể tốt nhất trọng quần thể)
xik+1= xik + vik+1(cập nhật lại vị trí theo vị trí hiện tại và theo hướng chuyển động mới nhất)
if f(xi) < f (pbesti) then pbesti = xi (cập nhật lại vị trí tốt nhất của mỗi cá thể bằng việc so sánh với vị trí hiện tại)
if f(xi) < f (gbest) then gbest = xi (cập nhật lại ví trí tốt nhất của quần thể bằng việc so sánh với cá thể tốt nhất hiện tại)
+ Kiểm tra điều kiện kết thúc bước lặp, nếu thỏa mãn chuyển sang B4, còn không tiếp tục B3
Bước 4: Kết thúc, trả về giá trị tốt nhất gbest
Ý nghĩa các tham số trong thuật toán: + w là hằng số quán tính;
+ c1 và c2 là hệ số gia tốc, hằng số mô tả có bao nhiêu cá thể hướng về vị trí tốt, đặc trưng cho kinh nghiệm và tính xã hội;
+ rand1 và rand2 là hai vector ngẫu nhiên, lấy giá trị trong đoạn [0,1], nó được sinh ra tại mỗi bước lặp;
+ pbesti là vị trí tốt nhất cho đến thời điểm hiện tại của cá thể thứ i trong quần thể;
+ gbest là vị trí tốt nhất của cả quần thể tại thời điểm hiện tại
Chú ý: Tùy vào từng bài toán cụ thể mà cách biểu diễn cá thể sẽ khác đi, khi đó cách biểu diễn hàm vận tốc và vị trí của cá thể có thể sẽ khác nhau.
2.4.3.3 Xây dựng giải thuật PSO
a/ Mã hóa cá thể: Một cá thể trong PSO biểu diễn một phương án của bài
toán. Tập các cá thể tạo nên một quần thể, là không gian lời giải của bài toán mà ta sẽ tìm kiếm. Tùy thuộc vào từng yêu cầu của bài toán cụ thể, người ta sẽ xây dựng cách biểu diễn cá thể phù hợp với bài toán. Trong thực tế hiện nay, người ta thường sử dụng một số các dạng mã hóa sau đây:
- Mã hóa nhị phân: Mỗi cá thể là một chuỗi nhị phân, mỗi bit trong nó có thể biểu diễn một đặc tính của nghiệm.
Ví dụ: Có cá thể 1 và 2 có chiều dài là 4, khi đó ta biểu diễn cá thể 1: 1101 vàcá thể 2 : 1001
- Mã hóa hoán vị: Mã hóa hoán vị có thể được sử dụng trong các bài toán liên quan đến thứ tự như bài toán TSP hay bài toán lập lịch.Trong mã hóa hoán vị, mỗi cá thể được biểu diễn là một hoán vị của n số tự nhiên cho phép biểu diễn một hành trình.
Ví dụ: cá thể 1: 1 5 4 3 2 tương ứng với một hành trình
b/ Khởi tạo quần thể: Tùy vào từng bài toán cụ thể và kích thước quần thể ban đầu mà ta có các phương pháp khởi tạo khác nhau. Tuy nhiên trong GA hay PSO người ta thường dùng phương pháp khởi tạo ngẫu nhiên.
c/ Xác định hàm đánh giá (hàm thích nghi, hàm mục tiêu): Xuất phát từ
yêu cầu của từng bài toán, người ta xác định công thức hàm đánh giá. Thông thường đó chính là hàm mục tiêu của bài toán tối ưu.
d/ Xác định hàm vận tốc v: Chuyển động của mỗi cá thể là tổng hợp của 3 chuyển động
vik+1 = w.vik + c1.rand1.(pbesti – xik) + c2.rand2.(gbest – xik)
Trong đó:
- w.vik : chuyển động hiện tại,
- c1r1.(pbesti – xi) : chuyển động theo vị trí tốt nhất trong quá khứ (của cá thể đó). - c2r2.(gbest - xi) : chuyển động theo vị trí tốt nhất của cả quần thể.
Hình 2.11 dưới đây minh hoạt chuyển động và cập nhật của cá thể: cá thể sẽ chuyển động với vị trí mới xik+1 sau khi nó tiến hành cập nhật hướng bay theo vận tốc vik+1 và vị trí hiện tại
Hình 2.11:Chuyển động của cá thể
e/ Cập nhật vị trí tốt nhất cho cả quần thể: Biến gbest (global best) là biến đại diện cho cả quần thể đóng vai trò như là biến môi trường của quần thể. Có hai cách để cập nhật giá trị mới cho gbest như sau:
Cập nhật trong từng bước lặp
Begin + Tính vị trí mới của cá thể Pi + Cập nhật giá trị tốt nhất của cá thể Pi + Cập nhật giá trị gbest End Cập nhật sau từng vòng lặp For each Pi P(n) Begin + Tính vị trí mới của cá thể Pi + Cập nhật giá trị tốt nhất của cá thể Pi End + Cập nhật giá trị gbest