Thuật toán tối ưu bầy đàn (PSO)

Một phần của tài liệu Một số phương pháp nâng cao độ chính xác dự báo trong mô hình chuỗi thời gian mờ. (Trang 41 - 44)

PSO được đề xuất bởi Kennedy và Eberhart [71] vào năm 1995 là thuật toán tìm kiếm ngẫu nhiên dựa trên việc mô phỏng hành vi và sự tương tác của bầy chim

hay đàn cá tìm nguồn thức ăn. Mỗi con chim đại diện cho một cá thể trong quần thể gồm Pmax cá thể và được đặc trưng bởi hai thành phần là vị trí và vận tốc. Mỗi cá thể đại diện cho một giải pháp tiềm năng, được đánh giá thông qua hàm mục tiêu (fitness function). Ban đầu PSO được khởi tạo với vector vị trí và vector vận tốc một cách ngẫu nhiên. Sau đó trong mỗi bước lặp của thuật toán, vector vận tốc 𝑉𝑖𝑑 = [𝑣𝑖𝑑,1, 𝑣𝑖𝑑,2, … , 𝑣𝑖𝑑,𝑛] và vị trí 𝑋𝑖𝑑 = [𝑥𝑖𝑑,1, 𝑥𝑖𝑑,2, … , 𝑥𝑖𝑑,𝑛] của mỗi cá thể id sẽ được cập nhật theo công thức (1.16) và (1.17). Cũng tại mỗi bước lặp (mỗi lần di chuyển trong không gian n chiều), mỗi cá thể chịu ảnh hưởng bởi hai thông tin: Thông tin thứ nhất là vị trí tốt nhất mà nó đạt được cho tới thời điểm hiện tại, gọi là 𝑃𝑏𝑒𝑠𝑡_𝑖𝑑= [ 𝑝𝑖𝑑,1, 𝑝𝑖𝑑,2, … , 𝑝𝑖𝑑,𝑛]. Thông tin thứ hai là vị trí tốt nhất trong tất cả quá trình tìm kiếm của các cá thể trong quần thể từ trước cho tới thời điểm hiện tại, gọi là 𝐺𝑏𝑒𝑠𝑡.

Minh họa việc cập nhật vị trí và vận tốc của mỗi cá thể 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 như chỉ ra trong Hình 1.11.

𝑉𝑖𝑑𝑘+1 = 𝜔𝑘∗ 𝑉𝑖𝑑𝑘 + 𝐶1∗ 𝑅1() ∗ (𝑃𝑏𝑒𝑠𝑡_𝑖𝑑 − 𝑥𝑖𝑑𝑘) + 𝐶2∗ 𝑅2() ∗ (𝐺𝑏𝑒𝑠𝑡 − 𝑥𝑖𝑑𝑘) (1.16)

𝑥𝑖𝑑𝑘+1 = 𝑥𝑖𝑑𝑘 + 𝑣𝑖𝑑𝑘+1 (1.17)

𝜔𝑘 = 𝜔𝑚𝑎𝑥 −𝑘 ∗ ( 𝜔𝑚𝑎𝑥 − 𝜔𝑚𝑖𝑛) 𝑖𝑡𝑒𝑟_𝑚𝑎𝑥

(1.18)

Hình 1.11:Đồ thị minh họa một điểm tìm kiếm bằng PSO Vị trí tốt nhất 𝑃𝑏𝑒𝑠𝑡_𝑖𝑑 của mỗi cá thể id được cập nhật như sau:

