CÁC PHƯƠNG PHÁP TÌM NGHIỆM CỦA BÀI TOÁN QUY HOẠCH PHI TUYẾN
3.4.3 Phương pháp tìm kiếm trực tiếp (Hook e Jeeves Wood)
- Wood)
Phương pháp này rất độc đáo và hiệu quả. Ý tưởng của phương pháp là: xuất phát từ một điểm tùy ý gọi là điểm cơ sở, việc tìm kiếm được thực hiện quanh điểm cơ sở nhằm tìm được điểm tốt hơn. Nếu thành công thực hiện bước chuyển dời điểm cơ sở theo hướng giảm của hàm f(x) tới điểm mới. Trái lại quay lại điểm cơ sở trước đó hoặc giảm độ dài bước dò tìm. Thuật toán gồm các bước sau:
A: Bước khởi sự: Chọn b(1) = (x1, . . . , xn)T làm điểm cơ sở, ∆xj > 0
làm độ dài bước cho biến xj.
B: Dò tìm quanh điểm cơ sở:
1. Tính fb = f(b(1)), giá trị của biến bắt đầu từ x1 bằng cách thêm vào độ dài bước∆x1.Tính f(b(1)+∆x1e1).Nếu f(b(1)+∆x1e1) < f(b(1))thì thayb(1) := x(1)+∆x1e1, fb = f(b(1)),chuyển sang bước tiếp theo
2. Tính f(b(1) − ∆x1e1). Nếu f(b(1) − ∆x1e1) < f(b(1)) thì thay
b(1)) = b(1) − ∆x1e1, fb = f(b(1)), nếu hai bước trên không làm giảm giá trị của hàm thì b(1) không thay đổi. Trở lại bước 1. thực
hiện với x2, . . . , xn. Khi tất cả các biến đã được xét ta tìm được b(2). Kết thúc quá trình dò tìm.
Có hai khả năng xảy ra:
(a) b(2) = b(1), nghĩa là việc dò tìm không làm giảm giá trị hàm, ta tiếp tục dò tìm quanh điểm b(1) với độ dài bước bé hơn (thường giảm 10 lần).
(b) b(2) 6= b(1), nghĩa là bước dò tìm có kết quả, ta chuyển sang thực hiện bước C.
C: Dò tìm theo mẫu:
1. Dịch chuyển từ điểm cơ sở b(2) theo hướng v := b(2) −b(1) vì dò theo hướng này giá trị hàm sẽ giảm ta tính giá trị hàm tại điểm mẫu mới v := 2b(2) −b(1).
2. Tiến hành dò tìm quanh điểm mẫu v như ở bước B, nếu giá trị hàm thu được xung quanh điểm v nhỏ hơn giá trị đã thu được tại điểm cơ sở b(2) thì ta nhận được điểm cơ sở mới b(3).
3. Lặp lại bước dò tìm với b(2) thay cho b(1),b(3) thay cho b(2). Nếu không tìm được điểm có giá trị hàm tốt hơn thì dừng việc dò tìm theo mẫu từ điểm b(2) và dò tìm quanh điểm cơ sở cũ b(2) bằng bước B.
D: Dừng qua trình tìm kiếm: Khi độ dài bước∆ := max{∆x1, . . . ,∆xn}T
nhỏ hơn một giá trị quy định trước.