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

pdf187 trang | Chia sẻ: lethuong715 | Lượt xem: 484 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Giáo trình Tối ưu hóa - Nguyễn Hải Thanh, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
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:

  • pdfToi-uuhoa- tin học.pdf