𝑃𝑏𝑒𝑠𝑡_𝑖𝑑𝑘+1 = 𝑓(𝑥) = { 𝑃𝑏𝑒𝑠𝑡_𝑖𝑑

𝑘 , nếu fitness(𝑥𝑖𝑑𝑘+1) > 𝑃𝑏𝑒𝑠𝑡_𝑖𝑑𝑘

fitness(𝑥𝑖𝑑𝑘+1), nếu fitness(𝑥𝑖𝑑𝑘+1) ≤ 𝑃𝑏𝑒𝑠𝑡_𝑖𝑑𝑘 (1.19) Giá trị 𝐺𝑏𝑒𝑠𝑡 tại lần lặp thứ k là: 𝐺𝑏𝑒𝑠𝑡 = min (𝑃𝑏𝑒𝑠𝑡_𝑖𝑑𝑘 )

Luận án sử dụng thuật toán tối ưu PSO được cải tiến bởi [72] bằng việc đưa thêm vào hệ số rằng buộc K gọi là tối ưu rằng buộc (Constrained Particle Swarm Optimization - CPSO). Trong thuật toán PSO cải tiến sự thay đổi vận tốc của các cá thể trong phương trình (1.16) được thay thế bởi phương trình (1.20) sau đây :

Hệ số K được xác định là K= 2

|2−𝜑−√𝜑2−4∗𝜑|;

Vị trí mới của mỗi cá thể id được thay đổi bằng cách thêm vận tốc ở phương trình (1.20) vào vị trí hiện tại như sau:

𝑥𝑖𝑑𝑘+1 = 𝑥𝑖𝑑𝑘 + 𝑣𝑖𝑑𝑘+1 (1.21) Trong đó; 𝑋𝑖𝑑𝑘 và 𝑉𝑖𝑑𝑘 là vị trí và vận tốc hiện tại của cá thể id tại bước lặp k; Giới hạn của vận tốc được xác định trong miền [−𝑉𝑚𝑎𝑥, 𝑉𝑚𝑎𝑥], trong đó 𝑉𝑚𝑎𝑥 là một hằng số được xác định trước bởi người dùng;

ω là trọng số quán tính thay đổi theo công thức (1.18)

✓ 𝑐1 và 𝑐2 là hai nhân tố học dùng kiểm soát mức độ ảnh hưởng của các thành phần xã hội và nhận thức và được xác định giống như công trình [72] là: 𝑐1 = 𝑐2=

2.05, và φ = 𝑐1+ 𝑐2= 4.1. Khi đó giá trị của hệ số K = 0.7298.

✓ R1 () và R2 () là hai hàm nhận các giá trị ngẫu nhiên trong khoảng [0, 1] Thuật toán PSO [71, 72] được tóm tắt thành các bước bằng việc giảm thiểu hàm mục tiêu f như sau:

Thuật toán 1.1: Thuật toán PSO cơ bản

Đầu vào: Số lượng Pmax cá thể trong quần thể

Đầu ra: Giá trị tối ưu 𝐺𝑏𝑒𝑠𝑡

Thiết lập: K=0.7298, 𝜔𝑚𝑖𝑛, 𝜔𝑚𝑎𝑥,𝑉𝑚𝑎𝑥 và số lần lặp tối đa 𝑖𝑡𝑒𝑟_𝑚𝑎𝑥

Begin

Khởi tạo: vị trí ban đầu, vận tốc ban đầu và vị trí tốt nhất 𝑃𝑏𝑒𝑠𝑡_𝑖𝑑 của mỗi cá thể.

▪ Vị trí của cá thể id (id = 1,2, …, Pmax); 𝑋𝑖𝑑 = [𝑥𝑖𝑑,1, 𝑥𝑖𝑑,2, … , 𝑥𝑖𝑑,n] ▪ Vận tốc của cá thể id: 𝑉𝑖𝑑 = [𝑣𝑖𝑑,1, 𝑣𝑖𝑑,2, … , 𝑣𝑖𝑑,n]

▪ Ban đầu đặt 𝑃𝑏𝑒𝑠𝑡_𝑖𝑑 = 𝑋𝑖𝑑 = [𝑥𝑖𝑑,1, 𝑥𝑖𝑑,2, … , 𝑥𝑖𝑑,n]

while(iter iter_max) do

foreachid (1≤ 𝑖𝑑 ≤ Pmax)

▪ Tínhgiá trị hàm mục tiêu của mỗi cá thể id: f(𝑥𝑖𝑑)

▪ Tínhgiá trị 𝑃𝑏𝑒𝑠𝑡_𝑖𝑑 của mỗi cá thể id theo công thức (1.19)

End for

▪ Cập nhật 𝐺𝑏𝑒𝑠𝑡 theo giá trị hàm mục tiêu.

foreachid (1≤ 𝑖𝑑 ≤ Pmax)

▪ Cập nhật vận tốc của cá thể id theo công thức (1.20) ▪ Cập nhật vị trí của cá thể id theo công thức (1.21)

End for

Cập nhật 𝜔𝑘 theo công thức (1.18)

Return 𝐺𝑏𝑒𝑠𝑡

End.

Một phần của tài liệu Một số phương pháp nâng cao độ chính xác dự báo trong mô hình chuỗi thời gian mờ. (Trang 41 - 44)