Lý do chọn đề tài Trong bộ môn tối ưu toán học, phương pháp Metaheuristic được hiểu làthủ tục cấp cao hơn nhằm tìm, tạo, hoặc chọn thủ tục cấp thấp hơn để cóthể tìm ra nghiệm đủ tốt cho
Trang 1-
NGUYỄN QUANG THỊNH
THUẬT TOÁN METAHEURISTIC
GIẢI BÀI TOÁN TỐI ƯU
VÀ PHẦN MỀM ỨNG DỤNG
LUẬN VĂN THẠC SĨ KHOA HỌC
Đà Nẵng – Năm 2015
Trang 2NGUYỄN QUANG THỊNH
THUẬT TOÁN METAHEURISTIC
GIẢI BÀI TOÁN TỐI ƯU VÀ PHẦN MỀM ỨNG DỤNG
Chuyên ngành: Phương pháp tốn sơ cấp
Mã số: 60.46.40
LUẬN VĂN THẠC SĨ KHOA HỌC
Người hướng dẫn khoa học: TS HỒNG QUANG TUYẾN
Đà Nẵng – Năm 2015
Trang 3Tôi cam đ an đây là công trình nghiên cứu của riêng tôi
Các số liệu, kết quả nêu tr g luận văn là trung thực và chưa từng được
ai công bố t b t kỳ công trình nào khác
Tác giả luận văn
Nguy n Quang Thịnh
Trang 4MỤC LỤC
MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục đích nghiên cứu 2
3 Đối tượng và phạm vi nghiên cứu 2
4 Phương pháp nghiên cứu 2
5 Ý nghĩa khoa học và thực tiễn 2
6 Cấu trúc của luận văn 2
CHƯƠNG 1 BÀI TOÁN TỐI ƯU VÀ CÁC KHÁI NIỆM CƠ BẢN 4 1.1 BÀI TOÁN TỐI ƯU 4
1.1.1 Một số khái niệm cơ bản 5
1.1.2 Điều kiện tồn tại nghiệm 10
1.2 CÁC THUẬT TOÁN TÌM NGHIỆM SƠ CẤP 13
1.2.1 Phương pháp lặp đơn 13
1.2.2 Phương pháp chia đôi 14
1.2.3 Phương pháp Newton 16
1.2.4 Phương pháp Newton dùng cho giải hệ phi tuyến 18
1.3 CÁC CHƯƠNG TRÌNH MATLAB 20
CHƯƠNG 2 THUẬT TOÁN HEURISTIC TÌM NGHIỆM BÀI TOÁN TỐI ƯU 26 2.1 BÀI TOÁN TỐI ƯU PHI TUYẾN KHÔNG RÀNG BUỘC 26 2.1.1 Bài toán hàm đơn biến 27
Trang 52.1.2 Bài toán hàm nhiều biến 27
2.1.3 Phương pháp Newton 28
2.1.4 Phương pháp giảm nhanh nhất 29
2.1.5 Phương pháp tìm kiếm trực tiếp (Hooke-Jeeves-Wood) 32 2.2 BÀI TOÁN TỐI ƯU PHI TUYẾN CÓ RÀNG BUỘC 36
2.2.1 Phương pháp hàm phạt 36
2.2.1.1 Phương pháp hàm phạt điểm ngoài 37
2.2.1.2 Phương pháp hàm phạt điểm trong 38
2.2.2 Phương pháp nhân tử Lagrange 40
2.2.3 Điều kiện Kuhn - Tucker 42
2.3 MỘT SỐ CHƯƠNG TRÌNH LẬP TRÌNH MATLAB 44
CHƯƠNG 3 HAI THUẬT TOÁN METAHEURISTIC TÌM NGHIỆM TỐI ƯU VÀ PHẦN MỀM ỨNG DỤNG 49 3.1 PHƯƠNG PHÁP MÔ PHỎNG ĐÀN CHIM DI (PSO) 50
3.1.1 Ngôn ngữ giả mã của thuật toán mô phỏng đàn chim di 51 3.1.2 Tăng tốc thuật toán mô phỏng đàn chim di (PSO) 53
3.1.3 Hàm có đồ thị đa đỉnh (Multimodal Function) 54
3.1.4 Mã chương trình tăng tốc thuật toán PSO 56
3.1.5 Thuật toán PSO trong trường hợp bài toán có ràng buộc 61 3.2 THUẬT TOÁN MÔ PHỎNG QUÁ TRÌNH TÔI THÉP (SA) 62 3.2.1 Các ý tưởng cơ bản 62
3.2.2 Lựa chọn tham số 63
3.2.3 Thuật toán mô phỏng quá trình tôi thép 65
3.2.4 Mã chương trình Matlab của thuật toán SA 67
Trang 6MỞ ĐẦU
1 Lý do chọn đề tài
Trong bộ môn tối ưu toán học, phương pháp Metaheuristic được hiểu làthủ tục cấp cao hơn nhằm tìm, tạo, hoặc chọn thủ tục cấp thấp hơn để cóthể tìm ra nghiệm đủ tốt cho bài toán tối ưu, đặc biệt đối với các bài toántối ưu với thông tin không đầy đủ hoặc đòi hỏi khối lượng tính toán quá lớn
Cụ thể hơn, phương pháp Metaheuristic là chiến lược hướng dẫn quá trìnhtìm kiếm Mục đích của phương pháp là khai thác hữu hiệu không gian tìmkiếm để tìm được nghiệm gần tối ưu Các kỹ thuật dùng cho Metaheuristic
là khá rộng từ các thủ tục tìm kiếm địa phương đơn giản đến các tiến trình
“học” phức tạp
Phương pháp Metaheuristic được phát triển mạnh mẽ từ thập niên 80của thế kỷ trước cho đến nay So với các phương pháp kinh điển (các phươngpháp bước hóa), phương pháp Metaheuristic có thể không chắc tìm thấynghiệm tối ưu toàn cục chính xác ở một số lớp bài toán Nhưng bằng cáchkết hợp thêm phương pháp tối ưu ngẫu nhiên (stochastic) người ta vẫn tìmthấy nghiệm đủ tốt dựa trên tập các biến ngẫu nhiên Hoặc là với tập chấpnhận được khá lớn, phương pháp Metaheuristic sẽ tìm thấy nghiệm đủ tốtvới khối lượng tính toán ít hơn nhiều so với các phương pháp kinh điển hoặccác phương pháp heuristic đơn giản
Phương pháp Metaheuristic được ứng dụng nhiều trong các bài toán tối
ưu tổ hợp (nổi tiếng là bài toán người đi du lịch, bài toán thiết kế dạng tốiưu ) với không gian tìm kiếm nghiệm tăng cấp số mũ theo cỡ bài toán (sốnút mạng), điều mà các phương pháp tìm kiếm vét cạn không thể thực hiệnđược
Trang 7Trên đây là lý do tôi chọn đề tài: "Thuật toán Metaheuristic giải bàitoán tối ưu và phần mềm ứng dụng"
2 Mục đích nghiên cứu
Luận văn tập trung nghiên cứu một số phương pháp tối ưu hiện đại đểgiải quyết các bài toán tối ưu và phần mềm ứng dụng Matlab
3 Đối tượng và phạm vi nghiên cứu
a Đối tượng nghiên cứu của luận văn là một số phương pháp giải bài toántối ưu hiện đại
b Phạm vi nghiên cứu của luận văn là hai thuật toán Metaheuristic tìmnghiệm tối ưu (nội dung chính của luận văn) cùng với phần mềm ứngdụng chạy thử nghiệm trên một số ví dụ cụ thể theo ngôn ngữ lập trìnhMatlab
4 Phương pháp nghiên cứu
Phương pháp tham khảo tài liệu: Nghiên cứu các tài liệu trong nước vànước ngoài, giáo trình hoặc các bài báo liên quan có ở thư viện, bài giảngcủa giáo viên, Internet
Phương pháp trao đổi, thảo luận trực tiếp: với chuyên gia, đồng nghiệp,thầy hướng dẫn
5 Ý nghĩa khoa học và thực tiễn
• Về mặt khoa học, luận văn cho người đọc hiểu được bản chất toán họctrong ứng dụng của khoa học kỹ thuật
• Về mặt thực tiễn, đề tài sẽ là một tài liệu tham khảo có ích cho những
ai muốn thực hành tính toán thực sự trên máy tính với các bài toán cụthể
6 Cấu trúc của luận văn
Ngoài phần mở đầu, kết luận và phần phụ lục, luận văn gồm 3 chương:Chương 1: Bài toán tối ưu và các khái niệm
Chương 2: Thuật toán heuristic tìm nghiệm tối ưu
Chương 3: Hai thuật toán Metaheuristic tìm nghiệm tối ưu vàphần mềm ứng dụng
Trang 8một số thuật toán sơ cấp, cùng chương trình chạy thử trên ngôn ngữ lậptrình Matlab
Trong chương 2, trình bày một số thuật toán heuristic tìm nghiệm củabài toán tối ưu phi tuyến không ràng buộc như “phương pháp giảm nhanhnhất”, “phương pháp Newton”, “phương pháp tìm kiếm trực tiếp (Hooke –Jeeves – Wood), một số thuật toán giải bài toán tối ưu phi tuyến có ràngbuộc “Điều kiện Kuhn-Tucker”, “phương pháp nhân tử Lagrange”, “phươngpháp hàm phạt”, cùng chương trình chạy thử trên ngôn ngữ lập trình Matlab.Trong chương 3, giới thiệu hai thuật toán Metaheuristic tìm nghiệm tối
ưu toàn cục Đó là “tối ưu hóa mô phỏng đàn chim di (PSO)” và “tối ưu hóa
mô phỏng quá trình tôi thép (SA)”, cùng chương trình chạy thử trên ngônngữ lập trình Matlab
Trang 9CHƯƠNG 1
BÀI TOÁN TỐI ƯU VÀ CÁC
KHÁI NIỆM CƠ BẢN
Trong thực tế, tối ưu hóa xuất hiện hầu khắp mọi nơi, từ sản xuất kinhdoanh đến thiết kế kỹ thuật, từ lập kế hoạch kỳ nghỉ của bạn đến chọn côngviệc cho tương lai Trong tổ chức kinh doanh thì cần tối đa lợi nhuận và tốithiểu chi phí Trong thiết kế kỹ thuật thì cần tối đa hiệu suất của sản phẩmdược thiết kế đồng thời tối thiểu các chi phí Ngay cả việc đơn giản là lập kếhoạch cho kỳ nghỉ, ta cũng muốn tối đa sự hưởng thụ và tối thiểu chi phí
Do đó, các nghiên cứu về tối ưu hóa luôn có ý nghĩa khoa học và thực tế,đặc biệt các phương pháp giải quyết bài toán tối ưu có vai trò ứng dụng tolớn
Trong chương này, trình bày các khái niệm cơ bản của bài toán tối ưu,các thuật toán tìm nghiệm sơ cấp, kèm theo chương trình Matlab
Bài toán Một xí nghiệp sản xuất n loại sản phẩm cần sử dụng m loạinguyên liệu khác nhau Gọixj là số lượng sản phẩm thứ j j = 1, n và cj làlãi thu được của một sản phẩm thứ j Biết rằng để sản xuất một sản phẩmloại j cần một lượng nguyên liệu aij i = 1, m Gọi bi là số lượng tối đa củanguyên liệu i mà xí nghiệp có Bài toán đặt ra là hãy sản xuất mỗi loại sảnphẩm với số lượng bao nhiêu để tổng lợi nhuận thu được là lớn nhất
Ta có mô hình toán học của bài toán trên như sau: max Pn
j=1
cjxj
Trang 10với điều kiện:
j=1
aijxj ≤ bi i = 1, m
xj ≥ 0 j = 1, n1.1.1 Một số khái niệm cơ bản
Dạng tổng quát của bài toán tối ưu được phát biểu như sau:
min f (x) với điều kiện x ∈ D (1.1)hoặc
max f (x) với điều kiện x ∈ D (1.2)trong đó, D ⊆Rn được gọi là tập nghiệm chấp nhận được hay tập ràng buộc
và f : D → R Mỗi điểm x ∈ D được gọi là một nghiệm chấp nhận được haymột phương án chấp nhận được (có thể gọi tắt là một phương án)
Chú ý 1.1.1 Không giảm tổng quát, ta chỉ xét bài toán 1.1
f (x∗) < f (x) ,∀x ∈ D và x 6= x∗Không phải bài toán 1.1 nào cũng có nghiệm cực tiểu toàn cục và nếu bàitoán có nghiệm cực tiểu toàn cục thì cũng chưa chắc có nghiệm cực tiểu toàncục chặt Xem minh họa hình 1.1 (trường hợp hàm mục tiêu f (x) là hàmmột biến)
Trang 11Hình 1.1: Hàm mục tiêu f(x) là hàm một biếnGiá trị tối ưu (hay giá trị cực tiểu) của bài toán 1.1 được kí hiệu là:
f (x∗) < f (x) ,∀x ∈ B (x∗, ε)∩ D và x 6= x∗Các khái niệm tương tự cũng được định nghĩa cho bài toán 1.2 Cụ thể,
Trang 12Hình 1.2: Nghiệm cực tiểu địa phương chặt
f (x∗) > f (x) ,∀x ∈ B (x∗, ε)∩ D và x 6= x∗Điểm x∗ ∈ D được gọi là nghiệm tối ưu toàn cục hoặc nghiệm cực đạitoàn cục của bài toán 1.2, nếu điểm x∗ ∈ D sao cho
f (x∗) ≥ f (x) , ∀x ∈ D
Điểm x∗ ∈ D được gọi là nghiệm tối ưu toàn cục chặt hoặc nghiệm cựcđại toàn cục chặt của bài toán 1.2, nếu điểm x∗ ∈ D sao cho
f (x∗) > f (x) ,∀x ∈ D và x 6= x∗Giá trị tối ưu (hay giá trị cực đại) của bài toán 1.2 được ký hiệu là:
max
x ∈D f (x) hoặc max{f (x) |x ∈ D}
Trang 13Tương tự, ta ký hiệu arg max{f (x) |x ∈ D} là tập nghiệm tối ưu củabài toán 1.2 Nếu bài toán chỉ có một nghiệm tối ưu thì x∗ có thể viết
gi(x) ≤ 0, i = 1, , p được gọi là một ràng buộc của bài toán Vì ràng buộc
gi(x) ≥ 0 ⇔ −gi(x) ≤ 0 và gi(x) = 0 ⇔
(
gi(x) ≤ 0
−gi(x) ≤ 0 (1.4)Điều này chứng tỏ, công thức 1.3 biểu diễn tất cả các ràng buộc
Chú ý 1.1.3 Nghiệm tối ưu toàn cục cũng là nghiệm tối ưu địa phươngnhưng điều ngược lại chưa chắc đúng Tuy nhiên, nếu D là tập lồi và f (x)
là hàm lồi thì nghiệm tối ưu địa phương của bài toán 1.1 cũng là nghiệm tối
Trang 14x = λx + (1− λ)x∗ = x∗+ λ(x− x∗) ∈ B(x∗, ε)∩ D, ∀λ > 0 đủ nhỏ.
Do x∗ là nghiệm cực tiểu địa phương và f là hàm lồi nên:
f (x∗) ≤ f (x) ≤ λ.f (x) + (1 − λ) f (x∗) ⇒ f (x∗) ≤ f (x) , ∀x ∈ D.Điều đó chứng tỏ x∗ là nghiệm tối ưu toàn cục của bài toán đang xét
b Giả sử x∗ là nghiệm tối ưu địa phương chặt Theo a), x∗ cũng là nghiệmtối ưu toàn cục Bây giờ ta giả thiết phản chứng rằng, x∗ không phảinghiệm tối ưu toàn cục duy nhất của bài toán, tức là tồn tại x ∈ D, x 6=
Cuối cùng, trường hợp x∗ là nghiệm tối ưu địa phương và hàm mục tiêu
f là lồi chặt Vì hàm lồi chặt là hàm lồi nên từ a) ta có x∗ là nghiệm tối
ưu toàn cục Ta cũng giả thiết phản chứng rằng x∗ không phải nghiệmtối ưu toàn cục duy nhất của bài toán, tức là tồn tại x ∈ D, x 6= x∗ và
f (x) = f (x∗) Do f là hàm lồi chặt nên:
f
1
Trang 15Chú ý 1.1.4 Nếu bài toán 1.1 không có nghiệm tối ưu thì giá trị tối ưu củabài toán này, ký hiệuinf f (D) là cận dưới lớn nhất (hay giá trị infimum) củahàm f trên D
Giả sử, nếu bài toán 1.2 không có nghiệm tối ưu thì giá trị tối ưu của bàitoán này, ký hiệu sup f (D) là cận trên bé nhất (hay giá trị supremum) củahàm f trên D
Nhắc lại, t∗ = sup f (D) , t∗ ∈ R ∪ {+∞} thì f (x) ≤ t∗ ∀x ∈ D và
∃ {xn} ⊂ D sao cho lim
n →∞f (xn) = t∗.Tương tự, t∗ = inf f (D) , t∗ ∈ R ∪ {+∞} thì f (x) ≥ t∗ ∀x ∈ D và
∃ {xn} ⊂ D sao cho lim
n →∞f (xn) = t∗.1.1.2 Điều kiện tồn tại nghiệm
Mục đích của quy hoạch toán học là nghiên cứu tính chất của tập nghiệm
và xây dựng các thuật toán để tìm nghiệm của bài toán tối ưu Câu hỏi đầutiên đặt ra là: “Bài toán cần giải có nghiệm tối ưu hay không?”
Xét bài toán tối ưu 1.1, có bốn phương án có thể xảy ra:
a Bài toán 1.1 không có phương án chấp nhận được, tức D = ∅;
b Bài toán có nghiệm tối ưu, tức tồn tại x∗ ∈ D sao cho:
Trang 16của bài toán 1.1 luôn tồn tại nhưng nghiệm tối ưu thì không nhất thiết tồntại Việc tìm kiếm điều kiện đảm bảo để bài toán có nghiệm tối ưu là vấn đềquan trọng.
Mệnh đề 1.1.2 Điều kiện cần và đủ để bài toán 1.1 có nghiệm tối ưu là tập
⇐) Ngược lại, nếu tập f (D)+ có một cận dưới hữu hạn thì cận dưới lớnnhất (hay infimum) của tập này là hữu hạn và ta ký hiệu nó là t0.Theo định nghĩa của infimum,
Điều đó chứng tỏ x0 là nghiệm tối ưu của bài toán 1.1
Định lý 1.1.1 Cho D là tập compact khác rỗng Khi đó:
a Nếu hàm f nửa liên tục dưới trên D thì bài toán 1.1 có nghiệm tối ưu
b Nếu hàm f nửa liên tục trên trên D thì bài toán 1.2 có nghiệm tối ưu
Trang 17Chứng minh Do tính tương tự ta chỉ cần chứng minh phần (a)
Giả sử giá trị tối ưu của bài toán 1.1 là t0 = inf f (D) Theo định nghĩa,
f x0
≤ limn
→∞f (xn) = t0
Kết hợp điều kiện này với 1.5 ta có t0 = inf f (D) = f x0 Chứng tỏ x0
là nghiệm tối ưu của bài toán
Hệ quả 1.1.1 (Định lý Weierstrass) Nếu tập D là compact và hàm f liêntục trên D thì cả hai bài toán 1.1 và 1.2 đều có nghiệm tối ưu
Chứng minh Hàm liên tục là hàm nửa liên tục trên và nửa liên tục dưới.Như vậy hệ quả trên được trực tiếp suy ra từ định lý 1.1.1
Nếu tập khác rỗng D chỉ đóng mà không bị chặn và hàm f nửa liên tụcdưới trên D thì nói chung, có thể hàm f không đạt cực tiểu trên D, tức bàitoán 1.1 không có nghiệm tối ưu
Định lý 1.1.2 Cho tập đóng khác rỗng D ⊂ Rn Nếu hàm f là nửa liên tụcdưới trên D và thỏa mãn điều kiện bức (coercive) trên D : f (x) → +∞ khi
x ∈ D và kxk → +∞, thì bài toán 1.1 có nghiệm tối ưu
Chứng minh Lấy một điểm bất kỳ x0 ∈ D Trước hết, ta chứng minh rằngtập dưới D =
x ∈ D|f (x) ≤ f x0 là tập compact
Thật vậy, do f nửa liên tục dưới trên D nên với mỗi dãy {xn} ⊂
D,{xn} → x mà dãy {f (xn)} hội tụ, ta có f (x) ≤ lim
n →∞f (xn) ≤ f x0.Suy ra x ∈ D, chứng tỏ D là tập đóng
Hơn nữa, nếu D không bị chặn thì phải tồn tại một dãy xk
⊂ D tức
f xk
≤ f x0, sao cho
xk −→ +∞ khi k → ∞
Trang 18tập compact.
Theo định lý 1.1.1.a), hàm f đạt cực tiểu trên D, tức tồn tại x∗ ∈ D saocho f (x∗) ≤ f (x) ∀x ∈ D Dễ thấy, x∗ cũng chính là nghiệm cực tiểu củabài toán 1.1
Bản chất của việc tìm kiếm các nghiệm của một bài toán tối ưu tươngđương với việc tìm kiếm điểm tới hạn (điểm cực trị) Để tìm điểm tới hạn,chúng ta thường giải quyết các điều kiện dừng khi đạo hàm cấp một bằngkhông, tuy vậy sẽ có sự khác nhau cơ bản khi điểm cực trị đạt tại các biên Do
đó, tìm hiểu các phương pháp giải phương trình phi tuyến rất quan trọng.Các phương pháp giải tích tìm nghiệm đúng là rất hiếm, và trong nhiềutrường hợp, chỉ có giải pháp gần đúng là có thể Trong mục này, sẽ giới thiệucác phương pháp cơ bản của kỹ thuật liên quan đến các thuật toán sơ cấptìm nghiệm tối ưu
k ) qua việc sử dụng phương trình:
x = 12
x + kx
(1.7)
bắt đầu cho ngẫu nhiên x = 1 Để thực hiện việc lặp, ta kí hiệu xn cho giátrị của x tại lần lặp thứ n Như vậy, phương trình 1.7 cung cấp một cáchtính toán x tại n + 1 (ký hiệu là xn+1) Ta có
Trang 19Nếu ta bắt đầu từ giá trị cơ bản, cho x0 = 1 tại n = 0, chúng ta có thể lặp
đi lặp lại để được đáp số với độ chính xác tùy ý
Bởi vì việc lặp đi lặp lại này sẽ cho dãy x1, x2, , xn hội tụ vào giá trị √kđiều đó chứng tỏ rằng
xn+1
xn
= 12
1 + k
x2 n
.Vậy xn → √k
Ví dụ 1.2.1 Tìm √5
Lời giải Ta có k = 5 với giá trị ban đầu x0 = 1 và lặp 5 lần như sau:
x1 = 12
vì √k > 0(trong trường hợp này, việc lặp sẽ tiếp cận đến −√k)
Vì vậy, một sự lựa chọn hợp lý sẽ là dự đoán giá trị ban đầu Ở bước banđầu, nếu x20 < k, x0 cận dưới và k
x0 là cận trên Nếu x20 > k thì x0 là cậntrên và k
x0 là cận dưới Với các lặp khác, các cận mới sẽ là xn và k
xn.Trong thực tế, giá trị xn+1 luôn luôn là giữa hai cận xn và k
xn và các ướctính mới xn+1 là trung bình hoặc trung bình của hai cận Điều này chứng tỏrằng dãy trên hội tụ vào giá trị thực sự của √k
1.2.2 Phương pháp chia đôi
Phương pháp lặp nói trên để tìm x = √
k là tương đương với tìm nghiệmcủa hàm f (x) = x2 − k Đối với bất kỳ f (x) trong đoạn [a, b],
Các thủ tục lặp bắt đầu với hai giới hạn đoán ban đầu xa (cận dưới), và
xb (cận trên ) để nghiệm x = x∗ nằm giữa hai cận này thì và có những dấu
Trang 20Hình 1.3: Phương pháp chia đôi tìm thấy
nghiệm x∗ của f(x) = 0, x ∈ [a, b]
khác nhau Giả sử, f (xa) > 0 và f (xb) < 0, hay f (xa) f (xb) < 0 Chọn
xa = a và xb = b Ước tính tiếp theo chỉ là trung điểm của A và B và ta có
xn = 1
Sau đó chúng ta phải kiểm tra dấu của f (xn) Nếu f (xn) < 0 (cùng dấu với
f (xb)), ta cập nhật cận trên mới xb = xn Nếu f (xn) > 0 ( cùng dấu với
f (xa)) ta cập nhật cận dưới mới xa = xn Trong trường hợp đặc biệt khi
f (xn) = 0, ta có kết quả phải tìm Việc lặp tiếp tục theo cách tương tự chođến khi một độ chính xác nhất định có thể đạt được hay số lượng lặp lại đủlớn được quy định
Ví dụ 1.2.2 Tìm √π
Lời giải Ta có f (x) = x2 − π Chọn xa = 1, xb = 2 (vì π < 4)
f (xa) = 1− π < 0; f(xb) = 4− π > 0Điểm chia đôi thứ nhất:
x1 = 1
2(xa + xb) = 1, 5 ⇒ f (x1) = −0, 8916 < 0,
Trang 21Tại bất kỳ điểm xn.
Ta có hàm gần đúng nhờ khai triển Taylor từ ∆x = xn+1− xn về xn:
f (xn+1) = f (xn+ ∆x) ≈ f (xn) + f′(xn) ∆x (1.10)dẫn đến
Trang 22Hình 1.4: Phương pháp Newton tìm nghiệm gần đúng x∗
Vì vậy, việc dự đoán giá trị ban đầu là một ý tưởng tốt để hạn chế số lầnlặp
Trang 23Xuất phát x0 = 1 Ta có:
x1 = 1− 1− e−1
1 + e−1 ≈ 0, 5378828427và
1.2.4 Phương pháp Newton dùng cho giải hệ phi tuyến
Phương pháp Newton có thể viết được dưới dạng tổng quát để giải hệphương trình phi tuyến là:
F (x) = [F1(x), F2(x),· · · , Fn(x)]T (1.14)trong đó, x = [x1, x2,· · · , xn]T = [x, y,· · · , z]T hay viết gọn F (x) = 0.Xấp xỉ F (x) bởi một hàm tuyến tính với phần dư R(x, xn) trong lân cận
xn Ta có
R (x, xn) = F (xn) + J (xn) (x− xn) (1.15)và
J(x) = ∆Ftrong đó, J là ma trận Jacobi của F Tức là
Trang 24xk+1 = xk − J−1F xk (1.17)
xn+1 − xn ≤ εQuá trình lặp yêu cầu một vector khởi đầu x0, thường được thiết lập bởi
F (x) = x1 − e−x2
x21 − x2
!, x = x1
xn+1 = xn− J−1F (xn) trong đó, ma trận Jacobi J là:
J = 1 e−x
2
2x1 −1
!,với ma trận nghịch đảo là:
Trang 25Nghiệm chính xác của bài toán là (0, 6529186405; 0, 4263027510)T.
Ta nhận thấy rằng sau bốn lần lặp ta đã ước lượng gần đúng với giá trịchính xác
% g,x0 là hàm và giá trị ban đầu
% tolx là sai số cho phép
% maxiter là số lần lặp tối đa
Trang 27function [x,err,xx]=bisection(g,a,b,tolx,maxiter)tol=eps;
Trang 30% cac buoc lap
while herrx > maxerr
Trang 31f (x) không lồi hoặc lõm thì để tìm cực tiểu toàn cục hoặc cực đại toàn cụcthì khó khăn hơn nhiều.
Trong chương này, chúng ta sẽ xét lần lượt một số thuật toán giải bàitoán tối ưu phi tuyến dựa trên tính khả vi của hàm mục tiêu f (x) Kèm theo
đó là một số chương trình chạy thử trên ngôn ngữ lập trình Matlab
Bài toán quy hoạch phi tuyến không ràng buộc được phát biểu như sau:
min f (x) với điều kiện x ∈ Rn (2.1)trong đó, f : Rn →R là hàm phi tuyến
Trang 32Bài toán tối ưu không ràng buộc đơn giản mà việc tìm nghiệm không gặpkhó khăn có lẽ là bài toán tìm kiếm cực đại hoặc cực tiểu của hàm đơn biến
f (x) Cho bài toán tối ưu không ràng buộc, các giá trị tối ưu xảy ra tại điểmtới hạn được đưa ra bởi điều kiện dừng f′(x) = 0 Tuy nhiên, điều kiện nàychỉ là điều kiện cần, chứ không phải là đủ Nếu f′(x∗) = 0 và f′′(x∗) > 0thì x∗ là điểm cực tiểu địa phương Ngược lại, nếu f′(x∗) = 0 và f′′(x∗) < 0thì x∗ là điểm cực đại địa phương Tuy nhiên, nếu f′(x∗) = 0 nhưng f′′(x∗)
là không xác định (cả dương và âm) khi x → x∗ thì x∗ tương ứng với mộtđiểm yên ngựa
Ví dụ 2.1.1 Tìm cực đại và cực tiểu của hàm số:
f (x) = xe−x2, −∞ < x < ∞Lời giải Giải phương trình f′(x) = 0 Tức là,
e−x2 − 2x2e−x2 = 0
Vì e−x2 6= 0 nên
x = ±
√2
2.1.2 Bài toán hàm nhiều biến
Cho hàm nhiều biếnx = (x1, x2, , xn)T ∈ Rn, bài toán tối ưu được phátbiểu tương tự đối với hàm một biến:
min / max
x ∈R n
Trang 33Cho hàm f (x) là hàm bậc hai Theo phép khai triển Taylor tại x∗ ∈ Rnsao cho x = x∗ + εu
f (x∗ + εu) = f (x∗) + εu∇f (x∗) + 1
2ε
2uT∇2f (x∗ + εu) u + (2.3)trong đó, ∇f (x) và ∇2f (x) là vector gradient và ma trận Hessian, với ε đủnhỏ, u là vector
n× n có n giá trị riêng λj với n vector riêng vj, j = 1, n
Vì ma trận A đối xứng nên các vector riêng vj, j = 1, n trực giao Tức
là một biến thể của f (x) , khi x chuyển từ điểm dừng x∗ dọc theo hướng vj
là đặc trưng bởi các giá trị riêng
Nếu λj > 0, |ε| > 0 dẫn đến |∆f| = |f (x) − f (x∗)| > 0 Nói cách khác,
f (x) tăng khi |ε| tăng Ngược lại, nếu λj < 0 thì f (x) giảm khi |ε| tăng.Đặc biệt, λj = 0 khi đó hàm f (x) không thay đổi theo hướng vj tươngứng
2.1.3 Phương pháp Newton
Ta biết rằng phương pháp Newton là một phương pháp lặp thông thường
để tìm nghiệm của hàm phi tuyến một biến f (x) trên đoạn [a, b] Phương
Trang 34pháp này tương đương với tìm nghiệm của f′(x) = 0 với hàm mục tiêu f (x)cho trước.
Cho trước hàm f (x) liên tục khả vi, ta có khai triển Taylor tại điểm
∇f (xn) + ∇2f (xn) ∆x = 0 (2.8)Điều này dẫn đến
x = xn − G−1∇f (xn)trong đó, G = ∇2f (xn) là ma trận Hessian Nếu thủ tục lặp bắt đầu từvector x0 thì công thức lặp của Newton cho lần thứ n là
Điều đó chứng tỏ rằng nếu f (x) là hàm bậc hai thì nghiệm chính xác có thểđược tìm thấy trong một bước duy nhất Tuy nhiên, phương pháp này khônghiệu quả đối với các hàm không phải là hàm bậc hai Để tăng tốc độ hội tụ,
ta thường xét bước nhỏ hơn α ∈ (0, 1] vì vậy phương pháp Newton được sửađổi
Đôi khi chúng ta phải mất nhiều thời gian để tính ma trận Hessian tạobởi các đạo hàm bậc hai Cách tốt nhất là đồng nhất ma trận G−1 = I ,chúng ta có phương pháp bán Newton
khi đó phương pháp này gọi là phương pháp giảm nhanh nhất
2.1.4 Phương pháp giảm nhanh nhất
Bản chất của phương pháp này là để tìm hàm mục tiêu f (x) thấp nhất
có thể từ điểm x(n) Từ phép khai triển Taylor hàm f (x) tại x(n) ta có:
Trang 35trong đó, ∆s = x(n+1)− x(n) là vector số gia Vì ta cố gắng tìm xấp xỉ thấphơn (tốt hơn) cho hàm mục tiêu, cần số hạng vế phải là âm Tức là:
f x(n) + ∆s− f x(n) = (∇f)T∆s < 0 (2.13)Trong giải tích, ta đã biết tích uTv của hai vector u và v là lớn nhất khichúng cùng phương nhưng hướng ngược nhau Vì vậy, (∇f)T∆s nhỏ nhấtkhi
trong đó, α > 0 là số bước Trong trường hợp này, khi ∇s hướng giảm theohướng giảm âm Như ta đã nêu ở trên, đây là phương pháp bán Newton.Việc lựa chọn số bước α > 0 là rất quan trọng Một số bước nhỏ có nghĩa
là di chuyển theo hướng cực tiểu địa phương, trong khi với số bước lớn hơnrất có thể vượt qua và tiến ra xa cực tiểu địa phương Do đó, α = α(n) phảikhác nhau sau mỗi bước lặp và phải chọn α để cực tiểu hóa hàm mục tiêu
Lời giải Áp dụng phương pháp hướng giảm bắt đầu với x0 = (10, 15)T
Ta có: ∇f = (20x1 + 5x2, 5x1 + 20x2 − 60)T
Suy ra: ∇f x0
= (275, 290)TTại bước lặp thứ nhất ta có
x1 = x0 − α0(275, 290)T
Trang 36Chọn α0 sao cho f x(1) là giá trị cực tiểu, có nghĩa là
f (α0) = 10(10− 275α0)2 + 5 (10− 275α0) (15− 290α0) + 10(12− 290α0)2đạt cực tiểu Điều này trở thành bài toán tối ưu cho biến độc lập α0 Tất cảcác kỹ thuật giải bài toán tối ưu như phương pháp Newton có thể được sửdụng để tìm α0 Ta có thể tìm được nghiệm α0 bằng cách thiết lập:
!
Tương tự cực tiểu của hàm f (α2) tại α2 ≈ 0.040 Vì vậy,
x(3) ≈ (−0.8000299, 3.20029)TSau đó, việc lặp lại cho đến khi đáp ứng được yêu cầu bài toán
Trong tính toán, ta biết rằng công thức đạo hàm riêng của chúng bằng không
Trang 37Ta biết giá trị cực tiểu chính xác là
Có nhiều biến thể của phương pháp hướng giảm, nếu bài toán tối ưu làtìm cực đại thì phương pháp này trở thành phương pháp hướng tăng vì mụcđích là đến điểm cao nhất
2.1.5 Phương pháp tìm kiếm trực tiếp (Hooke-Jeeves-Wood)Phương pháp này được sử dụng để giải bài toán 2.1 khi hàm mục tiêu
f (x) không khả vi hoặc có khả vi nhưng việc lấy đạo hàm riêng thường khókhăn do f (x) có cấu trúc phức tạp hoặc khi có ít thông tin về f (x)
Ý 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ốthơ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ảmcủa hàm mục tiêu f (x) , x = (x1,· · · , xn)T 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ướcsau:
Bước 1 (Bước khởi đầu)
Chọn b(1) = (x1, , xn)T làm điểm cơ sở, ∆xj > 0 làm độ dài bước chobiến xj
Bước 2 (Dò tìm quanh điểm cơ sở)
Trang 38Kết thúc quá trình dò tìm.
Có hai khả năng xảy ra:
• 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é hơn (thường giảm 10 lần)
• b(2) 6= b(1), nghĩa là việc dò tìm có kết quả, ta chuyển sang thực hiệnbước 3
Bước 3 (Dò tìm theo mẫu)
a Dịch chuyển từ điểm cơ sở b(2) theo hướng v := b(2) − b(1) vì dò theohướ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)
b Tiến hành dò tìm quanh điểm mẫu v như bước 2, nếu giá trị hàm thuđược xung quanh điểm mẫu v nhỏ hơn giá trị đã thu tại điểm cơ sở b(2)thì ta nhận điểm cơ sở mới b(3)
c 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ôngtì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 2
Trang 39Bước 4 (Dừng quá trình tìm kiếm)
Khi độ dài bước ∆ := max{∆x1, , ∆xn}T nhỏ hơn một giá trị quy địnhtrước
Ví dụ 2.1.3 Tìm cực tiểu của hàm sau:
f (x1, x2) = 3x1 + 4x1x2 + 5x22.Lời giải
Chọn điểm cơ sở ban đầu b(1) = (4, 3)T , độ dài bước h = 1, ε = 10−3.Giá trị ban đầu fb = f b(1)
= 141 Đặt v = b(1).Xét tọa độ x1
v + he1 = (5, 3)T, f (v + he1) = 180 > fb = 141,
v − he1 = (3, 3)T, f (v − he1) = 108 < fb = 141Đặt v := v − he1 = (3, 3)T đây là giá trị tốt nhất mới fb = f (v) = 108.Xét tọa độ x2
v + he2 = (3, 4)T, f (v + he2) = 155 > fb = 108
v − he2 = (3, 2)T, f (v − he2) = 71 < fb = 108Đặt b(2) := v − he2 = (3, 2)T 6= b(1) = (4, 3)T ,
giá trị ban đầu fb = f b(2)
= 71.Bước 3 Đặt v = 2b(2) − b(1) = (2, 1)T, f (v) = 25 ⇒ fb = 25
Xét tọa độ x1
v + he1 = (3, 1)T, f (v + he1) = 44 > fb = 25
v− he1 = (1, 1)T, f (v− he1) = 12 < fb = 25Đặt v := v − he1 = (1, 1)T đây là giá trị tốt nhất mới, fb = f (v) = 12Xét tọa độ x2
v + he2 = (1, 2)T, f (v + he2) = 31 > fb = 12
v − he2 = (1, 0)T, f (v − he2) = 3 < fb = 12