Tải bản đầy đủ (.doc) (48 trang)

CHƯƠNG II GIẢI THUẬT ĐƠN HÌNH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (373.62 KB, 48 trang )

GIẢI THUẬT ĐƠN HÌNH

CHƯƠNG II
GIẢI THUẬT ĐƠN HÌNH
Chương này trình bày một cách chi tiết nội dung của giải thuật đơn hình. Sau
phần cơ sở lý thuyết của giải thuật là các ví dụ tương ứng. Các ví dụ được trình bày
đúng theo các bước của giải thuật. Kiến thức trong chương này cần thiết cho việc lập
trình giải quy hoạch tuyến tính trên máy tính.
Nội dung chi tiết của chương bao gồm :
I- GIẢI THUẬT ĐƠN HÌNH CƠ BẢN
1- Cơ sở xây dựng giải thuật đơn hình cơ bản
2- Định lý về sự hội tụ
3- Giải thuật đơn hình cơ bản
4- Chú ý trong trường hợp suy biến
II- GIẢI THUẬT ĐƠN HÌNH CẢI TIẾN
1- Một cách tính ma trận nghịch đảo
2- Quy hoạch tuyến tính dạng chuẩn
3- Giải thuật đơn hình cải tiến
4- Phép tính trên dòng - Bảng đơn hình
III- PHƯƠNG PHÁP BIẾN GIẢ CẢI BIÊN
1- Bài toán cải biên
a- Cải biên bài toán quy hoạch tuyến tính
b- Quan hệ giữa bài toán xuất phát và bài toán cải biên
2- Phương pháp hai pha
3- Phương pháp M vô cùng lớn
IV- QUY HOẠCH TUYẾN TÍNH SUY BIẾN
1- Các ví dụ về quy hoạch tuyến tính suy biến
2- Xử lý quy hoạch tuyến tính suy biến

34



GIẢI THUẬT ĐƠN HÌNH

CHƯƠNG II: GIẢI THUẬT ĐƠN HÌNH
I- GIẢI THUẬT ĐƠN HÌNH CƠ BẢN
Chương này trình bày một phương pháp để giải bài toán quy hoạch tuyến tính
đó là phương pháp đơn hình. Phương pháp đơn hình được George Bernard Dantzig
đưa ra năm 1947 cùng lúc với việc ông khai sinh ra quy hoạch tuyến tính. Đây là một
phương pháp thực sự có hiệu quả để giải những bài toán quy hoạch tuyến tính cở lớn
trong thực tế. Với cách nhìn hiện đại ý tưởng của phương pháp đơn hình rất đơn giản.
Có nhiều cách tiếp cận phương pháp đơn hình, chương này trình bày một trong các
cách đó.

1- Cơ sở xây dựng giải thuật đơn hình cơ bản
Xét bài toán quy hoạch tuyến tính chính tắc :
max z(x) = c T x
 Ax = b

x ≥ 0
0

Giả sử rằng B là một cơ sở khả thi xuất phát của bài toán ( không nhất thiết là
m cột đầu tiên của ma trận A ) . Thuật toán đơn hình cơ bản được xây dựng dựa trên
các bước sau :
0

a-

Gán B = B và l=0 ( số lần lặp )


b-

l = l+1

c-

Với cơ sở hiện thời B tính :
xB
x=
x
b=B
T

N

−1

=B
b : phương án cơ sở khả thi tương ứng

=0 
−1

b

T

T

c N = c N − cN B

d-

T

Nếu c N = c NT − cB T B
≤ 0

−1

−1

N : dấu hiệu tối ưu

N

thì giải thuật dừng và bài toán có

phương án tối ưu là x .
Ngược lại, nếu tồn tại s sao cho c s > 0 ( c s là thành phần thứ s
của c N ) thì sang bước e
35


e-

Tính : A

s

−1

= B As

( As là cột thứ s của A )

Nếu A s ≤ 0 thì giải thuật dừng và phương án tối ưu không giới nội.
Ngược lại, nếu tồn tại a is ∈ A s mà a is > 0 thì tính :
b
 b
