Chương 2: BÀI TOÁN QUY HOẠCH TUYẾN TÍNH ĐỐI NGẪU
2.1. BÀI TOÁN QUY HOẠCH TUYẾN TÍNH ĐỐI NGẪU
Để lập đƣợc bài toán đối ngẫu cho bài toán QHTT ban đầu (P), ta xét 2 quy tắc sau:
a) Quy tắc 1: Bài toán gốc có hàm mục tiêu min
Bài toán gốc (P) Bài toán đối ngẫu (D) f(x) =
n j j j 1
c x
min g(y) = m i i
i 1
b y
max
Ràng buộc thứ i:
n ij j j 1
a x
bi Ẩn thứ i: yi 0 0 tuú ý
Ẩn thứ j: xj
0 0 tuú ý
Ràng buộc thứ j:
m ij i i 1
a y
cj
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT NAM ĐỊNH 77 Ví dụ 1: Lập bài toán đối ngẫu của bài toán sau:
f(x) = 3x1 - 2x2 - 5x3 + 4x4 → min 3 x1 + 2x2 - 5x3 - 3x4 ≤ 6
-2 x1 + x2 + x3 + 2x4 = - 7 (P) x1 - 3x2 + 4x3 + x4 ≥ 9
x1, x3 ≥ 0; x2 tùy ý; x4 ≤ 0 Giải:
* Trước hết lấy vế phải của ràng buộc bắt buộc làm hệ số của hàm mục tiêu:
g(y) = 6y1 - 7y2 + 9y3 max
* Chuyển vị ma trận hệ số trong các ràng buộc bắt buộc ràng buộc bắt buộc của bài toán QHTT đối ngẫu:
3y1 - 2y2 + y3 ≤ 3 (vì ẩn x1 ≥ 0) 2y1 + y2 - 3y3 = -2 (vì ẩn x2 tùy ý) -5y1 + y2 + 4y3 ≤ -5 (vì ẩn x3 ≥ 0) -3y1 + 2y2 + y3 ≥ 4 (vì ẩn x4 ≤ 0)
* Xác định dấu của các ẩn:
Vì ràng buộc (1) có dấu “≤” nên ẩn y1 ≤ 0 Vì ràng buộc (2) có dấu “=” nên ẩn y2 tùy ý Vì ràng buộc (3) có dấu “≥” nên ẩn y3 ≥ 0 Kết luận: bài toán QHTT đối ngẫu của bài toán trên là:
g(y) = 6y1 - 7y2 + 9y3 max 3y1 - 2y2 + y3 ≤ 3 2y1 + y2 - 3y3 = -2 -5y1 + y2 + 4y3 ≤ -5 -3y1 + 2y2 + y3 ≥ 4
y1 ≤ 0, y2 tùy ý, y3 ≥ 0
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT NAM ĐỊNH 78 b) Quy tắc 2: Bài toán gốc (P) có hàm mục tiêu max
Bài toán gốc (P) Bài toán đối ngẫu (D) f(x) =
n j j j 1
c x
max g(y) = m i i
i 1
b y
min
Ràng buộc thứ i:
n ij j j 1
a x
bi Ẩn thứ i: yi 0 0 tuú ý
Ẩn thứ j: xj 0 0 tuú ý
Ràng buộc thứ j:
m ij i i 1
a y
cj
Ví dụ 2: Lập bài toán đối ngẫu của bài toán sau:
f(x) = 3x1 - 2x2 - 5x3 + 4x4 → max 3 x1 + 2x2 - 5x3 - 3x4 ≤ 6
-2 x1 + x2 + x3 + 2x4 = - 7 (P) x1 - 3x2 + 4x3 + x4 ≥ 9
x1, x3 ≥ 0; x2 tùy ý; x4 ≤ 0 Giải:
* Trước hết lấy vế phải của ràng buộc bắt buộc làm hệ số của hàm mục tiêu:
g(y) = 6y1 - 7y2 + 9y3 min
* Chuyển vị ma trận hệ số trong các ràng buộc bắt buộc ràng buộc bắt buộc của bài toán QHTT đối ngẫu:
3y1 - 2y2 + y3 ≥ 3 (vì ẩn x1 ≥ 0) 2y1 + y2 - 3y3 = -2 (vì ẩn x2 tùy ý)
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT NAM ĐỊNH 79 -5y1 + y2 + 4y3 ≥ -5 (vì ẩn x3 ≥ 0)
-3y1 + 2y2 + y3 ≤ 4 (vì ẩn x4 ≤ 0)
* Xác định dấu của các ẩn:
Vì ràng buộc (1) có dấu “≤” nên ẩn y1 ≥ 0 Vì ràng buộc (2) có dấu “=” nên ẩn y2 tùy ý Vì ràng buộc (3) có dấu “≥” nên ẩn y3 ≤ 0 Kết luận: bài toán QHTT đối ngẫu của bài toán trên là:
g(y) = 6y1 - 7y2 + 9y3 min 3y1 - 2y2 + y3 ≥ 3 2y1 + y2 - 3y3 = -2 -5y1 + y2 + 4y3 ≥ -5 -3y1 + 2y2 + y3 ≤ 4 y1 ≥ 0, y2 tùy ý, y3 ≤ 0
Chú ý: Bài toán đối ngẫu của bài toán đối ngẫu chính là bài toán gốc.
2.1.2. Quan hệ giữa bài toán gốc (P) và bài toán đỗi ngẫu (D) a. Các định lý đối ngẫu
Định lý 1: Với bài toán P và D, chỉ xảy ra một trong 3 trường hợp sau:
1) Cả 2 đều không có phương án.
2) Cả 2 đều có phương án, lúc đó cả 2 đều có PATƯ và giá trị hàm mục tiêu đối với PATƢ là nhƣ nhau.
3) Một trong 2 bài toán có phương án, còn bài toán kia không có phương án. Khi đó bài toán có phương án sẽ không có PATƯ và hàm mục tiêu không bị chặn.
Hệ quả 1: Nếu một trong hai bài toán có PATƢ thì bài toán kia cũng có PATƢ Hệ quả 2: Điều kiện cần và đủ để x* là PATƢ của bài toán (P) và y* là PATƢ của bài toán (D) là:
f(x*) = g(y*)
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT NAM ĐỊNH 80
Định lý 2: Điều kiện cần và đủ để x* = (x , x , . . . , x*1 *2 *n) là PATƢ của bài toán (P) và y*= (y , y , . . . , y*1 *2 *m) là PATƢ của bài toán (D) là:
n
* *
i ij j i
j 1 m
* *
j ij i j
i 1
y a x b 0 (j 1, m)
x a y c 0 (i 1, n)
Chú ý: các phương trình ở hệ trên đều có dạng A.B = 0, do đó nếu ta thấy một thừa số A hoặc B khác không thì thừa số còn lại phải bằng không.
b. Các ví dụ
Ví dụ 3: Cho bài toán gốc (P):
F(x) = 2x1 - x2 + 3x3 → min - x1 + x2 + 3x3 = 3 2x1 - x2 + x3 = 1 2x2 + 3x3 = 3
xj ≥ 0 (j = 1, 2, 3) a) Giải bài toán gốc (P)
b) Tìm bài toán đối ngẫu (D)
c) Tìm nghiệm của bài toán đối ngẫu Giải a) Bài toán mở rộng của bài toán trên là:
F(x) = 2x1 - x2 + 3x3 + Mx4 + Mx5 + Mx6 → min - x1 + x2 + 3x3 + x4 = 3
2x1 - x2 + x3 + x5 = 1 2x2 + 3x3 + x6 = 3 xj ≥ 0 (j = 1, 2, . . . , 6)
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT NAM ĐỊNH 81 Có ma trận hệ số là:
1 1 3 1 0 0
A 2 1 1 0 1 0
0 2 3 0 0 1
Có PACB ban đầu là: x = (0; 0; 0; 3; 1; 3) Lập bảng đơn hình:
Hệ số ẩn
CB PA
2 -1 3 M M M
i
x1 x2 x3 x4 x5 x6
M x4 3 -1 1 3 1 0 0 1
M x5 1 2 -1 1 0 1 0 1
M x6 3 0 2 3 0 0 1 1
Lần 1
aj 0 -2 1 -3 0 0 0
bj 7 1 2 7 0 0 0
3 x3 1 -1/3 1/3 1 -
M x5 0 7/3 -4/3 0 0
M x6 0 1 1 0 0
Lần 2
aj 3 -3 2 0
bj 0 10/3 -1/3 0
3 x3 1 0 1/7 1 7
2 x1 0 1 -4/7 0 -
M x6 0 0 11/7 0 0
Lần 3
aj 3 0 2/7 0
bj 0 0 11/7 0
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT NAM ĐỊNH 82
3 x3 1 0 0 1
2 x1 0 1 0 0
-1 x2 0 0 1 0
Lần 4
aj 3 0 0 0
bj 0 0 0 0
Kết luận: PATƢ của bài toán (P) là (x1 , x2 , x3) = (0 , 0 , 1) Giá trị tối ƣu là f* = 3
b) Tìm bài toán đối ngẫu:
g(y) = 3y1 + y2 + 3y3 → max
ơ
- y1 + 2y2 ≤ 2
y1 - y2 + 2y3 ≤ -1 (D) 3y1 + y2 + 3y3 ≤ 3
yj tùy ý (j = 1, 2, 3) c) Tìm nghiệm của bài toán đối ngẫu (D):
Theo định lý 2 ta có:
x1( - y1 + 2y2 - 2) = 0 x2( y1 - y2 + 2y3 + 1) = 0 x3( 3y1 + y2 + 3y3 - 3) = 0 y1( - x1 + x2 + 3x3 - 3) = 0 y2( 2x1 - x2 + x3 - 1) = 0 y3 ( 2x2 + 3x3 - 3) = 0 Vì x1 = x2 = 0, x3 = 1 ≠ 0 nên:
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT NAM ĐỊNH 83 3y1 + y2 + 3y3 - 3 = 0 (*)
Như vậy, trong trường hợp này bài toán đối ngẫu (D) có vô số nghiệm (y1 , y2 , y3) thỏa mãn (*)
Ví dụ 4: Cho bài toán gốc (P)
f(x) = 52x1 + 60x2 + 36x3 → min
x1 ≥ -2
2x1 + 4x2 + 3x3 ≥ 6 4x1 + 2x2 ≥ 4
x2 ≥ -2
x3 ≥ 3 xj tùy ý (j = 1, 2, 3) a) Tìm bài toán đối ngẫu (D)
b) Giải bài toán đối ngẫu (D)
c) Tìm nghiệm tối ƣu của bài toán gốc (P) Giải a) Bài toán đối ngẫu (D) là:
g(y) = -2y1 + 6y2 + 4y3 - 2y4 + 3y5 → max y1 + 2y2 + 4y3 = 52
4y2 + 2y3 + y4 = 60 3y2 + y5 = 36 yi ≥ 0 (i = 1, 2, . . . , 5)
b) Giải bài toán đối ngẫu
Chuyển bài toán (D) về dạng chuẩn, ta đƣợc:
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT NAM ĐỊNH 84 g’(y) = - g(y) = 2y1 - 6y2 - 4y3 + 2y4 - 3y5 → min
y1 + 2y2 + 4y3 = 52 4y2 + 2y3 + y4 = 60 3y2 + y5 = 36 yi ≥ 0 (i = 1, 2, . . . , 5)
PACB ban đầu là y = (52; 0; 0; 60; 36)
Hệ số ẩn
CB PA
2 -6 -4 2 -3
i y1 y2 y3 y4 y5
2 y1 52 1 2 4 0 0 13
2 y4 60 0 4 2 1 0 30
-3 y5 36 0 3 0 0 1 -
Lần 1 g’(y) 116 0 9 16 0 0
-4 y3 13 1/4 1/2 1 0 0 26
2 y4 34 -1/2 3 0 1 0 34/3
-3 y5 36 0 3 0 0 1 12
Lần 2 g’(y) -92 -4 1 0 0 0
-4 y3 22/3 1/3 0 1 -1/6 0 -
-6 y2 34/3 -1/6 1 0 1/3 0 -
-3 y5 2 1/2 0 0 -1 1 -
g’(y) -310/3 -23/6 0 0 -1/3 0 Kết luận:
Nghiệm tối ƣu của bài toán đối ngẫu (D) là y* = (0 , 34/3 , 22/3 , 0 , 2)
Giá trị tối ƣu đạt đƣợc là g(y*) = - g’(y*) = 310/3
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT NAM ĐỊNH 85 c) Tìm nghiệm của bài toán gốc (P)
Theo định lý 2, ta có:
y1 (x1 + 2) = 0
y2 (2x1 + 4x2 + 3x3 - 6) = 0 y3 (4x1 + 2x2 - 4) = 0 y4 (x2 + 2) = 0
y5 (x3 - 3) = 0
x1 (y1 + 2y2 + 4y3 - 52) = 0 x2 (4y2 + 2y3 + y4 - 60) = 0 x3 (3y2 + y5 - 36) = 0
mà y = (0 , 34/3 , 22/3 , 0 , 2)
y1 = 0 , y2 = 34/3 , y3 = 22/3 , y4 = 0 , y5 = 2 Suy ra:
2x1 + 4x2 + 3x3 - 6 = 0 4x1 + 2x2 - 4 = 0 x3 - 3 = 0
x1 = 11/6 , x2 = -5/3 , x3 = 3
Vậy: PATƢ của bài toán gốc là x = (11/6 , -5/3 , 3) Ví dụ 5: Cho bài toán gốc (P):
f(x) = 2x1 + 3x2 - x3 → max 2x1 + x2 + 3x3 ≥ 5 - x1 + 2x3 = 6 3x1 + 2x2 - x3 ≤ 3 xj ≥ 0 (j = 1, 2, 3)
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT NAM ĐỊNH 86 a) Tìm bài toán đối ngẫu (D)
b) Chứng minh rằng x* = (0 , 3 , 3) là nghiệm tối ƣu của bài toán (P) Giải:
a) Tìm bài toán đối ngẫu (D):
g(y) = 5y1 + 6y2 + 3y3 min 2y1 - y2 + 3y3 ≥ 2 y1 + 2y3 ≥ 3 3y1 + 2y2 - y3 ≥ -1 y1 ≤ 0; y2 tùy ý; y3 ≥ 0
b) Chứng minh rằng x* = (0 , 3 , 3) là nghiệm tối ƣu của bài toán (P) Theo định lý đối ngẫu:
(2x1 + x2 + 3x3 - 5) y1 = 0 ( - x1 + 2x3 - 6) y2 = 0 (3x1 + 2x2 - x3 - 3) y3 = 0 (2y1 - y2 + 3y3 - 2) x1 = 0 (y1 + 2y3 - 3) x2 = 0 (3y1 + 2y2 - y3 + 1) x3 = 0
Giả sử x = (0, 3, 3) là PATƢ của bài toán (P), thay x1 = 0, x2 = 3, x3 = 3 vào hệ trên ta đƣợc:
12y1 = 0
y1 + 2y3 - 3 = 0 3y1 + 2y2 - y3 + 1 = 0
y1 = 0, y2 = 1/4 , y3 = 3/2 y = (0 , 1/4 , 3/2) mà f(x) = 6 = g(y)
Suy ra: x = (0, 3, 3) là PATƢ của bài toán (P) và y = (0 , 1/4 , 3/2) là PATƢ của bài toán (D)