KHÁI NIỆM VỀ ĐỐI NGẪU
Đối ngẫu là một khái niệm cơ bản của việc giải bài toán quy hoạch tuyến tính vì lý thuyết đối ngẫu dẫn đến một kết quả có tầm quan trọng về mặt lý thuyết và cả mặt thực hành.
Đối ngẫu của quy hoạch tuyến tính dạng chính tắc
Xét một bài toán quy hoạch tuyến tính dạng chính tắc
min z
(
x
)
=
c
T
x
Ax
=
b
x
≥
0
{
min z
(
x
)
=
c
T
x
Ax
=
b
x
≥
0
{
alignl { stack {
size 12{"min z" \( x \) =c rSup { size 8{T} } x} {} #
alignl { stack {
left lbrace "Ax"=" b " {} #
right none left lbrace x >= "0 " {} #
right no } } lbrace {}
} } {}
Giả sử rằng x* là phương án tối ưu cần tìm của bài toán và x0 là một phương án của bài toán thì một cận trên của giá trị mục tiêu tối ưu được xác định vì :
cTx* £ cTx0
Tuy chưa tìm được phương án tối ưu x* nhưng nếu biết thêm được một cận dưới của giá trị mục tiêu tối ưu thì ta đã giới hạn được phần nào giá trị mục tiêu tối ưu. Người ta ước lượng cận dưới này theo cách như sau :
Với mỗi vectơ xT = [x1 x2 ... xn] ³ 0 thuộc Rn chưa thoả ràng buộc của bài toán, tức là
b – Ax ¹ 0
người ta nới lỏng bài toán trên thành bài toán nới lỏng :
min L(x,y) = cTx + yT(b - Ax)
x ³ 0
yT = [ y1 y2 ... ym] tuỳ ý Î Rm
Gọi g(y) là giá trị mục tiêu tối ưu của bài toán nới lỏng, ta có :
g(y)= min { cTx + yT(b - Ax) } (x ³ 0)
£ cTx + yT(b - Ax)
Trong trường hợp x là phương án của bài toán ban đầu, tức là :
b - Ax = 0
thì
g(y) £ cTx
Vậy g(y) là một cận dưới của giá trị mục tiêu bất kỳ nên cũng là cận dưới của giá trị mục tiêu tối ưu.
Một cách tự nhiên là người ta quan tâm đến bài toán tìm cận dưới lớn nhất, đó là :
max g(y)
y tuỳ ý Î Rm
Bài toán này được gọi là bài toán đối ngẫu của bài toán ban đầu. Trong phần sau người ta sẽ chứng minh giá trị mục tiêu tối ưu của bài toán đối ngẫu bằng với giá trị mục tiêu tối ưu của bài toán gốc ban đầu.
Người ta đưa bài toán đối ngẫu về dạng dể sử dụng bằng cách tính như sau :
g(y)= min { cTx+yT(b - Ax) }(x ³ 0)
= min { cTx + yTb - yTAx }(x ³ 0)
= min { yTb + (cT - yTA)x }(x ³ 0)
= yTb + min { (cT - yTA)x } (x ³ 0)
Ta thấy :
min
(
c
T
−
y
T
A
)
x
=
(
x
≥
0
)
[
0
khi c
T
−
y
T
A
≥
0
[
không
xác đinh khi c
T
−
y
T
A
<
0
[
min
(
c
T
−
y
T
A
)
x
=
(
x
≥
0
)
[
0
khi c
T
−
y
T
A
≥
0
[
không
xác đinh khi c
T
−
y
T
A
<
0
[
size 12{ {"min" \( c rSup { size 8{T} } - y rSup { size 8{T} } A \) x={}} cSub { size 8{ \( x >= 0 \) } } alignl { stack {
\[0" khi c" rSup { size 8{T} } - y rSup { size 8{T} } A >= 0 {} #
\[ ital "không"" xác đinh khi c" rSup { size 8{T} } - y rSup { size 8{T} } A<0 {}
} } \[ } {}
Vậy ta nhận được :
g(y) = yTb với cT - yTA 0
Suy ra bài tóan đối ngẫu có dạng :
max
g
(
y
)
=
y
T
b
y
T
A
≤
c
T
y
∈
R
m
tùy ý
{
max
g
(
y
)
=
y
T
b
y
T
A
≤
c
T
y
∈
R
m
tùy ý
{
alignl { stack {
size 12{"max"" g" \( y \) =y rSup { size 8{T} } b} {} #
alignl { stack {
left lbrace y rSup { size 8{T} } A <= c rSup { size 8{T} } {} #
right none left lbrace y in R rSup { size 8{m} } " tùy ý " {} #
right no } } lbrace {}
} } {}
Hay là :
max
g
(
y
)
=
b
T
y
A
T
y
≤
c
y
∈
R
m
tùy ý
{
max
g
(
y
)
=
b
T
y
A
T
y
≤
c
y
∈
R
m
tùy ý
{
alignl { stack {
size 12{"max"" g" \( y \) =b rSup { size 8{T} } y} {} #
alignl { stack {
left lbrace A rSup { size 8{T} } y <= c {} #
right none left lbrace y in R rSup { size 8{m} } " tùy ý " {} #
right no } } lbrace {}
} } {}
Định nghĩa đối ngẫu trong trường hợp quy hoạch tổng quát
Trong trường hợp quy hoạch tuyến tính tổng quát, những quy tắc sau đây được áp dụng để xây dựng bài toán đối ngẫu :
- Hàm mục tiêu đối ngẫu :
. max « min
- Biến đối ngẫu :
. Mỗi ràng buộc « một biến đối ngẫu
- Chi phí đối ngẫu và giới hạn ràng buộc :
. Chi phí đối ngẫu « giới hạn ràng buộc
- Ma trận ràng buộc đối ngẫu :
. Ma trận chuyển vị
- Chiều của ràng buộc và dấu của biến :
. Ràng buộc trong bài toán max có dấu £ thì biến đối ngẫu trong bài toán min có dấu ³ 0 ( trái chiều )
. Ràng buộc trong bài toán max có dấu = thì biến đối ngẫu trong bài toán min có dấu tùy ý.
. Ràng buộc trong bài toán max có dấu ³ thì biến đối ngẫu trong bài toán min có dấu £ 0 ( trái chiều )
. Biến của bài toán max có dấu ³ 0 thì ràng buộc đối ngẫu trong bài toán min có dấu ³ ( cùng chiều )
. Biến của bài toán max có dấu tùy ý thì ràng buộc đối ngẫu trong bài toán min có dấu = .
. Biến của bài toán max có dấu £ 0 thì ràng buộc trong bài toán đối ngẫu min có dấu £ ( cùng chiều )
Xét các ràng buộc dạng ma trận của một bài toán quy hoạch tuyến tính tổng quát như sau :
a
i
T
→
a
11
a
12
.
.
.
a
1j
.
.
.
a
1n
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
a
i1
a
i2
.
.
.
a
ij
.
.
.
a
in
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
a
m1
a
m2
.
.
.
a
mj
.
.
.
a
mn
x
1
x
2
.
.
.
x
j
.
.
.
x
n
b
1
.
.
.
b
i
.
.
.
b
m
↑
A
j
a
i
T
→
a
11
a
12
.
.
.
a
1j
.
.
.
a
1n
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
a
i1
a
i2
.
.
.
a
ij
.
.
.
a
in
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
a
m1
a
m2
.
.
.
a
mj
.
.
.
a
mn
x
1
x
2
.
.
.
x
j
.
.
.
x
n
b
1
.
.
.
b
i
.
.
.
b
m
↑
A
j
alignl { stack {
size 12{a rSub { size 8{i} } rSup { size 8{T} } rightarrow " " left [ matrix {
a rSub { size 8{"11"} } {} # a rSub { size 8{"12"} } {} # "." "." "." {} # a rSub { size 8{ ital "1j"} } {} # "." "." "." {} # a rSub { size 8{1n} } {} ##
"." "." "." {} # "." "." "." {} # "." "." "." {} # "." "." "." {} # "." "." "." {} # "." "." "." {} ##
a rSub { size 8{ ital "i1"} } {} # a rSub { size 8{ ital "i2"} } {} # "." "." "." {} # a rSub { size 8{ ital "ij"} } {} # "." "." "." {} # a rSub { size 8{ ital "in"} } {} ##
"." "." "." {} # "." "." "." {} # "." "." "." {} # "." "." "." {} # "." "." "." {} # "." "." "." {} ##
a rSub { size 8{m1} } {} # a rSub { size 8{m2} } {} # "." "." "." {} # a rSub { size 8{ ital "mj"} } {} # "." "." "." {} # a rSub { size 8{ ital "mn"} } {}
} right ] left [ matrix {
x rSub { size 8{1} } {} ##
x rSub { size 8{2} } {} ##
"." "." "." {} ##
x rSub { size 8{j} } {} ##
"." "." "." {} ##
x rSub { size 8{n} }
} right ] matrix {
={} {} ##
<= {} {} ##
>= {}
} left [ matrix {
b rSub { size 8{1} } {} ##
"." "." "." {} ##
b rSub { size 8{i} } {} ##
"." "." "." {} ##
b rSub { size 8{m} }
} right ]} {} #
" " uparrow " A" rSub { size 8{j} } {}
} } {}
Ký hiệu :
aiTaiT size 12{a rSub { size 8{i} } rSup { size 8{T} } } {} là dòng thứ i(i=1,2,...,m)
Aj là cột thứ j(j=1,2,...,n)
Khi đó, mối liên hệ giữa hai bài toán đối ngẫu có thể được trình bày như sau :
| z(x) = cTx ® min |
w(y) = yTb ® max |
Ràng buộc / Dấu |
|
a
i
T
x
=
b
i
a
i
T
x
=
b
i
size 12{a rSub { size 8{i} } rSup { size 8{T} } x=b rSub { size 8{i} } } {}
|
yi tự do |
|
a
i
T
x
≤
b
i
a
i
T
x
≤
b
i
size 12{a rSub { size 8{i} } rSup { size 8{T} } x <= b rSub { size 8{i} } } {}
|
yi £ 0 |
|
a
i
T
x
≥
b
i
a
i
T
x
≥
b
i
size 12{a rSub { size 8{i} } rSup { size 8{T} } x >= b rSub { size 8{i} } } {}
|
yi ³ 0 |
|
Cùng chiều |
| xj ³ 0 |
yTAj £ cj |
| xj £ 0 |
yTAj ³ cj |
| xj tự do |
yTAj = cj |
|
Trái chiều |
Ví dụ
a- Hai bài toán sau đây là đối ngẫu :
max z(x)=30x1+10x22x1+x2≤42x1+2x2≤6x1,x2≥0{max z(x)=30x1+10x22x1+x2≤42x1+2x2≤6x1,x2≥0{alignl { stack {
size 12{"max z" \( x \) ="30x" rSub { size 8{1} } +"10"x rSub { size 8{2} } } {} #
alignl { stack {
left lbrace "2x" rSub { size 8{1} } +x rSub { size 8{2} } <= 4 {} #
right none left lbrace "2x" rSub { size 8{1} } +2x rSub { size 8{2} } <= 6 {} #
right no } } lbrace {} #
x rSub { size 8{1} } ,x rSub { size 8{2} } >= 0 {}
} } {}(P)
min w(y)=4y1+6y22y1+2y2≥30y1+2y2≥10y1,y2≥0{min w(y)=4y1+6y22y1+2y2≥30y1+2y2≥10y1,y2≥0{alignl { stack {
size 12{"min"" w" \( y \) ="4y" rSub { size 8{1} } +6y rSub { size 8{2} } } {} #
alignl { stack {
left lbrace "2y" rSub { size 8{1} } +2y rSub { size 8{2} } >= "30" {} #
right none left lbrace y rSub { size 8{1} } +2y rSub { size 8{2} } >= "10" {} #
right no } } lbrace {} #
y rSub { size 8{1} } ,y rSub { size 8{2} } >= 0 {}
} } {}(D)
b- Hai bài toán sau đây là đối ngẫu :
min w(x)=x1−x2+x3+2x4