= min  i , a is > 0 = r

 a rs
a is



x

s

( i = 1 → m)

a is là các thành phần của A s .


x
f-



là thành phần thứ s của phương án mới x .


s

Gọi xt là biến tương ứng với cột thứ r của cơ sở B. Khi đó biến xs sẽ


nhận giá trị x



s

> 0 ( vào cơ sở ), biến xt sẽ nhận giá trị x t = 0 ( ra khỏi cơ sở ). Như




vậy phương án mới x tương ứng với cơ sở mới B ( thay đổi cơ sở ) được xác định
như sau :


B =B∪{t}-{s}
g-



Gán B = B và quay về b .

Về mặt hình học, giải thuật này được hiểu như là một quá trình duyệt qua các
điểm cực biên của đa diện lồi S các phương án khả thi của bài toán.

Về mặt đại số, giải thuật này được hiểu như là một quá trình xác định một
0

1

2

0

1

chuỗi các ma trận cơ sở kề B B B ......... mà các phương án cơ sở tương ứng x x
2

x ........ là ngày càng tốt hơn, tức là :
0

1

2

z(x ) < z(x ) < z(x ) .............
Chú ý :
0

Nếu cơ sở ban đầu B chính là m cột đầu tiên của ma trận A thì trong giải
thuật trên t chính là r .

2- Định lý về sự hội tụ
Với giả thiết bài toán không suy biến, giải thuật đơn hình trên đây sẽ hội tụ về

phương án tối ưu sau một số hữu hạn lần lặp.
Bằng sự thống kê người thấy rằng nói chung giải thuật đơn hình sẽ hội tụ với
số lần lặp ít nhất phải là từ m đến 3m ( m là số ràng buộc ) .


3- Giải thuật đơn hình cơ bản
Xét bài toán quy hoạch tuyến tính chính tắc
min/max z(x) = c T x
 Ax = b

x ≥
0
Giả sử rằng sau khi hoán vị các cột trong A ta chọn được ma trận cơ sở B thoả
sự phân hoạch sau đây :
A =[B

N]

c T = [c B

cN ]

x T = [x B

xN ]

Giải thuật đơn hình cơ bản được thực hiện như sau :
a- Tính ma trận nghịch đảo B

-1


b- Tính các tham số :
. Phương án cơ sở khả thi tốt hơn
 x B = B − 1b = b 

x=

 x N = 0
T

. Giá trị hàm mục tiêu z(x) = cB xB
-1

. Ma trận N = B N
c- Xét dấu hiệu tối ưu :
T

c

N

= Nc − cB
T
B

T −1

T

N=c − c


T

N

B

N

T

- Nếu c N ≤ 0 thì kết thúc giải thuật với phương án tối ưu là :
 x B = B − 1b = b 

x=
 xN = 0

và giá trị hàm mục tiêu là :
T

z(x) = cB xB
- Nếu tồn tại c s ∈ c mà c s > 0 thì sang bước d.
N

d- Xác định chỉ số của phần tử pivot trong ma trận N
. Xác định chỉ số cột s của pivot
c s = max

{c


k

> 0 ∈ cN

}


Nếu Nis ≤ 0 thì giải thuật dừng, bài toán không có phương án tối ưu.
Ngược lại thì tiếp tục.
. Xác định chỉ số dòng r của pivot

 bi
br
min  , Nis > 0 =
 Nrs
 Nis

(i = 1,2,...,m)

Phần tử Nrs trong ma trận N được gọi là phần tử pivot
Trong trường hợp bài toán min
c- Xét dấu hiệu tối ưu :
T

c

N

- Nếu


= Nc − cB
T
B

T −1

T

N = cN − c

T

N

B

T

c N ≥ 0 thì kết thúc giải thuật với phương án tối ưu là :
 x B = B − 1b = b 

x=
 x N = 0


và giá trị hàm mục tiêu là :
T

z(x) = c B xB
- Nếu tồn tại c

d-

s

∈c

N

mà c

s

< 0 thì sang bước d.

Xác định chỉ số của phần tử pivot trong ma trận N
. Xác định chỉ số cột s của pivot

