Bài toán tối ưu

40 0 0
Bài toán tối ưu

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài tốn tối ưu TỐN RỜI RẠC NỘI DUNG Giới thiệu  Kỹ thuật nhánh cận  Kỹ thuật nhánh cận giải toán người bán hàng  GIỚI THIỆU  Bài tốn tối ưu: Là tốn tìm tổ hợp tốt tổ hợp tạo ra, thỏa mãn yêu cầu cho trước  Tối ưu tổ hợp có nhiều ứng dụng thực tế MỘT SỐ BÀI TOÁN TỐI ƯU  Xếp ba lơ (1): có ba lơ, mang khơng q trọng lượng b Có n đồ vật với trọng lượng: a1, …, an giá trị c1, …, cn tương ứng Hỏi ta xếp vào ba lô vật để mang giá trị lớn nhất?  Xếp ba lô (2): tương tự loại đồ vật mang theo từ 0->m lần MỘT SỐ BÀI TỐN TỐI ƯU  Bài tốn người bán hàng:  người bán hàng cần giao hàng đến n điểm: T1, …, Tn  Đường đi: Xuất phát từ địa điểm Ti, qua tất điểm lại, nơi qua lần quay trở lại vị trí xuất phát  Biết Cij chi phí từ địa điểm Ti đến Tj  Yêu cầu: Hãy tìm hành trình thỏa mãn u cầu có tổng chi phí nhỏ MỘT SỐ BÀI TOÁN TỐI ƯU  Bài tốn phân cơng: Có n cơng việc n thợ Cij chi phí để trả cho thợ i làm cơng việc j Hãy tìm cách th thợ cho tổng chi phí nhỏ Lưu ý: thợ làm việc việc làm thợ MỘT SỐ BÀI TOÁN TỐI ƯU  Bài toán trả tiền ATM: Khách hàng yêu cầu rút số tiền n Trong ATM có loại tiền với mệnh giá: a1, …, am Tính xem phải trả tiền để số tờ tiền nhất? BÀI TỐN Dạng tổng qt toán tối ưu:  Cho tập hữu hạn phần tử D  Hàm mục tiêu f(X) xác định D  Mỗi phần tử X ∈ D có dạng X = (x1, x2, …, xn) gọi phương án  Yêu cầu: Tìm phương án X0 cho f(X0) đạt cực đại (cực tiểu) D Phương án X0 gọi phương án tối ưu VÍ DỤ Bài tốn xếp ba lơ (mỗi đồ vật chọn không lần):  Tập phương án (D): Tập n phần tử (x1, …, xn) xi = khơng chọn vật thứ i = chọn  Hàm mục tiêu (f) : Tổng giá trị đồ vật xếp được: f 𝑥 = σ𝑛𝑖=1 𝑥𝑖 𝑐𝑖  Điều kiện: Tổng khối lượng không b: σ𝑛𝑖=1 𝑥𝑖 𝑎𝑖 ≤ 𝑏  Yêu cầu: Tìm phương án thỏa mãn điều kiện làm hàm mục tiêu đạt cực đại KỸ THUẬT NHÁNH CẬN KT NHÁNH CẬN GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG  Tập tất phương án (S0) chia thành tập rời S1, S2, …  Tập có cận nhỏ lựa chọn để phân chia tiếp  Khi tập có phương án => tính chi phí phương án  Sử dụng kết tính để đối chiếu, cập nhật cho giá trị kỷ lục  Tập có cận lớn kỷ lục bị loại XÁC ĐỊNH CẬN DƯỚI    Trên ma trận chi phí, hàng, cột có giá trị chọn Nếu bớt tất phần tử hàng (cột) giá trị a chi phí tất đường giảm a Rút gọn ma trận chi phí 𝑐′𝑖𝑗 = 𝑐𝑖𝑗 − 𝛼𝑖 − 𝛽𝑗 Sao cho: hàng cột có giá trị => Đường có chi phí (cận dưới) không nhỏ tổng giá trị mà ta trừ tất hàng cột 𝑛 𝑛 𝛾 𝑆 = ෍ 𝛼𝑖 + ෍ 𝛽𝑗 𝑖=1 𝑗=1 XÁC ĐỊNH CẬN DƯỚI  Ví dụ: Ma trận chi phí ∞ 93 13 33 ∞ 77 42 21 45 17 ∞ 36 39 90 80 28 46 s[j]  Ma trận rút gọn r[i] ∞ 75 30 16 ∞ 58 30 17 12 16 28 16 29 ∞ 12 12 ∞ 56 7 32 83 58 ∞ 49 88 33 ∞ 25 25 21 48 ∞ 88 18 46 92 ∞ 85 35 89 ∞ 15 0 Cận = + + 16 + + 25 + + 15 + = 81 QUY TẮC PHÂN NHÁNH  Giả sử cần phân nhánh tập Sp ⊂ S0  Cách phân nhánh: chia thành tập Sp1 chứa cạnh (r,s) Sp2 không chứa cạnh (r,s)  Cạnh (r,s) chọn cho: Sp1 có khả chứa phương án tối ưu => chọn (r,s) | hiệu cận Sp1 Sp2 max QUY TẮC PHÂN NHÁNH  Ma trận chi phí: C = [cij] – rút gọn  Ta xét tập hợp tương ứng S0, S1, S2   S1 tập đường chứa cạnh (r, s), S2 không chứa (r, s) Ta thấy:  Với S1, cấu trúc tốn khơng thay đổi; ma trận C bớt hàng r, cột s Ma trận thỏa mãn dạng rút gọn => hàm cận tăng thêm: 𝛾 𝑆1 = 𝑐𝑟𝑠  Với S2, xrs = => ∃𝑥𝑟𝑗 , 𝑥𝑖𝑠 = 𝑗 ≠ 𝑠, 𝑖 ≠ 𝑟 => hàm cận tăng thêm:  S   crj  xis js ir QUY TẮC PHÂN NHÁNH  Nếu chọn cạnh (r,s) có chi phí crs > 0: Trên hàng r cột s chắn tồn phần tử => γ(S2) = < crs => loại  Nếu chọn cạnh (r,s) có chi phí = Hiệu chênh lệch γ(S1) γ(S2) γ(S2) Để giá trị lớn nhất: ta tìm cặp (r, s): max crj  xis  ir r ,s  j  s  * => Với tập đường đi, ta chọn cạnh (r, s) thoả mãn (*) để phân thành tập con: tập đường chứa cạnh (r, s) tập không chứa cạnh (r, s) NGĂN CẤM TẠO CHU TRÌNH CON  Sau lựa chọn ta cần thực số thay đổi bắt buộc trước tính lại cận dưới:  Nếu 𝑥𝑢𝑗 = ∀ 𝑗 = 1, 𝑛 \ 𝑣 ⇒ 𝑥𝑢𝑣 =  Nếu 𝑥𝑗𝑣 = ∀ 𝑗 = 1, 𝑛 \ 𝑢 ⇒ 𝑥𝑢𝑣 =  Nếu khơng chọn cạnh (r, s) crs = ∞  Nếu chọn cạnh (r, s) csr = ∞  Trong cạnh chọn thêm cạnh để tạo thành chu trình phải đặt chi phí cạnh ∞ Ví dụ: Nếu chọn cạnh (1, 2) (2, 5) => phải đặt giá trị cạnh (5,2) C52 = ∞ VÍ DỤ - CHỌN CẠNH PHÂN NHÁNH 6 ∞ 75 30 ∞ 03 75 30 ∞ 58 30 17 12 012 ∞ 58 30 17 12 29 ∞ 12 12 29 ∞ 12 018 12 32 83 58 ∞ 49 32 83 58 ∞ 49 032 21 48 ∞ 21 48 02 ∞ 00 85 35 89 ∞ 00 85 048 35 89 ∞ VÍ DỤ - CHỌN CẠNH PHÂN NHÁNH 6 ∞ 75 30 ∞ 03 75 30 ∞ 58 30 17 12 012 ∞ 58 30 17 12 29 ∞ 12 12 29 ∞ 12 018 12 32 83 58 ∞ 49 32 83 58 ∞ 49 032 21 48 ∞ 21 48 02 ∞ 00 85 35 89 ∞ 00 85 048 35 89 ∞ Chọn cạnh (6, 3) để phân nhánh VÍ DỤ - CHỌN CẠNH PHÂN NHÁNH 6 ∞ 30 ∞ 03 75 30 ∞ 30 17 12 012 ∞ 58 30 17 12 29 12 ∞ 29 ∞ 12 018 12 32 83 ∞ 49 32 83 58 ∞ 49 032 21 ∞ 21 48 02 ∞ 00 85 ∞ 35 89 ∞ S1: xóa hàng 6, cột 3, đặt c36 = ∞ S2: đặt c63 = ∞ VÍ DỤ - CHỌN CẠNH PHÂN NHÁNH 6 ∞ 03 30 ∞ 03 75 30 015 ∞ 30 17 12 012 ∞ 58 30 17 12 29 12 018 ∞ 29 ∞ 12 018 12 32 83 ∞ 49 032 32 83 58 ∞ 49 032 21 02 ∞ 00 21 48 02 ∞ 00 00 85 ∞ 35 89 ∞ S1: xóa hàng 6, cột 3, đặt c36 = ∞ Cận mới: 81 S2: đặt c63 = ∞ Cận mới: 81 + 48 = 129 VÍ DỤ ∞ 03 30 015 ∞ 30 17 12 29 12 018 ∞ 83 ∞ 49 032 32 21 02 ∞ ∞ 03 30 020 ∞ 30 17 29 ∞ 018 21 05 ∞ Có cạnh (4, 6) (6, 3) => phải đặt cạnh (3, 4) = ∞ Cận mới: 81 ∞ 03 30 015 ∞ 30 17 12 29 12 018 ∞ 32 83 ∞ 49 ∞ 21 02 ∞ 06 00 Cận mới: 81 + 32 = 113 VÍ DỤ ∞ 03 30 020 ∞ 30 17 ∞ 018 29 21 … 05 ∞ ∞ 30 ∞ 21 ∞ Chọn cạnh (2, 1) => đặt cạnh (1, 2) = ∞ Rút gọn lại ma trận Cận mới: 81 + + = 84 ∞ 03 30 ∞ ∞ 30 17 29 ∞ 018 21 05 ∞ ∞ 028 28 020 ∞ 028 20 020 ∞ Cận mới: 81 + 20 = 101 VÍ DỤ  Kết quả: đường (1, 4, 6, 3, 5, 2, 1) chi phí: 104 TT NHÁNH CẬN GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG  Thủ tục rút gọn ma trận, tính cận (tr 126)  Thủ tục chọn cạnh phân nhánh (tr 128)  Thuật toán (tr 134)

Ngày đăng: 11/04/2023, 13:04

Tài liệu cùng người dùng

Tài liệu liên quan