Giáo trình Tối ưu hóa - Nguyễn Hải Thanh
MỤC LỤC
MỞ ĐẦU 6
CHƯƠNG I. BÀI TOÁN TỐI ƯU TỔNG QUÁT VÀ ỨNG DỤNG 7
1. BÀI TOÁN TỐI ƯU TỔNG QUÁT VÀ PHÂN LOẠI 7
1.1. Bài toán tối ưu tổng quát 7
1.2. Phân loại các bài toán tối ưu 8
2. ỨNG DỤNG BÀI TOÁN TỐI ƯU GIẢI QUYẾT CÁC VẤN ĐỀ THỰC TẾ 9
2.1. Phương pháp mô hình hóa toán học 9
2.2. Một số ứng dụng của bài toán tối ưu 10
CHƯƠNG II. PHƯƠNG PHÁP ĐƠN HÌNH GIẢI BÀI TOÁN
QUY HOẠCH TUYẾN TÍNH 16
1. MÔ HÌNH QUY HOẠCH TUYẾN TÍNH 16
1.1. Phát biểu mô hình 16
1.2. Phương pháp đồ thị 17
2. PHƯƠNG PHÁP ĐƠN HÌNH 19
2.1. Tìm hiểu quy trình tính toán 19
2.2. Khung thuật toán đơn hình 23
3. CƠ SỞ TOÁN HỌC CỦA PHƯƠNG PHÁP ĐƠN HÌNH 23
3.1. Phát biểu bài toán quy hoạch tuyến tính dạng chính tắc 23
3.2. Công thức số gia hàm mục tiêu 25
3.3. Tiêu chuẩn tối ưu 26
3.4. Thuật toán đơn hình cho bài toán quy hoạch tuyến tính dạng chính tắc 27
4. BỔ SUNG THÊM VỀ PHƯƠNG PHÁP ĐƠN HÌNH 29
4.1. Đưa bài toán quy hoạch tuyến tính về dạng chính tắc
4.2. Phương pháp đơn hình mở rộng
4.3. Phương pháp đơn hình hai pha
BÀI TẬP CHƯƠNG II 41
CHƯƠNG III. BÀI TOÁN ĐỐI NGẪU VÀ MỘT SỐ ỨNG DỤNG 44
1. PHÁT BIỂU BÀI TOÁN ĐỐI NGẪU 44
1.1. Phát biểu bài toán 44
1.2. Ý nghĩa của bài toán đối ngẫu 45
1.3. Quy tắc viết bài toán đối ngẫu 46
1.4. Các tính chất và ý nghĩa kinh tế của cặp bài toán đối ngẫu 48
2. CHỨNG MINH MỘT SỐ TÍNH CHẤT CỦA CẶP BÀI TOÁN ĐỐI NGẪU 53
2.1. Định lý đối ngẫu yếu 54
2.2. Định lý đối ngẫu mạnh 54
2.3. Định lý độ lệch bù 56
3. THUẬT TOÁN ĐƠN HÌNH ĐỐI NGẪU 57
g buộc D6 = {x ∈ D3: x1 ≤ 3}. LP6 có phương án tối ưu là K(3, 1) có các tọa độ nguyên với zmax = 13. Lưu trữ x* = (3, 1) và Record = 13. Loại bỏ bài toán LP6. Xây dựng LP5 với miền ràng buộc D5 = {x ∈ D2: x1 ≤ 2}. LP5 có phương án tối ưu là F(2, 19/8) với zmax = 31/2. Chia BTQHTT nguyên tương ứng với LP5 thành hai bài toán căn cứ tọa độ x2 = 19/8 không nguyên. Xây dựng LP4 với miền ràng buộc D4 = {x ∈ D2: x1 ≥ 3}. LP4 có miền phương án là miền rỗng. Loại bỏ bài toán LP4. Xây dựng LP7 với miền ràng buộc D7 = {x ∈ D3: x1 ≥ 4}. LP7 có miền phương án là miền rỗng. Loại bỏ bài toán Xây dựng LP9 với miền ràng buộc D9 = {x ∈ D5: x2 ≤ 2}. LP9 có phương án tối ưu có các tọa độ nguyên là H(2, 2) với zmax = 14. Lưu trữ x* = (2, 2) và Record = 14. Loại bỏ bài toán LP9. Xây dựng LP8 với miền ràng buộc D8 = {x ∈ D5: x2 ≥ 3}. LP8 có phương án tối ưu là G(4/7, 3) với zmax = 96/7 < Record = 14. Loại bỏ bài toán LP8. Dừng Hình IV.3. Mô tả phương pháp nhánh cận Land – Doig 90 i) Nếu bài toán không có phương án thì loại bài toán ra khỏi tập S. ii) Nếu bài toán có phương án với tọa độ nguyên thì so sánh zmaxvới Record hiện có: – Nếu zmax ≤ Record thì loại bỏ bài toán ra khỏi tập S. – Nếu zmax > Record thì đặt lại Record = zmax và ghi lại phương án tối ưu sau đó loại bài toán ra khỏi tập S. iii) Còn nếu bài toán có phương án tối ưu nhưng có ít nhất một tọa độ không nguyên thì so sánh zmax với Record hiện có: – Nếu zmax ≤ Record ta loại bỏ bài toán ra khỏi tập S. – Nếu zmax > Record ta chia bài toán thành hai bài toán căn cứ vào một tọa độ không nguyên bất kỳ của phương án tối ưu tìm được. Bước 2: Thiết lập mới tập S gồm tất cả các bài toán thu được từ bước 1. Kiểm tra xem S có bao nhiêu bài toán: Nếu S khác rỗng thì đặt k := k+1 và quay về bước 1, còn nếu S là tập rỗng thì về bước kết thúc. Bước kết thúc. Dừng và in ra Record. 3. Giải bài toán quy hoạch tuyến tính nguyên bằng quy hoạch động 3.1. Bài toán người du lịch Để hiểu rõ các khái niệm cơ bản của quy hoạch động, trước hết chúng ta hãy xét bài toán người du lịch. Trong bài toán người du lịch, chúng ta muốn xác định đường đi ngắn nhất từ một địa điểm xuất phát (điểm gốc) để đi tới điểm cần đến (điểm đích) trên một mạng hành trình du lịch. Ví dụ 4 (Bài toán người đi du lịch). Có một người đi du lịch, xuất phát từ nút 1 và kết thúc hành trình ở nút 10 theo hành trình với sơ đồ như trên hình IV.4. 2 1 7 3 5 4 6 9 8 10 175 175 150 275 200 400 150 100 200 300 100 125 250 275 350 200 Hình IV.4. Sơ đồ hành trình đường đi 91 Người du lịch xuất phát từ nút 1. Trong giai đoạn đầu anh ta chỉ được quyền (và bắt buộc) chọn một trong ba nút (thành phố) 2, 3, 4 để vào thăm quan. Giai đoạn tiếp theo, anh ta chỉ được chọn một trong ba nút 5, 6, 7 để du lịch. Trong giai đoạn tiếp nối, anh ta có quyền vào một trong hai nút 8 hoặc 9 trước khi kết thúc hành trình tại nút 10. Như vậy, trong mỗi giai đoạn người đi du lịch chỉ được quyền đi vào một thành phố (mỗi thành phố được coi là một trạng thái của giai đoạn đó). Hãy tìm cách xác định đường đi ngắn nhất từ nút 1 tới nút 10 thoả mãn các điều kiện đặt ra của bài toán. Nguyên tắc tối ưu Bellman trong quy hoạch động Sử dụng nguyên tắc tối ưu Bellman trong quy hoạch động để giải bài toán người du lịch, chúng ta chia bài toán thành nhiều giai đoạn, tức là thành nhiều bài toán nhỏ. Tại mỗi giai đoạn ta cần tìm phương án tối ưu là các phương án tốt nhất của tình trạng hiện có, xét trong mối quan hệ với các phương án tối ưu đã tìm được của các giai đoạn trước. Ta có thể giải quyết bài toán dần theo từng giai đoạn theo cách tính toán tiến hoặc tính toán lùi. Để giải bài toán này, ta áp dụng cách tính toán lùi (Backward Computing) với các ký kiệu và dữ kiện cho trong bảng IV.4. Bảng IV.4. Dữ kiện của các giai đoạn trong bài toán người du lịch Giai đoạn Đầu vào Đầu ra Đường đi tối ưu Khoảng cách tới đích Giai đoạn I 8 9 10 10 8 → 10 9 → 10 150 100 Giai đoạn II 5 6 7 8 9 5 → 8 6 → 9 7 → 8 400 300 275 Giai đoạn III 2 3 4 5 6 7 2 → 6 3 → 5 4 → 6 600 600 500 Giai đoạn IV 1 2 3 4 1 → 2 1 → 3 1 → 4 700 775 650 Giải thích. Sử dụng nguyên tắc tối ưu Bellman, để tìm đường đi ngắn nhất từ nút 4 tới nút 10 chúng ta tìm được phương án tối ưu là đi từ nút 4 tới nút 6 cho giai đoạn III Lúc này khoảng cách ngắn nhất từ nút 4 tới nút 10 là d(4,10) = d(4,6) + min d(6,10) = 200 + 300 = 500. Điều này là do hai lựa chọn khác là đi từ nút 4 tới nút 5 hay 7 thì đều cho khoảng cách từ nút 4 tới đích là nút 10 lớn hơn (chẳng hạn nếu đi qua nút 5 thì d(4,10) = d(4,5) + min d(5,10) = 175 + 400 = 575). Trong bảng IV.4, tại giai đoạn IV, ta thấy khoảng cách ngắn nhất tới đích là 650. Đi ngược lại, từ điểm gốc tới điểm đích ta xác định được đường đi ngắn nhất là: 1 → 4 → 6 → 9 → 10 với tổng chiều dài là 650. 3.2. Quy trình tính toán tổng quát – Trước hết, cần chọn các biến trạng thái (State variables) như mô tả trong bảng IV.5. 92 Bảng IV.5. Các biến trạng thái của bài toán quy hoạch động Biến Số trạng thái Các trạng thái (nút) Giá trị có thể xảy ra của các biến trạng thái x4 1 1 x4 = 1 x3 3 2, 3, 4 x3 = 2, x3 = 3, x3 = 4 x2 3 5, 6, 7 x2 = 5, x2 = 6, x2 = 7 x1 2 8, 9 x1 = 8, x1 = 9 x0 1 10 x0 = 10 Biến trạng thái mô tả trạng thái của hệ thống trong từng giai đoạn. – Xác định hàm mục tiêu: Đặt Fi(xi) là khoảng cách ngắn nhất tới đích tính tại giai đoạn i. Theo bảng IV.4, ta thấy: F1(x1) = 1 víi x víi =⎡⎢ =⎣ 1 150 8 100 x 9 và F2(x2) = 2 2 2 400 x 5 300 x 6 275 x 7. =⎡⎢ =⎢⎢ =⎣ víi víi víi Mục đích của bài toán là cần tìm được giá trị F4(x4) = F4(1). – Lập hàm truy toán: Fi+1(xi+1) = Min {Fi(xi) + fi (ui)}, Min tìm theo mọi tổ hợp thích hợp xi và ui, trong đó ui là biến điều khiển để điều khiển chuyển trạng thái từ trạng thái xi sang xi+1 và fi(ui) là hiệu ứng của biến điều khiển tác động lên hàm truy toán (và lên hàm mục tiêu nếu tính đến bài toán cuối cùng). Theo biểu thức của hàm truy toán ta thấy, nếu Fi(xi) + fi (ui) là hàm phi tuyến thì phải dùng kỹ thuật tối ưu thích hợp để tìm ra Fi+1(xi+1) . Sau đây chúng ta đi tìm các hàm truy toán Fi+1(xi+1) với quy trình tính toán lùi để giải bài toán theo từng giai đoạn, nhằm cuối cùng tìm ra được F4(x4) = F4(1). Giai đoạn 1: Trong giai đoạn này, muốn chuyển từ nút 10 (x0 = 10) về nút 8 (x1 = 8) chẳng hạn, thì biến điều khiển u0 phải có giá trị 150 (u0 = 150). Hiệu ứng gây nên bởi u0 là f(u0) = 150. Điều này có nghĩa là nếu chuyển từ nút 10 ngược về nút 8 thì cần đi quãng đường có chiều dài là 150. x1 x0 = 10 u0 f0(u0) F1(x1) x1 = 8 + u0 = 150 150 150 150 x1 = 9 + u0 = 100 100 100 100 Chú ý. Không phải bài toán nào cũng có ui trùng với hiệu ứng fi(ui) của nó. Nói chung, biến điều khiển ui có thể gây ra hiệu ứng fi(ui) khác với ui cả về độ lớn cũng như đơn vị đo. Giai đoạn 2: F1 (x1) + f1(u1) x2 x1 = 8 x1 = 9 x1 = 8 x1 = 9 F2(x2) = Min{F1(x1) +f1(u1)} 5 6 7 +u1 = 250 – +u1 = 125 +u1 = 400 +u1 = 200 – 400 – 275 500 300 – 400 = 150 + 250 300 = 100 + 200 275 = 150 + 125 93 Giai đoạn 3: x3 x2 F2(x2) + f2(u2) F3 (x3) = Min 5 6 7 x2 = 5 x2 = 6 x2 = 7 {F2(x2) + f2(u2)} 2 3 4 u2 = 275 u2 = 200 u2 = 175 u2 = 300 – u2 = 200 – u2 = 350 u2 = 275 675 600 575 600 – 500 – 625 550 600 600 500 Giai đoạn 4: x4 x3 = 2 x3 = 3 x3 = 4 F3(x3) + f3(u3) F4 (x4) = Min x3 = 2 x3 = 3 x3 = 4 {F3(x3) + f3(u3)} 1 u3 =100 u3 =175 u3 =150 700 775 650 650 Đáp số: F4(x4) = F4(1) = 650 với đường đi ngắn nhất trên hình IV.5. 3.3. Áp dụng quy hoạch động giải bài toán quy hoạch tuyến tính nguyên Ví dụ 5. Giải BTQHTT nguyên: Max z = 8x1 + 5x2 + x3 với điều kiện ràng buộc 2 1 2 3 1 3 3 2 13 , , 0 + + ≤⎧⎪⎨ ≥⎪⎩ x x x x x x Để phù hợp với cách ký hiệu ở mục 3.2 trên đây, chúng ta viết lại bài toán trên như sau: Max z = 8u0 + 5u1 + u2, với điều kiện ràng buộc 1 0 1 2 0 2 3 2 13 , , 0 + + ≤⎧⎪⎨ ≥⎪⎩ u u u u u u Ký hiệu lại: X0 = 0, X1 = X0 + 3u0, X2 = X1 + 2u1 = 3u0 + 2u1, X3 = X2 + u2 = 3u0 + 2u1 + u2. Gọi các biến trạng thái là X1, X2, X3 và các biến điều khiển là u0, u1, u2. Các hiệu ứng gây nên bởi các biến điều khiển là f(u0) = 8u0, f(u1) = 5u1, f(u2) = u2, x4 = 1 x3 = 4 x0 = 10 x1 = 9 x2 = 6 u0 = 100 u1 = 200 u3 = 150 u2 = 200 Hình IV.5. Đường đi ngắn nhất 1→4→6→9→10 X0 = 0 X1 X3 X2 u2 u0 u1 Biến điều khiển và nguyên. và nguyên. 94 Thiết lập hàm truy toán Fi+1(Xi+1) = Max {Fi(Xi) + fi (ui)} với F0(X0) = 0. Dễ thấy: F1 (X1) = Max f(u0), F2 (X2) = Max {f(u0) + f(u1)} và F3(X3) = Max {f(u0) + f(u1) + f(u2)} = 8u0 + 5u1 + u2 . Mục tiêu cuối cùng là cực đại hoá z = F3 (X3). Trong ví dụ này, chúng ta áp dụng cách tính toán tiến. Giai đoạn 1: (Coi F0(X0) = 0) X0 = 0 X1 u0 = 0, 1, , [13/3] f0(u0) = 8u0 F1(X1) = Max{F0(X0) + f0(u0)} u0 tối ưu 0 3 6 9 12 13 0 1 2 3 4 0 8 16 24 32 0 8 16 24 32 0 1 2 3 4 Giai đoạn 2: X1 0 3 6 9 12 X2 u1 = 0, 1, , [(13– X1)/2] F2 (X2) = Max{F1(X1) + f1(u1)} u1 tối ưu 0 1 2 3 4 5 6 7 8 9 10 11 12 13 0 – 1 – 2 – 3 – 4 – 5 – 6 – – – – 0 – 1 – 2 – 3 – 4 – 5 – – – – – – 0 – 1 – 2 – 3 – – – – – – – – – – 0 – 1 – 2 – – – – – – – – – – – – 0 – 0 – 5 8 10 13 16 18 21 24 26 29 32 34 0 – 1 0 2 1 0 2 1 0 2 1 0 2 95 Giai đoạn 3: X2 0 – 2 3 4 5 6 7 8 9 10 11 12 13 X3 u2 = 0, 1, , 13 – X2 F3(X3) = Max{F2(X2) + f2(u2)} u2 tối ưu 0 1 2 3
File đính kèm:
- Toi-uuhoa- tin học.pdf