{

c s = max | c k |

ck < 0 ∈ cN

}

Nếu Nis ≤ 0 thì giải thuật dừng, bài toán không có phương án tối ưu.
Ngược lại thì tiếp tục.
. Xác định chỉ số dòng r của pivot

 bi

br
min  , Nis > 0 =
Nis
 Nrs


(i = 1,2,...,m)

Phần tử Nrs trong ma trận N được gọi là phần tử pivot
e- Thực hiện các hoán vị :
. Cột thứ s trong ma trận N với cột thứ r trong ma trận B
T
T
. Phần tử thứ s trong c N với phần tử thứ r trong cB
T
T
. Biến xs trong xN với biến xr trong x B

f- Quay về (a)


GIẢI THUẬT ĐƠN HÌNH

Ví dụ : Tìm phương án tối ưu cho bài toán quy hoạch tuyến tính chính tắc sau đây
bằng giải thuật đơn hình cơ bản
max z(x) = 2x1 + x 2

Ta có :

 x1 − x 2 + x 3 = 3


x + 2x 2 + x 4 = 6
 1

 − x1 + 2x 2 + x 5 = 2

xj≥
(j = 1,2,3,4,5)
0

1 − 1 | 1

A= 1
2 | 0

 −
2 | 0
1

0
1
0

0

 3

0

1


b =  6
 
 2


B

N
x

T

= [x 1 x 2 | x 3
x NT

c

T

=[ 2

1
c NT

x

4

x5 ]


x BT
| 0

0

0

]

c BT

Lần lặp1
-1
a- Tính ma trận nghịch đảo B
 1 0 0


−1
B = B =  0 1 0
  0 1 
0
b- Tính các tham số
. Phương án cơ sở khả thi tốt hơn :



1 0 0
3
 3


 

    
 x =  x4  = B − 1b = 0
0 6 = 6 = b
1
B


 

   


 x
0 0 1

2
x=
2






5






 x1   0 


 xN =   =  

  x 2     0 

 x3 




GIẢI THUẬT ĐƠN HÌNH

. Giá trị hàm mục tiêu :


z(x) = c x B = [0 0
T
B

. Tính ma trận :


0 0 
− 1  1 − 1
1

 

1 0  1 2  = 1
2

 

 − 1 2
0 1  − 1 2


1

−1
N =B N= 0


0

c- Xét dấu hiệu tối ưu :
T
N

c =c

T
N

− c


[2

T

B

 3
0]  6 = 0
 


2

N=

1] −

[0

 1 − 1


0 0]  1
2  =[2 1

]

 − 1 2
Chuyển sang bước d
d- Xác định chỉ số của pivot

. Xác định chỉ số cột pivot s :
c

s

{

}

= max c k > 0 ∈ c N = max

{2,1}= 2 =

c

1

Vậy s=1
 1
 
Ma trận cột s=1 trong ma trận N là N1 =  1 
 
 − 1


. Xác định chỉ số dòng pivot r :
b1
 bi 
 b1 b 2 
3 6

min   = min 
,
 = min ,  = 3 =
N11
1 1
 Nis
 N11 N21 


e- Hoán vị

Vậy r = 1

. Cột thứ s=1 trong ma trận N và cột thứ r=1 trong ma trận B
T
T
. Phần tử thứ s=1 trong cN với phần tử thứ r=1 trong cB
T

T

. Biến thứ s=1 trong x N với biến thứ r=1 trong x B
0 0
1 − 1 |
1

A=1
2 | 0 1 0 →A =



 − 1 2 | 0 0 1 →

T

c = [2 1 | 0 0 0 ]

1 − 1 | 1

0 2 | 1

c

T

0 0

1 0

 0 2


= [0 1 |


| − 1 0 1

2 0 0]
x

T


=[ x

1

x

2

| x3

x4

x5 ] → x

T

= [x 3

x2 | x 1

x4

x5 ]


f- Quay về bước a
Lần lặp 2
a. Tính ma trận nghịch đảo B


0 0
1 0


1

B= 1

b- Tính các tham số

-1

 1 0 0


=  − 1 1 0

