ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC NGUYỄN HỮU ĐẠT MỘT SỐ THUẬT TOÁN GIẢI SỐ BÀI TOÁN TỐI ƯU PHI TUYẾN LUẬN VĂN THẠC SĨ TOÁN HỌC THÁI NGUYÊN 2019 Tai ngay!!! Ban co the xoa dong chu nay!!![.]
ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC - NGUYỄN HỮU ĐẠT MỘT SỐ THUẬT TOÁN GIẢI SỐ BÀI TOÁN TỐI ƯU PHI TUYẾN LUẬN VĂN THẠC SĨ TOÁN HỌC THÁI NGUYÊN - 2019 Tai ngay!!! Ban co the xoa dong chu nay!!! ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC - NGUYỄN HỮU ĐẠT MỘT SỐ THUẬT TOÁN GIẢI SỐ BÀI TOÁN TỐI ƯU PHI TUYẾN Chuyên ngành: Toán ứng dụng Mã số : 46 01 12 LUẬN VĂN THẠC SĨ TOÁN HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC TS Vũ Vinh Quang THÁI NGUYÊN - 2019 i Lời cảm ơn Trước hết, em xin bày tỏ lịng kính trọng lịng biết ơn sâu sắc tới TS Vũ Vinh Quang, người thầy tận tình hướng dẫn, bảo cung cấp tài liệu hữu ích để em hồn thành luận văn Xin cảm ơn lãnh đạo Trường Đại học Khoa học - Đại học Thái Nguyên tạo điều kiện giúp đỡ tơi mặt suốt q trình học tập thực luận văn Em xin bày tỏ lịng biết ơn tới thầy, giáo giảng dạy lớp K11C truyền đạt kiến thức phương pháp nghiên cứu khoa học suốt năm học vừa qua Xin chân thành cảm ơn anh chị em học viên cao học K11C bạn bè đồng nghiệp động viên khích lệ tơi q trình học tập, nghiên cứu làm luận văn Tôi xin bày tỏ lịng biết ơn sâu sắc đến gia đình, người thân, người ln động viên, khuyến khích giúp đỡ mặt để tơi hồn thành công việc nghiên cứu Thái Nguyên, tháng năm 2019 Tác giả luận văn Nguyễn Hữu Đạt ii Lời cam đoan Tôi xin cam đoan: Những nội dung luận văn thực hướng dẫn trực tiếp thầy giáo hướng dẫn TS Vũ Vinh Quang Mọi tham khảo dùng luận văn trích dẫn rõ ràng tác giả, tên cơng trình, thời gian, địa điểm công bố Tôi xin chịu trách nhiệm với lời cam đoan Thái Nguyên, tháng năm 2019 Tác giả luận văn Nguyễn Hữu Đạt iii Mục lục Lời cảm ơn i Lời cam đoan ii Bảng ký hiệu v Mở đầu 1 Một số kiến thức 1.1 Mơ hình tổng qt tốn tối ưu hóa 1.2 Phân loại toán tối ưu 1.3 Một số phương pháp giải tốn tuyến tính 1.3.1 Thuật tốn hình học 1.4 Mơ hình tốn quy hoạch lồi tổng quát 1.4.1 Khái niệm tập lồi, hàm lồi 1.4.2 Khái niệm Gradient đạo hàm hướng 1.4.3 Bài toán quy hoạch lồi tổng quát, điều kiện tối ưu 1.4.4 Cực tiểu hàm lồi biến 10 1.5 Phương pháp giải tốn quy hoạch tuyến tính tổng qt phần mềm MATLAB 15 Một số thuật toán giải số toán tối ưu phi tuyến không ràng buộc 16 iv 2.1 Một số kiến thức 16 2.1.1 Định nghĩa 16 2.1.2 Điều kiện tối ưu 17 2.2 Các thuật toán sử dụng đạo hàm 18 2.2.1 Thuật toán Gradient 18 2.2.2 Thuật toán đường dốc 20 2.2.3 Thuật toán Newton 23 2.3 Các thuật toán không sử dụng đạo hàm 26 2.3.1 Phương pháp tìm trực tiếp (Direct search) 26 2.3.2 Phương pháp Powell 27 2.3.3 Phương pháp Nelder Mead 28 Một số thuật toán giải số toán tối ưu phi tuyến có ràng buộc 32 3.1 Một số kiến thức 32 3.1.1 Hàm Lagrange 32 3.1.2 Thiết lập điều kiện tối ưu Kuhn - Tucker 33 3.2 Một số thuật toán 35 3.2.1 Thuật toán Gradient 35 3.2.2 Phương pháp hàm phạt (Penalty function method) 38 Kết luận 52 Tài liệu tham khảo 53 v Bảng ký hiệu QHTT Quy hoạch tuyến tính; xi tọa độ thứ i x; xT vectơ hàng (chuyển vị x ); ||x|| = chuẩn Euclide x; ∂f (x) vi phân f x; ∇f (x) đạo hàm f x; f (x) đạo hàm f x Mở đầu Mơ hình tốn quy hoạch phi tuyến nói chung mơ hình quan trọng lớp tốn tối ưu hóa Mơ hình có nhiều ứng dụng tốn học vật lý, kinh tế thương mại Về mặt lý thuyết, có nhiều tài liệu trình bày thuật tốn lý thuyết giải mơ hình tốn mơ hình tổng qt Tuy nhiên việc nghiên cứu cài đặt chi tiết thuật tốn ứng dụng vào số mơ hình số toán cụ thể học vật lý chưa nhiều người đề cập đến Nội dung luận văn nghiên cứu sở toán học thuật toán giải tốn quy hoạch phi tuyến tính khơng ràng buộc có ràng buộc, tìm hiểu chi tiết bước mơ tả thuật tốn, xây dựng sơ đồ khối cài đặt thuật tốn ngơn ngữ lập trình cụ thể Nội dung luận văn gồm ba chương, phần phụ lục cấu trúc sau: Chương Một số kiến thức Trình bày mơ hình tổng qt tốn tối ưu hóa, phân loại toán tối ưu, phương pháp biến đổi bản, số thuật toán giải toán tối ưu hàm lồi biến, giải toán quy hoạch tuyến tính MATLAB Các kết kiến thức quan trọng ứng dụng chương sau luận văn Chương Mơ hình tốn tối ưu hóa phi tuyến Trong chương này, trình bày số thuật toán giải số toán tối ưu phi tuyến không ràng buộc Cụ thể chương nêu mô hình tổng qt, điều kiện tối ưu, thuật tốn sử dụng đạo hàm thuật toán Gradient, thuật toán đường dốc nhất, thuật toán Newton, thuật toán Gradient liên hợp, thuật tốn khơng sử dụng đạo hàm thuật tốn tìm trực tiếp, thuật tốn Powell, thuật tốn Nelder Mead Chương Một số thuật toán giải số tốn tối ưu phi tuyến có ràng buộc Nội dung chương tìm hiểu số thuật tốn giải số tốn tối ưu phi tuyến có ràng buộc khái niệm hàm Lagrange, phương pháp hàm phạt, thuật tốn tìm nghiệm xấp xỉ Các thuật tốn cài đặt mơi trường MATLAB version 7.0 Chương Một số kiến thức Nội dung chương trình bày mơ hình tổng qt tốn tối ưu hóa, phân loại toán tối ưu, phương pháp biến đổi bản, số thuật toán giải toán tối ưu hàm lồi biến, giải toán quy hoạch tuyến tính MATLAB Các kết kiến thức quan trọng ứng dụng chương sau luận văn Các kiến thức tham khảo tài liệu [1], [2], [4] 1.1 Mơ hình tổng qt tốn tối ưu hóa Tối ưu hóa lĩnh vực quan trọng tốn có ảnh hưởng đến hầu hết lĩnh vực khoa học, công nghệ, kinh tế xã hội Việc tìm giải pháp tối ưu cho tốn thực tế chiếm vai trị quan trọng việc tiến hành lập kế hoạch sản xuất hay thiết kế hệ thống điều khiển trình Nếu sử dụng kiến thức tảng toán học để giải toán cực trị, người ta đạt hiệu kinh tế cao Điều phù hợp với mục đích toán đặt thực tế Mơ hình tốn tối ưu tổng qt phát biểu sau: 39 Các phương pháp hàm phạt chia thành hai nhóm: phương pháp hàm phạt trong, phương pháp hàm phạt a) Phương pháp hàm phạt (interior penalty function method), hàm Gj thường chọn dạng: Gj = − gj (x) Gj = log[−gj (x)] Cực tiểu hàm Pk nằm miền nghiệm chấp nhận hội tụ nghiệm toán f (x) thông số rk biến đổi đặn b) Phương pháp hàm phạt (exterior penalty function method), hàm GJ thường chọn dạng: Gj = max[0, gj (x)] Gj = {max[0, −gj (x)]}2 Khi cực tiểu hàm Pk nằm ngồi miền nghiệm chấp nhận hội tụ nghiệm tốn f (x) thơng số rk biến đổi Ví dụ Hàm mục tiêu: f (x) = 13 (x1 + 1)3 + x2 → Ràng buộc: g1 (x) = −x1 + ≤ g2 (x) = −x2 ≤ Giải: Theo phương pháp hàm phạt trong, hàm mục tiêu mở rộng là: 1 P (x, r) = (x1 + 1) + x2 − r − → −x1 + x2 Để giải tốn khơng ràng buộc P (x, r) ta dùng điều kiện cần: ∂P r = (x1 + 1)2 − = → (x21 − 1)2 = r ∂x1 (1 − x1 ) ∂P r = − → x22 = r ∂x2 x2 40 Các phương trình cho: x∗1 (r) = r +1 12 ; x∗2 (r) = r 3 12 r2 + + − Pmin (r) = 1 r − r2 + r2 12 Để nhận nghiệm toán gốc, ta thấy: fmin = lim Pmin (r) r→0 x∗1 = lim x∗1 (r) r→0 x∗2 = lim x∗2 (r) r→0 Các giá trị f, x∗1 , x∗2 cho bảng sau: Bảng 3.1: Giá trị r x∗1 (r) x∗2 (r) 1000 5,71164 31,62278 376,2636 132,4003 100 3,31662 10,00000 89,9772 36,8109 10 2,04017 3,16228 25,3048 12,5286 1,41421 1,00000 9,1046 5,6904 0,1 1,14727 0,31623 4,6117 3,6164 0,01 1,04881 0,10000 3,2716 2,9667 0,001 1,01569 0,03162 2,8569 2,7615 0,0001 1,00499 0,01000 2,7267 2,6967 0,00001 1,00158 0,00316 2,6856 2,6762 0,000001 1,00050 0,00100 2,6727 2,6697 Nghiệm xác 8/3 8/3 Pmin (r) f (r) Sau nghiên cứu chi tiết số thuật toán sử dụng tư tưởng hàm phạt A Một số phương pháp hàm phạt điểm Hàm phạt p(x) thỏa mãn tính chất: 41 i/ khơng âm liên tục tập intD={x ∈ R : gi (x) < 0, i = 1, , m} ii/ p(x) → +∞ gi (x) → 0− Hai hàm phạt điểm sử dụng nhiều, Fiacco McCormick đưa ra, là: p(x) = − m X (ln(−gi (x)) p(x) = − m X i=1 i=1 gi (x) Phương pháp hàm phạt điểm xuất phát từ điểm x1 tập chấp nhận D, giải dãy tốn tối ưu khơng ràng buộc minψ(x, αk ) với điều kiện x ∈ Rn , ψ(x, αk ) = f (x) + αk p(x), {αk } dãy tham số dương, giảm đơn điệu Thuật toán 3.1 Bước chuẩn bị: Cho số ε > đủ bé (để kiểm tra điều kiện dừng thuật toán) Chọn điểm x1 ∈ D thỏa mãn gi (x1 ) < 0, i = 1, , m Chọn tham số phạt α1 > số µ ∈ (0, 1) Đặt k = Bước lặp k: (k=1, 2, ) Bước k1 : Xuất phát từ xk giải tốn tối ưu khơng ràng buộc minψ(x, αk ) với điều kiện x ∈ Rn nhận nghiệm xk+1 , Bước k2 : if αk p(xk+1 ) < ε Then Dừng thuật toán (lấy xk+1 nghiệm tối ưu toán (P) Else chuyển Bước k3 ; Bước k3 ; Đặt tham số phạt αk+1 := µαk Đặt k := k + Chuyển Bước lặp k Định lí 3.1 Thuật tốn 3.1 có tính chất sau: i/ ψ(x, α) ≥ f (x) với α > 0, x chấp nhận được; ii// gi (xk ) < 0, i = 1, , m iii/ ψ(xk , αk ) hội tụ đến giá trị tối ưu toán (P) {αk } → điểm tụ {xk } nghiệm tối ưu (P ) 42 Chứng minh i/ Hiển nhiên ii/ Nếu gi (xk )=0 , ta suy ψ(xk , αk ) không hữu hạn iii/ Nếu x∗ nghiệm (P), ta cần chứng minh lim ψ(xk , αk ) = f (x∗ ) k→∞ Vì αk & 0, {ψ(xk , αk )} dãy giảm ψ bị chặn (do f liên tục tập compac D nên bị chặn dưới) αk p(x) ≥ 0), nên ta suy ψ(xk , αk ) hội tụ với ψ0 ≥ f (x∗ ) Thật vậy: ψ(xk , αk ) ≥ f (xk ) ≥ f (x∗ ) ψ0 = lim ψ(xk , αk ) ≥ f (x∗ ) k→+∞ Nếu ε = ψ0 − f (x∗ ) > 0, f liên tục nên ta chọn x¯ cho ε gi (¯ x) < 0, i = 1, , m f (¯ x) < f (x∗ ) + Lấy k đủ lớn cho m −αk lim i=1 ε < gi (¯ x) ψ(xk , αk ) − ψ0 < Ta có ψ0 ≤ ψ(xk , αk ) (vì {ψ(xk , αk )} dãy giảm hội tụ với ψ0 ) ≤ ψ(¯ x, αk ) (vì ψ(xk , αk ) đạt cực tiểu xk ) m X ≤ f (¯ x) − αk g (¯ x) i=1 i ε < f (¯ x) + < f (x∗ ) + ε = ψ0 43 Điều mâu thuẫn Do đó, ε = ψ0 − f (x∗ ) = 0, tức ψ0 = f (x∗ ) Tiếp theo, x¯ điểm hội tụ {xk }, tức x¯ = limxk1 , theo i/ ψ(xki , αki ) ≥ f (xki ) Từ ta suy ψ0 = limψ(xki , αki ) ≥ f (¯ x) Điều có nghĩa x¯ cực tiểu Chú ý Điểm cực tiểu ψ(x, α) nằm tập chấp nhận Mệnh đề 3.1 Cho hàm lồi f : Rn → R tập lồi khác rỗng D ⊂ Rn Xét tốn min{f (x)|x ∈ D} Khi đó: i/ x∗ nghiệm tối ưu địa phương tốn x∗ nghiệm tối ưu toàn cục; ii/ Nếu x∗ nghiệm tối ưu địa phương chặt f hàm lồi chặt x∗ nghiệm tối ưu toàn cục tốn Định lí 3.2 Giả sử f hàm lồi khả vi Rn Khí đó, x∗ ∈ Rn nghiệm cực tiểu tồn cục tốn min{f (x)|x ∈ Rn }, f : Rn → R hàm phi tuyến 5f (x∗ ) = a1 Thuật toán Fiacco - Cormick Hàm mục tiêu: f (x) → min(max) Các ràng buộc: gi (x) ≥ 0; i = 1, 2, , I hj (x) = 0; j = 1, 2, , J Hàm mục tiêu mở rộng xây dựng dạng hàm phạt trong: P (x, rk ) = f (x) ± rk I X i=1 J X ±√ h (x) gi (x) rk j=1 j 44 rk dãy số thực, đơn điệu giảm trình tính: r0 > r1 > r2 > > Ba cách chọn giá trị đầu r0 tính P (x, rk ) → a) rk = b) Đặt p(x) = I P i=1 Lấy x (0) gi (x) điểm miền chấp nhận được, I X (0) g x i=1 i − f x(0) f x(0) r0 = 2 5p x(0) R x (0) = c) Chọn s r0 = 5T f x(0) H −1 f x(0) ; 5p x(0) 6= 5T p x(0) H −1 p x(0) Trong H ma trận Hessian hàm p(x) x(0) Thuật tốn mơ tả ngơn ngữ lập trình MATLAB sau: function mfc=method_fiacco_cormick(epxilon, k) format short e; clc; r=1; muy=1/2; X=[0; 1/2]; ss1=10; while ss1> epxilon count=0; ss=10; ep=1/2; lamdak =2/3; Xluu=[1; 1]; while and(ss > epxilon, count < k) count=count + 1; grad=[dh1px(X, r); dh1py(X, r)]; alpha=1; dk=-grad; 45 %+ xac dinh buoc di toi uu lamdak X= X+lamdak*dk; ss=chuan1(X - Xluu, 2); Xluu = X; end; ss1=abs(r*g(X)); r = r*muy; end; mcf=X; count; Các kết thực thuật toán cho bảng liệu sau Bảng 3.3: Nghiệm xấp xỉ tối ưu sau bước lặp f (x, y) = x2 + y g(x, y) = x + y − Số bước lặp Sai số Nghiệm xấp xỉ 1.5 [-2xe+1; -2xe+1] 0.9 [-033; -033] 0.15 [-2xe-2; -2xe-2] 0.01 [-6xe-2; -6xe-2] 10 3× e − [-1 x e-3; -1 x e-3] 12 6× e − [-4 x e-4; -4 x e-4] 14 10× e − [-6 x e-5; -6 x e-5] 16 3× e − [-7 x e-6; -7 x e-6] 18 9× e − [-1 x e-6; -1 x e-6] 20 9× e − [-5 x e-8; -5 x e-8] a2 Thuật toán Carroll Hàm mục tiêu: f (x) → min(max) 46 Các ràng buộc: gi (x) ≥ 0; i = 1, 2, , m Hàm mục tiêu mở rộng xây dựng dạng hàm phạt trong: m X wj Pk = P (x, rk ) = f (x) ± rk g (x) j=1 i Dấu + tìm minf(x), dấu - tìm maxf(x); rk nhân tử bước lặp thứ k; wj trọng số (thường chọn wj = 1) Thuật toán: Bước 0: Khởi động x0 ∈ D; r0 = 1; µ ∈ (0, 1); ε = 10(−10) Bước lặp: Mọi k=0, 1, 2, + Giải tốn khơng ràng buộc Pk = P (x, rk ) = f (x)±rk m P j=1 wj gi (x) → (Sử dụng thuật toán Gradient quy tắc Armijo) P m wj + Kiểm tra: Nếu rk