Thuật toán PSO

Một phần của tài liệu Luận án Tiến sĩ Toán học: Một số phương pháp gần đúng giải bài toán lập lịch với tài nguyên giới hạn (Trang 37 - 39)

Tối ưu bầy đàn (Particle Swarm Optimization - PSO) [23],[33],[56],[59], [CT2] là một thuật toán tiến hóa. Tương tự như các thuật toán tiến hóa khác, PSO sẽ tiến hành tìm kiếm dựa trên quần thể, ban đầu quần thể được khởi tạo một cách ngẫu nhiên với số cá thể xác định. Tuy nhiên PSO khác với các thuật toán tiến hóa khác là mỗi cá thể trong quần thể được xác định bởi hai tham số cơ bản là vector vị trí (đại diện cho kinh nghiệm của cá thể qua các thế hệ) và vector vận tốc (vector dịch chuyển - đại diện cho kinh nghiệm của quần thể qua các thế hệ). Mỗi cá thể sẽ dịch chuyển trong không gian tìm kiếm với một vận tốc riêng, sau mỗi thế hệ các cá thể sẽ dịch chuyển theo hướng về vị trí tốt nhất của chính cá thể đó trong quá khứ và vị trí tốt nhất của quần thể và sau mỗi thế hệ các cá thể sẽ hướng tới các vùng tìm kiếm tốt hơn trong không gian tìm kiếm. Trong quá trình tìm kiếm các cá thể sẽ cập nhật vector dịch chuyển và vector vị trí theo giá trị tốt nhất của chính cá thể đó trong quá khứ và vị trí tốt nhất của quần thể theo công thức sau:

vik+1 = 𝜔.vik+c1.rand1().(pbesti – xik) + c2.rand2().(gbest – xik) (1.10)

xik+1 = xik + vik+1 (1.11)

Trong đó:

- vik+1: là vector dịch chuyển của cá thể i ở thế hệ k+1; - vik: là vector dịch chuyển của cá thể i ở thế hệ k; - xik+1: là vector vị trí của các thể i ở thế hệ k+1; - xik: là vector vị trí của cá thể i ở thể hệ k;

- pbesti: là vector vị trí tốt nhất của cá thể i tính tới thời điểm hiện tại;

- gbest: là vector vị trí tốt nhất của quần thể tính tới thời điểm hiện tại.

- Các hệ số trong công thức PSO với ý nghĩa như sau:

o : hệ số quán tính;

o c1, c2: là các hệ số gia tốc thể hiện cho đặc trưng về mặt kinh nghiệm của các thể và kinh nghiệm của quần thể.

rand1, rand2: là các hệ số ngẫu nhiên trong đoạn [0,1]

Hình 1.6. Sơ đồ di chuyển của một cá thể i trong PSO

Chi tiết thuật toán PSO được thể hiện như trong Algorithm 1.1 dưới đây.

Algorithm 1.1. PSO

Input: tmax: số thế hệ

Output phương án tốt nhất gbest

1 Begin

2 Pall = Load dữ liệu iMOPSE và khởi tạo quần thể ban đầu

3 t = 0

4 while ( t < tmax )

5 t = t + 1

6 for i=1 to size(Pall) do

7 tính giá trị hàm mục tiêu f(Pi)

8 end for

9 for i = 1 to size(Pall) do

10 if f(Pi) < f(fitnessi) then 11 pbesti = Pi

12 f(pbesti) = f(Pi)

13 end if 14 end for

15 for i=1 to size(Pall) do

16 gbest = Pi

17 f(gbest) = f(Pi) 18 end for

19 for i=1 to size(Pall) do

20 cập nhật vector dịch chuyển theo (1.3) 21 Cập nhật vector vị trí theo (1.4) 22 end for 23 end while 24 return gbest 25 end Trong đó: - f: objective function 𝑐1× 𝑟1× (𝑝𝑏𝑒𝑠𝑡𝑖 − 𝑥𝑖𝑘) 𝑐1× 𝑟1× (𝑔𝑏𝑒𝑠𝑡 − 𝑥𝑖𝑘) 𝑤 × 𝑣𝑖𝑘 𝑝𝑏𝑒𝑠𝑡𝑖− 𝑥𝑖𝑘 𝑔𝑏𝑒𝑠𝑡− 𝑥𝑖𝑘 𝑥𝑖𝑘 𝑝𝑏𝑒𝑠𝑡𝑖 𝑔𝑏𝑒𝑠𝑡 𝑥𝑖𝑘+1

- fitnessi: Giá trị tốt nhất của cá thể thứ i trong quần thể từ thế hệ đầu tiên cho đến thế hệ hiện tại.

Một phần của tài liệu Luận án Tiến sĩ Toán học: Một số phương pháp gần đúng giải bài toán lập lịch với tài nguyên giới hạn (Trang 37 - 39)