B
−1

 − 1 0
1

1

0 1

. Phương án cơ sở khả thi tốt hơn :




0 0
 3
 3

 

    
 x =  x4  = B − 1b =  − 1 0 6 = 3 = b 
1
B


 

   






1 0 12   5  
x
x=

5






 x 3  0



 xN =   =  

  x 2     0 

 x1 

1


. Giá trị hàm mục tiêu :
 3
z(x) = c x B = [2 0 0]  3 = 6
 
 5
 
T
B

. Tính ma trận :
− 1  1 − 1
 


2 = -1 3

 

2
1
1

 1 0 0  1


N = B N =  - 1 1 0  0
1 0 1 0
−1

c- Xét dấu hiệu tối ưu :
T
N

 1 − 1


1 ] − [2 0 0 ] - 1 3 = [− 2 3 ]

T

c = c N − cB T N =

[0




1

1



Chuyển sang bước d
d- Xác định chỉ số của pivot
. Xác định chỉ số cột pivot s :
c

s

{

= max c k > 0 ∈ c N

}

{ }

2


= max

Vậy s=2

3 =3= c



 - 1
 
Ma trận cột s=2 trong ma trận N là N2 =  3 
 
 1




. Xác định chỉ số dòng pivot r :
b2
 bi 
 b2 b3 
 3 5
min   = min 
,
 = min ,  = 1 =
N22
3 1
 Nis
 N22 N23 


e- Hoán vị

Vậy r = 2

. Cột thứ s=2 trong ma trận N và cột thứ r=2 trong ma trận B
T

T
. Phần tử thứ s=2 trong c N với phần tử thứ r=2 trong cB
T

T

. Biến thứ s=2 trong x N với biến thứ r=2 trong x B

 1 − 1 | 1 0 0
 1 0 | 1 − 1 0


A = 0 2 | 1 1 0 → A = 0 1 | 1
2 0




 2 | − 1 0 1
 0 | − 1 2 1
0
0
c = [0 1 | 2 0 0 ] → c
T

x

T

=[ x


3

x

2

| x1

x4

T

= [0 0 | 2 1 0 ]

x5 ] → x

T

= [x 3

x4 | x 1

f- Quay về bước a
Lần lặp 3
a. Tính ma trận nghịch đảo B

-1

 1 - 1 0



B= 1
2 0


 − 1 2 1


b- Tính các tham số
. Phương án cơ sở khả thi tốt hơn :

 2
 3

 1
B − 1 = −
 3


1

0
3

1 
0
3




 4 -1 1
3

3


x2

x5 ]






 2
 3

1

3

1

0
3
 x1 

3

1
 


3


x B =  x 2  = B 1b =
0  6
4
1
−




 



5


x
x=
 2
 





1


3


3

3 x  0 
 x =   =
 
 N

x
0


 4





 



=  1  = b
 

 4











4

. Giá trị hàm mục tiêu :
T
B

z(x) = c x

B

= [2 1

. Tính ma trận :
 2

 3

 1

−1
N = B N = −
 3

 4 
3
c- Xét dấu hiệu tối ưu :

c N = c NT − cB T = [0 0 ] − [2
N
1
T

Vậy phương án tối ưu sẽ là :


 x1

 4
 =
0 ] 1
 
9


4


2


1 

1


0
3
3 
3
 1 0



 1 1
1 

0 0 1 =  −



3
 3 3
 0
0  


1
 4 - =1
1


3

3
3


2
3

1

0 ] −
3

4

3

-

1 
3 

= 1 = [−

1
3

=1


- 1] < 0: dừng


3




 4


   
 xB =  x 2  = 1 

 x 4
 5   


 x 3   0

x
=
N
 x  =  0

 4  


Giá trị hàm mục tiêu là z(x) = 9 với x1 = 4 và x2 = 1



4- Chú ý trong trường hợp suy biến
Trong trường hợp bài toán suy biến, nghĩa là b r = 0 , ta có :

br
xs = = = 0
a rs

cho nên giá trị của hàm mục tiêu không thay đổi khi thay đổi cơ sở, vì :




z(x) = z(x) + c s x s = z(x)

Vậy thì, có thể sau một số lần thay đổi cơ sở lại quay trở về cơ sở đã gặp và
lặp như vậy một cách vô hạn. Người ta có nhiều cách để khắc phục hiện tượng này
bằng cách xáo trộn một chút các dữ liệu của bài toán, sử dụng thủ tục từ vựng, quy tắc
chọn pivot để tránh bị khử.

II- GIẢI THUẬT ĐƠN HÌNH CẢI TIẾN
1- Một cách tính ma trận nghịch đảo


Trong giải thuật đơn hình cơ bản hai ma trận kề B và B chỉ khác nhau một cột
∧ −1

vì vậy có thể tính ma trận nghịch đảo B một cách dễ dàng từ B-1 . Để làm điều đó
-1


chỉ cần nhân (bên trái) B với một ma trận đổi cơ sở được xác định như sau :

1


0

∝ =  ..
0

 ..

0



− a1s
a=r

0 ..
1 ..

s

− a 2s
a rs
..
1
a rs
..

− a ms

.. ..
0 ..
.. ..
0 ..

a rs


.. 0 

.. 0 

.. ..
→ dòng r
.. 0 

.. ..


.. 1



↑ côt r
Khi đó :
^

−1


B

= ∝B

−1

Ta thấy rằng ma trận đổi cơ sở ∝ được thiết lập giống như một ma trận đơn vị
mxm, trong đó cột r có các thành phần được xác định như sau :


− a is
a rs
1
a rs

: đối với thành phần i ≠ r.
: đối với thành phần r .

Khi mà ma trận cở sở xuất phát là ma trận đơn vị, sau một số bước đổi cơ sở
0

1

2

q

0


1

2

q-1

B B B ....... B tương ứng với các ma trận đổi cơ sở ∝ ∝ ∝ .…...∝

người ta có

cách tính ma trận nghịch đảo như sau :

[B
]

q

−1

0

1

= ∝ .∝ .......∝

q− 1

2- Quy hoạch tuyến tính dạng chuẩn
Quy hoạch tuyến tính dạng chuẩn là quy hoạch tuyến tính chính tắc mà trong
đó có thể rút ra một ma trận cơ sở là ma trận đơn vị. Quy hoạch tuyến tính chuẩn có

dạng :
min/ max z(x) = c T x
 [I N] x = b
 ≥
x 0

3- Giải thuật đơn hình cải tiến
Từ những kết quả trên người ta xây dựng giải thuật đơn hình cải tiến đối với
bài toán qui hoạch tuyến tính (max) dạng chuẩn như sau :
a- Khởi tạo
A0 =A
b0 = b

b- Thực hiện bước lặp với k = 0,1,2, ...
. Xác định phương án cơ sở khả thi :
x

k

 x = bk 
Bk

=
x = 0 
 Nk


. Tính giá trị hàm mục tiêu :
z(x k ) = Bc
k


T
B

x

T

= c B k bk
k

. Xét dấu hiệu tối ưu :
c

T
k
T

= c T − cBTk A

k

- Nếu c k ≤ 0 thì giải thuật dừng và :


x

x B = b 
k
k

 là phương án tối ưu
=
x = 0 
 Nk


k

k

z(x ) = Bc
k

T

T
B

x

= c B k b k là giá trị hàm mục tiêu
k

- Ngược lại thì sang bước (c)
c- Cập nhật các giá trị mới :
.Tính pivot
.Tính ma trận chuyển cơ sở ∝

k


k

.Tính A k +1 = ∝ A k
k

.Tính b k +1 = ∝ b k
.Tăng số lần lặp k=k+1.
Quay về bước b
Ví dụ
Giải bài toán quy hoạch tuyến tính sau đây bằng phương pháp đơn hình cải
tiến :
max z(x) = 2x 1 + x

2

 x1 − x 2 + x 3 = 3

 x 1 + 2x 2 + x 4 = 6

− x 1 + 2x 2 + x 5 = 2
xj ≥
0

Bước khởi tạo

A

c

0


T

(j = 1,2,3,4,5)

0 0
1 − 1 |
1
=A=1
2 | 0 1 0


 − 1 2 | 0 0 1

N0
B 0 
= [2 1 | 0 0 0 ]
c NT0

c BT0

Bước lặp k=0

x

B0

0

=



x 3 
 x = x  = b =
0

 4

 3 
 6 
 




 2 


x
x N0 = 0

5

 3
b 0 =  6
 
 2
 



0

T

z(x ) = c
b0
B0

 3
 
= [0 0 0 ] 6 = 0
 

2


cT

T
0

= c − cB A = [2 1 0 0 0] −
T

[0

0

0


 1 -1 1 0 0


0 0 ]  1 2 0 1 0  = [2 1 0 0 0 ]
 − 1

 1
 3
 1   6 suy ra pivot : a11 = 1
  
 −  2
1
 1 0 0

µ = − 1 1 0


1 0
1

0 0 1

2

0

0

0  1 - 1 1 0 0 
 



1 - 1 1 0 0 



 1
A 1 = µ A 0 =  − 1 1 0   1 2 0 1 0  =  0 3 - 1 1 0 
 1 1 0 1
1 0 1  − 1 0 0 1
2
0
0

 1 0 0   3  3
b1 = µ b 0 =  − 1 1 0  6 = 3
1 0 1   5
2
0

Bước lặp k=1

 x1 
x = x  = b =
1
4
 B
x1 =  1  
x5


x N1 = 0
1

z(x
)=c
T

T

 3 
 3 
 
 5 


 3
b1 = [2 0 0T] B3 = 6 T
1
c
− c 1 A1
B
1

=
c

= [2 1

 
 5

 


0

0 0]

0 0

0 ] − [2

= [ 0 3 -2 0 0 ]

0
3 -1 1

1
0


1
1

1 1 0 0

0
1


 - 1  3

 3   3 suy ra pivot : a 22 = 3
  
1
5
1 0
1


3


1
1
0
∝ = 0
3


1


 0 − 3 1 

1
0
3
1 - 1 0 0 
1
1


1

A 2 = ∝ A1 =  0
0 0 3 - 1 1 0 =
3


1 1 0 1
 − 1

0


1
 0
3


1


2 1


0
1 0


3 3



=1 =1


0 1 - 3 3 0 


0 0 4 - 1 1 

3
3


1

0
1
3   3  4 

1
1
b 2 = ∝ b1 =  0
0   3 = 1 
3


 4
 
 − 1


5 
1
 0
3 
Bước lặp k=2

x

2

B2

=


 x1 
 x = x  = b =
2

 2

 4 
1  
 


x

x N2 = 0


 4 

2

5

 4
 
= [2 1 0 ] 1 = 9
 


4

T

z(x ) = c
b2
B2


c

T
2

T

T


= c − cB

A = [2

2

2

1 0 0


1

0 ] − [2 1 0 ]

0

0




0
1

2


1
3

1
3
 1 -

3

0
3


0

4
1
3
3

= [ 0 0 -1 -1 0 ] : thoả dấu hiệu tối ưu.



0
1



Vậy kết quả của bài toán là :
 4
1 



2
. Phương án tối ưu x = x =  0 
 
0 
 4 
. Giá trị hàm mục tiêu z(x) = 9

4- Phép tính trên dòng - Bảng đơn hình
Các bước thực hiện giải thuật đơn hình cải tiến được trình bày lần lượt trong
các bảng, gọi là bảng đơn hình. Trong thực hành, để cập nhật những giá trị mới ta có
thể làm như sau :
. Tìm pivot.
. Chia dòng chứa pivot cho pivot.
. Khử các phần tử trên cột chứa pivot.
. Tính dấu hiệu tối ưu.
. Tính giá trị hàm mục tiêu .

c B0

iB 0

x

0
0
0

3
4

5

1
1
-1
2
2

T

c
T
c0

c B1

iB1

x

2
0
0

1
4
5

1
0

0
2
0

T

c
T
c1

1

1

x

-1
2
2
1

x3
1
0
0
0

1

0


x

2

0
1
0
0

x5
0
0
1
0

b0
3
6
2
0
z(x )

0

0

0

b1

3
3
5
1
z(x )

6

4

x

-1
3
1
1

x3
1
-1
1
0

0
1
0
0

x5
0

0
1
0

3

-2

0

0

x

2

4


c B2

iB 2

x

2

1

1


0

1

2

0

1

0

5

0

0

2
0

T

c
T
c2

x


1

x

2

x

3

2
3

4

x5

b2

0

4

0

1

1

4


1

3
4
3
0

1
3
1
3
1

3
0

0

z(x )

0

-1

-1

0

9




1

2

III- PHƯƠNG PHÁP BIẾN GIẢ CẢI BIÊN
1- Bài toán cải biên
a- Cải biên bài toán quy hoạch tuyến tính
Người ta có thể biến đổi một bài toán quy hoạch tuyến tính chính tắc thành
dạng chuẩn bằng cách cộng một cách phù hợp vào vế trái của ràng buộc i một biến giả
xn+i ≥ 0 để làm xuất hiện ma trận đơn vị. Vì các biến giả cải biên có ảnh hưởng đến hàm
mục tiêu nên cũng sẽ có sự cải biên hàm mục tiêu.
Vậy, người ta có thể biến đổi bài toán quy hoạch tuyến tính tổng quát, gọi là
bài toán xuất phát, thành bài toán dạng chuẩn, gọi là bài toán cải biên (mở rộng)
Ví dụ :
Biến đổi bài toán quy hoạch tuyến tính sau đây thành dạng chuẩn
max z(x) = 2x 1 + x
 x 1 + 5x

2

+x

3

− x

4


+ 5x = 25

2

4


 − 4x 2 − x 3 +
6x 4

3x 2 + 8x = 28

= 18

4

x

j


0

( j = 1,2,3,4)

Bài toán xuất phát có các biến, ma trận ràng buộc và chi phí :
x T = [x 1 x

2


1 5
A = 0 - 4

0 3

x
0
1
0

3

x 4]
5
6

8 


c

T

= [2

1

1


- 1]


Bằng cách thêm biến giả x5, x6 lần lượt vào ràng buộc 2 và 3 . Ta được bài
toán cải biên :
max z′(x) = 2x 1 + x

2

+x

3

− x − M(x

5

+ x 6)

4

 x 1 + 5x

+ 5x = 25

2

4

 − 4x − x + + x = 18


2
3
5
6x 4
 3x + 8x + x = 28
2
6

4

xj≥
0

( j = 1,2,3,4,5,6)

z ′(x) là hàm mục tiêu cải biên sẽ được giải thích trong phần tiếp theo.

Các biến, ma trận ràng buộc các hệ số và chi phí của bài toán cải biên là
x T = [x 1 x
1 5

A= 0 -4


3
c

T


= [2

1

2

x
0
-1
0
1

3

x

4

x

5

x 6]

5
6
8

0 0
1 0 

0 1

 ]
-1 -M -M

b- Quan hệ giữa bài toán xuất phát và bài toán cải biên
Người ta kiểm chứng rằng :
- Nếu x T = [x 1 x
T

x = [x 1 x

2

2

... x n ] là phương án (tối ưu) của bài toán xuất phát thì

... x 0 0 ... 0] là phương án (tối ưu) của bài toán cải biên tương

n

ứng.
Vậy nếu bài toán cải biên không có phương án tối ưu thì bài toán xuất phát
cũng sẽ không có phương án tối ưu.
T

- Nếu x = [x 1 x

2


... x 0 0 ... 0] là phương án tối ưu của bài toán cải

n
T
biên thì x = [x 1 x

2

... x n ] là phương án tối ưu của bài toán xuất phát

- Nếu bài toán cải biên có một phương án tối ưu mà trong đó có ít nhất một
biến giả có giá trị dương thì bài toán xuất phát không có phương án tối ưu.
- Nếu bài toán cải biên (dạng chuẩn) có phương án tối ưu thì cũng sẽ phương
án cơ sở tối ưu.
Ví dụ
1- Xét bài toán :


×