<< Chapter < Page Chapter >> Page >

Dấu hiệu tối ưu

Theo trên, khi một bài toán quy hoạch tuyến tính có phương án tối ưu thì tồn tại một cơ sở khả thi (tối ưu) B* , tức là phương án cơ sở x* tương ứng với B* là phương án tối ưu.

Vấn đề bây giờ là xác định một thủ tục để tìm B*. Chúng ta sẽ thấy rằng thủ tục đó được suy ra một cách trực tiếp từ việc chứng minh dấu hiệu tối ưu sau đây.

Ðịnh lý 4 (dấu hiệu tối ưu)

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 { alignl { stack { size 12{" min/max "z \( x \) =c rSup { size 8{T} } x" "} {} #alignl { stack { left lbrace ital "Ax"=b" " {} #right none left lbrace x>= 0" " {} # right no } } lbrace {} } } {}

Điều kiện cần và đủ để một phương án cơ sở khả thi x có dạng :

x B = B 1 b 0 x N = 0 righ x = size 12{x=alignl { stack { left [x rSub { size 8{B} } =B rSup { size 8{ - 1} } b>= 0 {} # right ]left [x rSub { size 8{N} } =0 {} # righ]} } \[ \] } {}

của bài toán là phương án tối ưu là :

c ¯ N T = c N T c B T B 1 N 0 size 12{ {overline {c}} rSub { size 8{N} } rSup { size 8{T} } =c rSub { size 8{N} } rSup { size 8{T} } - c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } "N "<= " 0"} {} đối với bài toán max

c ¯ N T = c N T c B T B 1 N 0 size 12{ {overline {c}} rSub { size 8{N} } rSup { size 8{T} } =c rSub { size 8{N} } rSup { size 8{T} } - c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } "N ">= " 0"} {} đối với bài toán min

Với :

A = [ B | N ]

cT= [ cB | cN ]

Người ta thường gọi :

cN là chi phí ngoài cơ sở

cB là chi phí cơ sở

c ¯ N T size 12{ {overline {c}} rSub { size 8{N} } rSup { size 8{T} } } {} là chi phí trượt giảm

c B T B 1 N size 12{c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } N} {} là lượng gia giảm chi phí

Chứng minh (cho bài toán max)

Ðiều kiện đủ

Giả sử x* là một phương án cơ sở khả thi với ma trận cơ sở B và thoả

c ¯ N T = c N T c B T B 1 N 0 size 12{ {overline {c}} rSub { size 8{N} } rSup { size 8{T} } =c rSub { size 8{N} } rSup { size 8{T} } - c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } N<= 0} {}

thì cần chứng minh x* là phương án tối ưu, nghĩa là chứng minh rằng với mọi phương án bất kỳ của bài toán ta luôn có :

z(x)  z(x*)

Xét một phương án khả thi x bất kỳ , x thoả :

{ Ax = b x 0 size 12{ left lbrace matrix { ital "Ax"=b {} ##x>= 0 } " " right none } {} { B N x B x N = b x B 0 x N 0 size 12{ drarrow " " left lbrace matrix { left [ matrix {B {} # N{} } right ]left [ matrix { x rSub { size 8{B} } {} ##x rSub { size 8{N} } } right ]=b {} ## matrix {alignl { stack { {} #x rSub { size 8{B} }>= 0 {} } } {} # alignl { stack {{} # x rSub { size 8{N} }>= 0 {} } } {}} {} } right none } {}

B là ma trận cơ sở của phương án cơ sở khả thi x*

B có ma trận nghịch đảo là B-1

Bx B + Nx N = b x B 0 x N 0 { size 12{alignl { stack { left lbrace "Bx" rSub { size 8{B} } +"Nx" rSub { size 8{N} } =b {} #right none left lbrace x rSub { size 8{B} }>= "0 x" rSub { size 8{N} }>= 0 {} # right no } } lbrace } {}

B -1 Bx B + B -1 Nx N = B -1 b ( B -1 B = I ) x B 0 x N 0 { size 12{alignl { stack { left lbrace B rSup { size 8{"-1"} } "Bx" rSub { size 8{B} } +B rSup { size 8{"-1"} } "Nx" rSub { size 8{N} } =B rSup { size 8{"-1"} } "b " \( B rSup { size 8{"-1"} } B=I \) {} #right none left lbrace x rSub { size 8{B} }>= "0 x" rSub { size 8{N} }>= 0 {} # right no } } lbrace } {}

x B + B -1 Nx N = B -1 . b x B 0 x N 0 { size 12{alignl { stack { left lbrace x rSub { size 8{B} } +B rSup { size 8{"-1"} } "Nx" rSub { size 8{N} } =B rSup { size 8{"-1"} } "." b {} #right none left lbrace x rSub { size 8{B} }>= "0 x" rSub { size 8{N} }>= 0 {} # right no } } lbrace } {}

x B = B -1 b-B -1 Nx N x B 0 x N 0 { size 12{alignl { stack { left lbrace x rSub { size 8{B} } =B rSup { size 8{"-1"} } "b-B" rSup { size 8{"-1"} } "Nx" rSub { size 8{N} } {} #right none left lbrace x rSub { size 8{B} }>= "0 x" rSub { size 8{N} }>= 0 {} # right no } } lbrace } {}

Tính giá trị hàm mục tiêu đối với phương án x ta được :

z(x)= cTx

= c B T c N T x B x N = c B T x B + c N T x N size 12{ left [ matrix { c rSub { size 8{B} } rSup { size 8{T} } {} # c rSub { size 8{N} } rSup { size 8{T} } {}} right ] left [ matrix {x rSub { size 8{B} } {} ## x rSub { size 8{N} }} right ]=c rSub { size 8{B} } rSup { size 8{T} } x rSub { size 8{B} } +c rSub { size 8{N} } rSup { size 8{T} } x rSub { size 8{N} } } {}

= c B T B 1 b B 1 Nx N + c N T x N size 12{c rSub { size 8{B} } rSup { size 8{T} } left (B rSup { size 8{ - 1} } b - B rSup { size 8{ - 1} } "Nx" rSub { size 8{N} } right )+c rSub { size 8{N} } rSup { size 8{T} } x rSub { size 8{N} } } {}

= c B T B 1 b c B T B 1 Nx N + c N T x N size 12{c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } b - c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } "Nx" rSub { size 8{N} } +c rSub { size 8{N} } rSup { size 8{T} } x rSub { size 8{N} } } {}

= c B T B 1 b + ( c N T -c B T B 1 N ) x N size 12{c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } b+ \( c rSub { size 8{N} } rSup { size 8{T} } "-c" rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } N \) x rSub { size 8{N} } } {} (1)

Vì x* là phương án cơ sở khả thi tương ứng với ma trận cơ sở B nên

x B = B 1 b 0 x N = 0 { size 12{alignl { stack { left lbrace x rSub { size 8{B} } rSup { size 8{*} } =B rSup { size 8{ - 1} } b>= 0 {} # right none left lbrace x rSub { size 8{N} } rSup { size 8{*} } =0 {} #right no } } lbrace } {}

Tính giá trị hàm mục tiêu đối vơi phương án cơ bản x* ta được :

z(x*)= cTx*

= c B T c N T x B x N = c B T x B + c N T x N size 12{ left [ matrix { c rSub { size 8{B} } rSup { size 8{T} } {} # c rSub { size 8{N} } rSup { size 8{T} } {}} right ] left [ matrix {x rSub { size 8{B} } rSup { size 8{*} } {} ## x rSub { size 8{N} } rSup { size 8{*} }} right ]=c rSub { size 8{B} } rSup { size 8{T} } x rSub { size 8{B} } rSup { size 8{*} } +c rSub { size 8{N} } rSup { size 8{T} } x rSub { size 8{N} } rSup { size 8{*} } } {}

= c B T x B = c B T B 1 b size 12{c rSub { size 8{B} } rSup { size 8{T} } x rSub { size 8{B} } rSup { size 8{*} } =c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } b} {} ( vì x N = 0 size 12{x rSub { size 8{N} } rSup { size 8{*} } =0} {} )(2)

Từ (1) và (2) ta có :

z(x)  z(x*)vì c N c B T B 1 N 0 size 12{c rSub { size 8{N} } - c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } "N "<= " 0"} {}

Vậy x* là phương án tối ưu.

Ðiều kiện cần

Giả sử x x B = B 1 b 0 x N = 0 righ size 12{x*=alignl { stack { left [x rSub { size 8{B} } rSup { size 8{*} } =B rSup { size 8{ - 1} } b>= 0 {} # right ]left [x rSub { size 8{N} } rSup { size 8{*} } =0 {} # righ]} } \[ \] } {} là phương án tối ưu với ma trận cơ sở B, cần chứng minh rằng : c ¯ N T = c N T c B T B 1 N 0 size 12{ {overline {c}} rSub { size 8{N} } rSup { size 8{T} } =c rSub { size 8{N} } rSup { size 8{T} } - c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } "N "<= " 0"} {} .

( c ¯ N size 12{ {overline {c}} rSub { size 8{N} } } {} là vectơ có n-m thành phần)

Ta sẽ chứng minh điều này bằng phản chứng.

Giả sử rằng tồn tại một thành phần cs của c ¯ N size 12{ {overline {c}} rSub { size 8{N} } } {} mà cs>0. Dựa vào cs người ta xây dựng một vectơ x như sau :

x B = x B B 1 Nx N x N = θI s 0 righ x = size 12{x=alignl { stack { left [x rSub { size 8{B} } =x rSub { size 8{B} } rSup { size 8{*} } - B rSup { size 8{ - 1} } "Nx" rSub { size 8{N} } {} #right ] left [x rSub { size 8{N} } ="θI" rSub { size 8{s} }>= 0 {} # righ]} } \[ \] } {}

Trong đó >0 và Is là một vectơ có (n-m) thành phần bằng 0, trừ thành phần thứ s bằng 1 . Vậy

x N = θI s 0 x B = x B B 1 NθI s = B 1 b B 1 N θI s righ x = size 12{x=alignl { stack { left [x rSub { size 8{N} } ="θI" rSub { size 8{s} }>= 0 {} # right ]left [x rSub { size 8{B} } =x rSub { size 8{B} } rSup { size 8{*} } - B rSup { size 8{ - 1} } NθI rSub { size 8{s} } =B rSup { size 8{ - 1} } b - B rSup { size 8{ - 1} } N"θI" rSub { size 8{s} } {} # righ]} } \[ \] } {} (*)

Do B-1b  0 nên người ta có thể chọn >0 đủ nhỏ để xB>0

Vậy x được chọn như trên sẽ thoả :

x  0(3)

Ta kiểm chứng x thỏa ràng buộc của bài toán bằng cách tính :

Ax= B N x B x N = Bx B + Nx N size 12{ left [ matrix {B {} # N{} } right ]left [ matrix { x rSub { size 8{B} } {} ##x rSub { size 8{N} } } right ]="Bx" rSub { size 8{B} } +"Nx" rSub { size 8{N} } } {}

= B x B B 1 N θI s + N θI s size 12{B left (x rSub { size 8{B} } rSup { size 8{*} } - B rSup { size 8{ - 1} } N"θI" rSub { size 8{s} } right )+N"θI" rSub { size 8{s} } } {}

= B B 1 b B 1 N θI s + N θI s size 12{B left (" B" rSup { size 8{ - 1} } b - B rSup { size 8{ - 1} } N"θI" rSub { size 8{s} } right )+N"θI" rSub { size 8{s} } } {}

= BB 1 b BB 1 NθI s + N θI s size 12{"BB" rSup { size 8{ - 1} } b - BB rSup { size 8{ - 1} } NθI rSub { size 8{s} } +N"θI" rSub { size 8{s} } } {}

= b N θI s + N θI s size 12{b - N"θI" rSub { size 8{s} } +N"θI" rSub { size 8{s} } } {}

= b(4)

Từ (3) và (4) cho thấy x là một phương án khả thi của bài toán

Bây giờ ta chỉ ra mâu thuẩn bằng so sánh giá trị hàm mục tiêu tại x và x* . Ta có :

z(x)= cTx

= c B T c N T x B x N = c B T x B + c N T x N size 12{ left [ matrix { c rSub { size 8{B} } rSup { size 8{T} } {} # c rSub { size 8{N} } rSup { size 8{T} } {}} right ] left [ matrix {x rSub { size 8{B} } {} ## x rSub { size 8{N} }} right ]=c rSub { size 8{B} } rSup { size 8{T} } x rSub { size 8{B} } +c rSub { size 8{N} } rSup { size 8{T} } x rSub { size 8{N} } } {}

= c B T x B B 1 Nx N + c N T x N size 12{c rSub { size 8{B} } rSup { size 8{T} } left (x rSub { size 8{B} } rSup { size 8{*} } - B rSup { size 8{ - 1} } ital "Nx" rSub { size 8{N} } right )+c rSub { size 8{N} } rSup { size 8{T} } x rSub { size 8{N} } } {}

= c B T x B c B T B 1 Nx N + c N T x N size 12{c rSub { size 8{B} } rSup { size 8{T} } x rSub { size 8{B} } rSup { size 8{*} } - c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } ital "Nx" rSub { size 8{N} } +c rSub { size 8{N} } rSup { size 8{T} } x rSub { size 8{N} } } {}

= c B T x B + c N T x N c B T B 1 Nx N + c N T x N ( c N T x N = 0 ) size 12{c rSub { size 8{B} } rSup { size 8{T} } x rSub { size 8{B} } rSup { size 8{*} } +c rSub { size 8{N} } rSup { size 8{T} } x rSub { size 8{N} } rSup { size 8{*} } - c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } ital "Nx" rSub { size 8{N} } +c rSub { size 8{N} } rSup { size 8{T} } x rSub { size 8{N} } " " \( "vì "c rSub { size 8{N} } rSup { size 8{T} } x rSub { size 8{N} } rSup { size 8{*} } =0 \) } {}

= c B T c N T x B x N + c N T c B T B 1 N x N size 12{ left [c rSub { size 8{B} } rSup { size 8{T} } " "c rSub { size 8{N} } rSup { size 8{T} } right ] left [ matrix {x rSub { size 8{B} } rSup { size 8{*} } {} ## x rSub { size 8{N} } rSup { size 8{*} }} right ]+ left (c rSub { size 8{N} } rSup { size 8{T} } - c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } N right )" x" rSub { size 8{N} } } {}

= c T x + c N T c B T B 1 N θI s size 12{c rSup { size 8{T} } x rSup { size 8{*} } + left (c rSub { size 8{N} } rSup { size 8{T} } - c rSub { size 8{B} } rSup { size 8{T} } B rSup { size 8{ - 1} } N right )" θI" rSub { size 8{s} } } {}

= c T x + c ¯ N T θI s size 12{c rSup { size 8{T} } x rSup { size 8{*} } + {overline {c}} rSub { size 8{N} } rSup { size 8{T} } "θI" rSub { size 8{s} } } {} = c T x + c ¯ N T I s θ size 12{c rSup { size 8{T} } x rSup { size 8{*} } + {overline {c}} rSub { size 8{N} } rSup { size 8{T} } I rSub { size 8{s} } θ} {}

= z(x*) + c ¯ s θ size 12{ {overline {c}} rSub { size 8{s} } θ} {} >z(x*) ( vì c ¯ s θ > 0 size 12{ {overline {c}} rSub { size 8{s} } θ>0} {} )

Vậy x* không phải là phương án tối ưu nên mâu thuẩn với giả thiết .

Chú ý

Qua việc chứng minh định lý dấu hiệu tối ưu ta thấy rằng từ một phương án cơ sở khả thi chưa tối ưu có thể tìm được các phương án khả thi càng lúc càng tốt hơn nhờ lặp lại nhiều lần công thức (*). Vấn đề được đặt là đại lượng  được chọn như thế nào để nhanh chóng nhận được phương án tối ưu.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Quy hoạch tuyến tính. OpenStax CNX. Aug 08, 2009 Download for free at http://cnx.org/content/col10903/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Quy hoạch tuyến tính' conversation and receive update notifications?

Ask