Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 71 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
71
Dung lượng
1,03 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN HÀN LÂM KHOA HỌC VÀ CƠNG NGHỆ VIỆT NAM VIỆN TỐN HỌC Lê Xn Đồn MỘT SỐ PHƯƠNG PHÁP TỐI ƯU KHƠNG DÙNG ĐẠO HÀM Chuyên ngành: Toán ứng dụng Mã số: 60460112 LUẬN VĂN THẠC SĨ TOÁN HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS Bùi Thế Tâm HÀ NỘI – 2015 Một số phương pháp Tối ưu không dùng Đạo hàm MỤC LỤC Trang LỜI NÓI ĐẦU Chương PHƯƠNG PHÁP NELDER – MEAD CỰC TIỂU HÀM NHIỀU BIẾN Mơ tả thuật tốn Nelder – Mead khơng gian Mơ tả thuật tốn Nelder – Mead không gian 12 2.1 Phát biểu chung thuật toán 13 2.2 Mơ tả bước lặp thuật tốn Nelder – Mead 13 2.3 Kiểm tra hội tụ 17 2.4 Xây dựng đơn hình xuất phát 17 2.5 Sơ đồ khối thuật toán Nelder – Mead 18 Bài toán tối ưu với ràng buộc tổng quát 18 Thuật toán Nelder – Mead với biến bị chặn 22 Các tính chất thuật toán Nelder – Mead 23 Chương trình máy tính cho thuật toán Nelder – Mead 33 6.1 Bài toán 33 6.2 Các biến mảng dùng chương trình 34 6.3 Văn chương trình 34 6.4 Giải ví dụ số 42 6.5 Các ví dụ chạy chương trình 45 Một số phương pháp Tối ưu không dùng Đạo hàm Chương PHƯƠNG PHÁP TÌM KIẾM TRỰC TIẾP HOOKE – JEEVES 49 Mô tả thuật tốn Hooke - Jeeves khơng gian 49 1.1 Phát biểu toán 49 1.2 Tư tưởng thuật toán 49 1.3 Mơ tả bước lặp thuật tốn Hooke – Jeeves 51 Ví dụ minh họa cho thuật tốn Hooke – Jeeves khơng gian 53 Chương trình máy tính cho thuật tốn Hooke – Jeeves 55 3.1 Bài toán 55 3.2 Các biến mảng dùng chương trình 55 3.3 Văn chương trình 56 3.4 Giải ví dụ số 61 3.5 Các ví dụ chạy chương trình 65 KẾT LUẬN 70 TÀI LIỆU THAM KHẢO 71 Một số phương pháp Tối ưu khơng dùng Đạo hàm LỜI NĨI ĐẦU Trong vấn đề thực tế thường gặp toán phải cực tiểu hay cực đại hàm nhiều biến mà khơng có đạo hàm bậc nhất, khơng có đạo hàm bậc hai, không lồi, không lõm, không DC, không đơn điệu, khơng thỏa mãn điều kiện Lipchitz Do phương pháp tụt gradien, phương pháp Niu-tơn, phương pháp gradien liên hợp… khơng áp dụng Khi ta cần sử dụng phương pháp tối ưu không dùng đạo hàm, ví dụ phương pháp dị tìm theo tọa độ Hooke – Jeeves 1960 [6] phương pháp tụt theo đơn hình Nelder – Mead 1965 [1], phương pháp Monte – Carlo… Mục đích luận văn nhằm trình bày lại hai thuật tốn không dùng đạo hàm Nelder – Mead Hooke – Jeeves để cực tiểu hàm nhiều biến thử nghiệm thuật tốn máy tính Từ đời hai thuật toán sử dụng rộng rãi ngành kĩ thuật Chính hiệu hai thuật toán mà năm gần nhiều tác giả cố gắng cải tiến thuật toán xây dựng sở lý thuyết chặt chẽ thuật toán, chứng minh hội tụ chúng (xem [2], [3], [5]) Các chương trình máy tính lập trình C luận văn dùng thuật toán cải tiến năm 2004 thuật toán Nelder – Mead Hooke – Jeeves Các thử nghiệm thuật toán có hiệu để giải tốn cực tiểu hàm nhiều biến không khả vi Luận văn bao gồm hai chương tài liệu tham khảo Chương trình bày chi tiết bước thuật tốn Nelder – Mead không gian (minh họa cụ thể khơng gian ), cho sơ đồ khối thuật tốn, mở rộng thuật toán trường hợp biến bị chặn, tính chất thuật tốn Nelder – Mead, cuối chương chương trình máy tính thử nghiệm thuật tốn máy tính Một số phương pháp Tối ưu không dùng Đạo hàm Chương dành cho phương pháp tìm kiếm trực tiếp Hooke – Jeeves: mơ tả bước thuật tốn, sơ đồ khối thuật tốn, ví dụ minh họa thuật tốn, chương trình máy tính thể thuật tốn thử nghiệm máy tính Trong q trình viết luận văn trình xử lý văn chắn khơng tránh khỏi thiếu sót định Tác giả luận văn mong nhận góp ý thầy bạn đồng nghiệp Tác giả bày tỏ lòng biết ơn chân thành sâu sắc tới thầy hướng dẫn PGS-TS Bùi Thế Tâm tận tình bảo, tạo điều kiện giúp đỡ tơi có thêm nhiều kiến thức, khả nghiên cứu, tổng hợp tài tiệu để hoàn thành luận văn Tác giả xin chân thành cảm ơn GS, PGS, TS Viện Toán Học trường Đại Học Khoa Học – Đại học Thái Nguyên giảng dạy tạo điều kiện thuận lợi trình tác giả học tập nghiên cứu Tác giả xin chân thành cảm ơn gia đình bạn bè quan tâm giúp đỡ động viên để tác giả hoàn thành luận văn Tháng 5/ 2015 Tác giả Một số phương pháp Tối ưu không dùng Đạo hàm Chương PHƯƠNG PHÁP NELDER – MEAD CỰC TIỂU HÀM NHIỀU BIẾN Trong chương trình bày thuật tốn Nelder – Mead không gian hai chiều thuật tốn Nelder – Mead khơng gian nhiều chiều, thuật toán Nelder – Mead với biến bị chặn Nội dung chương dựa chủ yếu tài liệu [1], [2], [3],[4] [7] Vào năm 1965 hai nhà thống kê người Anh làm việc Trung tâm Nghiên cứu Thực vật Quốc gia phát minh phương pháp tìm kiếm trực đơn hình Nelder – Mead Phương pháp bật lên người ta đặc biệt quan tâm tới lời giải số toán tối ưu phi tuyến phức tạp thực tế Vì việc nhận đạo hàm bậc ( ) cần tối ưu thường không làm được, nên ưa thích đa số người làm thực tế phương pháp tìm trực tiếp mà cần giá trị hàm ( ) Phương pháp Nelder – Mead đáp ứng điều Từ phương pháp Nelder – Mead xem phương pháp trích dẫn dùng nhiều để cực tiểu hàm phi tuyến không ràng buộc Để hiểu rõ tư tưởng thuật toán ta mơ tả thuật tốn khơng gian sau trình bày thuật tốn khơng gian Mơ tả thuật tốn Nelder – Mead khơng gian Khởi tạo tam giác BGW Giả sử ( , ) hàm số lồi chặt cần cực tiểu Khởi đầu cho ba đỉnh tam giác =( , ), = 1, 2, Sau tính giá trị hàm ba đỉnh Một số phương pháp Tối ưu không dùng Đạo hàm = ( là: dần: ≤ ≤ ) với , = 1, 2, Sắp xếp giá trị hàm theo thứ tự tăng Dùng kí hiệu: = ( x ; y ), = ( x ; y ), = ( x ; y ), (1) B đỉnh tốt (best), G đỉnh tốt (good, sát với đỉnh tốt nhất),W đỉnh xấu (worst) Tính điểm cạnh tốt Q trình tính tốn dùng điểm đoạn thẳng nối B G : = + = + , + (2) Phép phản xạ dùng điểm R Hàm ( , ) giảm ta dọc theo cạnh tam giác từ W tới B giảm dọc theo cạnh từ W tới G Do hàm ( , ) nhận giá trị nhỏ phía đoạn BG xuất phát từ W Để xác định R trước tiên tìm điểm M cạnh BG Vẽ đoạn thẳng từ W tới M , gọi độ dài d Kéo dài đoạn thẳng đoạn d qua M ta điểm R Công thức véc tơ điểm R là: +( = − )=2 B − (3) R d d M W G Hình Tam giác ∆ BGW, trung điểm M điểm phản xạ R Phép dãn dùng điểm E Một số phương pháp Tối ưu không dùng Đạo hàm Nếu giá trị hàm điểm R nhỏ giá trị hàm điểm W ta chuyển theo hướng tốt để cực tiểu hàm Tất nhiên điểm cực tiểu chưa điểm R Ta đoạn thẳng MR tới điểm E Điều tạo nên tam giác BGE Điểm E tìm cách tiếp khoảng d bổ sung dọc theo đường nối M R B dd d d W M E R G Hình Tam giác ∆ BGW, điểm R điểm dãn E Nếu giá trị hàm E nhỏ giá trị hàm R ta tìm đỉnh tốt R Cơng thức véc tơ tính điểm E là: = + – =2 − (4) Phép co dùng điểm C Nếu giá trị hàm điểm R W nhau, ta cần kiểm tra điểm khác Xét hai điểm có giá trị hàm nhỏ hai điểm và tương ứng Gọi C điểm , tam giác chọn BGC Một số phương pháp Tối ưu không dùng Đạo hàm B C C R M W G Hình Điểm co phương pháp Nelder – Mead Thu hẹp đơn hình lại B Nếu giá trị hàm C không nhỏ giá trị hàm W điểm G W cần phải co lại B Điểm G thay M, W thay điểm S điểm B S M W G Hình Thu hẹp tam giác ∆ BGW điểm B Mô tả logic bước lặp Thuật tốn tính tốn hữu hiệu tính giá trị hàm điểm cần thiết Tại bước lặp điểm tìm để thay cho W Khi W thay khơng cần xét tiếp, bước lặp kết thúc Mơ tả logic cuả thuật tốn trường hợp chiều [4], cho đoạn giả trình sau: Một số phương pháp Tối ưu khơng dùng Đạo hàm IF ( ) < ( ) THEN BEGIN {Trường hợp : Phản xạ giãn} IF ( ) < ( ) THEN ← ELSE Tính E ( ) IF ( ) < ( ) THEN ← ELSE ← ENDIF ENDIF END ELSE BEGIN {Trường hợp 2: Co thu hẹp} IF ( ) < ( ) THEN ← Tính = hay = ( ) IF ( ) < ( ) THEN ← ELSE Tính ( ) ← ← ENDIF END Ví dụ Tìm cực tiểu hàm, [4] : ( , )= −4 + − − Xuất phát từ ba đỉnh = (0, 0), Giá trị hàm = (1.2, 0.0), = (0.0, 0.8) đỉnh tương ứng : (0, 0) = 0.0, (1.2, 0.0) = − 3.36, (0.0, 0.8) = − 0.16 Với kí hiệu dùng thuật tốn = (1.2, 0.0), = ( 0.0, 0.8), = (0, 0) Điểm W bị thay Tọa độ điểm M R : Giá trị hàm = + =2 − = (0.6, 0.4) = (1.2, 0.8) ( ) = (1.2, 0.8) = − 4.48 nhỏ ( ) , trường hợp xảy Vì ( ) ≤ ( ) nên di chuyển theo hướng véc tơ E xây dựng theo công thức: =2 − = 2(1.2, 0.8) − (0.6, 0.4) = (1.8, 1.2) 10 Một số phương pháp Tối ưu không dùng Đạo hàm { tg=1; dung=0; n=3; h=1; eps=0.00000001; u[1]=8.0; u[2]=9.0;u[3]=7.0; giam=0.1; vocung=1000000.0; system("cls"); sumchange=0; dotimcoso=0; dotimv=0; inter = 0; if (tg==1) f= fopen("ketqua2.cpp","w"); printf("\n n = %d , h = %13.5f , eps = %13.5f",n,h,eps); if (tg==1) fprintf(f,"\n n = %d , h = %13.5f , eps = %13.5f",n,h,eps); ft = ham(u,n); for (i=1;i