<< Chapter < Page Chapter >> Page >

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 1 b = b ¯ x N = 0 righ x = size 12{x=alignl { stack { left [x rSub { size 8{B} } =B rSup { size 8{ - 1} } b= {overline {b}} {} #right ] left [x rSub { size 8{N} } =0 {} #righ]} } \[ \]} {}

. Giá trị hàm mục tiêu z ( x ) = c B T x B size 12{z \( x \) =c rSub { size 8{B} } rSup { size 8{T} } x rSub { size 8{B} } } {}

{} . Ma trận N __ size 12{ {N} cSup { size 8{"__"} } } {} = B-1N

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

c ¯ N T = c N T c B T B 1 N = c N T c B T N __ 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=c rSub { size 8{N} } rSup { size 8{T} } - c rSub { size 8{B} } rSup { size 8{T} } {N} cSup { size 8{"__"} } } {}

- Nếu c ¯ N T 0 size 12{ {overline {c}} rSub { size 8{N} } rSup { size 8{T} }<= 0} {} thì kết thúc giải thuật với phương án tối ưu là :

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

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

z ( x ) = c B T x B size 12{z \( x \) =c rSub { size 8{B} } rSup { size 8{T} } x rSub { size 8{B} } } {}

- Nếu tồn tại c ¯ s c ¯ N size 12{ {overline {c}} rSub { size 8{s} } in {overline {c}} rSub { size 8{N} } } {} c ¯ s > 0 size 12{ {overline {c}} rSub { size 8{s} }>0} {} thì sang bước d.

d- Xác định chỉ số của phần tử pivot trong ma trận N ¯ size 12{ {overline {N}} } {}

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

c ¯ s = max c ¯ k > 0 c ¯ N size 12{ {overline {c}} rSub { size 8{s} } = "max"" " left lbrace {overline {c}} rSub { size 8{k} }>0 in {overline {c}} rSub { size 8{N} } right rbrace } {}

Nếu N ¯ is 0 size 12{ {overline {N}} rSub { size 8{ ital "is"} }<= 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

min b ¯ i N ¯ is , N ¯ is > 0 = b ¯ r N ¯ rs ( i = 1,2, . . . ,m ) size 12{"min " left lbrace { { {overline {b}} rSub { size 8{i} } } over { {overline {N}} rSub { size 8{"is"} } } } " , " {overline {N}} rSub { size 8{"is"} }>0 right rbrace = { { {overline {b}} rSub { size 8{r} } } over { {overline {N}} rSub { size 8{"rs"} } } } " " \( i="1,2," "." "." "." ",m" \) } {}

Phần tử N ¯ rs size 12{ {overline {N}} rSub { size 8{ ital "rs"} } } {} trong ma trận N __ size 12{ {N} cSup { size 8{"__"} } } {} đượ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 :

c ¯ N T = c N T c B T B 1 N = c N T c B T N __ 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=c rSub { size 8{N} } rSup { size 8{T} } - c rSub { size 8{B} } rSup { size 8{T} } {N} cSup { size 8{"__"} } } {}

- Nếu c ¯ N T size 12{ {overline {c}} rSub { size 8{N} } rSup { size 8{T} }>= {}} {} 0 thì kết thúc giải thuật với phương án tối ưu là :

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

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

z ( x ) = c B T x B size 12{z \( x \) =c rSub { size 8{B} } rSup { size 8{T} } x rSub { size 8{B} } } {}

- Nếu tồn tại c ¯ s c ¯ N size 12{ {overline {c}} rSub { size 8{s} } in {overline {c}} rSub { size 8{N} } } {} c ¯ s < 0 size 12{ {overline {c}} rSub { size 8{s} }<0} {} thì sang bước d.

d- Xác định chỉ số của phần tử pivot trong ma trận N ¯ size 12{ {overline {N}} } {}

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

c ¯ s = max c ¯ k c ¯ k < 0 c ¯ N size 12{ {overline {c}} rSub { size 8{s} } = "max"" " left lbrace \lline {overline {c}} rSub { size 8{k} } \lline " " {overline {c}} rSub { size 8{k} }<0 in {overline {c}} rSub { size 8{N} } right rbrace } {}

Nếu N ¯ is 0 size 12{ {overline {N}} rSub { size 8{ ital "is"} }<= 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

min b ¯ i N ¯ is , N ¯ is > 0 = b ¯ r N ¯ rs ( i = 1,2, . . . ,m ) size 12{"min " left lbrace { { {overline {b}} rSub { size 8{i} } } over { {overline {N}} rSub { size 8{"is"} } } } " , " {overline {N}} rSub { size 8{"is"} }>0 right rbrace = { { {overline {b}} rSub { size 8{r} } } over { {overline {N}} rSub { size 8{"rs"} } } } " " \( i="1,2," "." "." "." ",m" \) } {}

Phần tử N ¯ rs size 12{ {overline {N}} rSub { size 8{ ital "rs"} } } {} trong ma trận N __ size 12{ {N} cSup { size 8{"__"} } } {} đượ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

. Phần tử thứ s trong c N T size 12{c rSub { size 8{N} } rSup { size 8{T} } } {} với phần tử thứ r trong c B T size 12{c rSub { size 8{B} } rSup { size 8{T} } } {}

. Biến xs trong x N T size 12{x rSub { size 8{N} } rSup { size 8{T} } } {} với biến xr trong x B T size 12{x rSub { size 8{B} } rSup { size 8{T} } } {}

f- Quay về (a)

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 ) = 2x 1 + x 2 x 1 x 2 + x 3 = 3 x 1 + 2x 2 + x 4 = 6 x 1 + 2x 2 + x 5 = 2 x j 0 ( j = 1,2,3,4,5 ) { { { alignl { stack { size 12{"max"" "z \( x \) =2x rSub { size 8{1} } +x rSub { size 8{2} } } {} #alignl { stack { left lbrace x rSub { size 8{1} } - x rSub { size 8{2} } +x rSub { size 8{3} } =3 {} #right none left lbrace x rSub { size 8{1} } +2x rSub { size 8{2} } +x rSub { size 8{4} } =6 {} # right none left lbrace - x rSub { size 8{1} } +2x rSub { size 8{2} } +x rSub { size 8{5} } =2 {} #right none left lbrace x rSub { size 8{j} }>= "0 " \( j="1,2,3,4,5" \) {} # right no } } lbrace {}} } {}

Ta có :

A = 1 1 1 0 0 1 2 0 1 0 1 2 0 0 1 b = 3 6 2 N B x T = x 1 x 2 x 3 x 4 x 5 x N T x B T c T = 2 1 0 0 0 c N T c B T alignl { stack { size 12{A= left [ matrix {1 {} # - 1 {} # \lline {} # 1 {} # " 0" {} # " 0 " {} ## 1 {} # " 2" {} # \lline {} # 0 {} # " 1" {} # " 0" {} ##- 1 {} # " 2" {} # \lline {} # 0 {} # " 0" {} # 1{} } right ]" b"= left [ matrix { 3 {} ##6 {} ## 2} right ]} {} #size 12{" N B"} {} # size 12{x rSup { size 8{T} } = left [ matrix {x rSub { size 8{1} } {} # x rSub { size 8{2} } {} # \lline {} # x rSub { size 8{3} } {} # x rSub { size 8{4} } {} # x rSub { size 8{5} } {} } right ]} {} # " "x rSub { size 8{N} } rSup { size 8{T} } " "x rSub { size 8{B} } rSup { size 8{T} } {} #c rSup { size 8{T} } = left [" " matrix { 2 {} # " 1" {} # \lline {} # 0 {} # " 0" {} # " 0 "{}} right ] {} #" "c rSub { size 8{N} } rSup { size 8{T} } " "c rSub { size 8{B} } rSup { size 8{T} } {} } } {}

Lần lặp1

a- Tính ma trận nghịch đảo B-1

B 1 = B = 1 0 0 0 1 0 0 0 1 size 12{B rSup { size 8{ - 1} } =B= left [ matrix { 1 {} # 0 {} # 0 {} ##0 {} # 1 {} # 0 {} ## 0 {} # 0 {} # 1{}} right ]} {}

b- Tính các tham số

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

x 3 x 4 x 5 righ 1 0 0 0 1 0 0 0 1 righ [ ] 3 6 2 righ 3 6 2 righ x 1 x 2 righ 0 0 righ [ ] x B = x = size 12{x=alignl { stack { left [x rSub { size 8{B} } =alignl { stack {left [x rSub { size 8{3} } {} # right ]left [x rSub { size 8{4} } {} # right ]left [x rSub { size 8{5} } {} # righ]} } \[ \] =B rSup { size 8{ - 1} } b=alignl { stack {left [1" 0 0" {} # right ]left [0" 1 0" {} # right ]left [0" 0 1" {} # righ]} } \[ \] alignl { stack {left [3 {} # right ]left [6 {} # right ]left [2 {} # righ]} } \[ \] =alignl { stack {left [3 {} # right ]left [6 {} # right ]left [2 {} # righ]} } \[ \] = {overline {b}} {} #right ] left [x rSub { size 8{N} } =alignl { stack {left [x rSub { size 8{1} } {} # right ]left [x rSub { size 8{2} } {} # righ]} } \[ \] =alignl { stack {left [0 {} # right ]left [0 {} # righ]} } \[ \] {} #righ]} } \[ \]} {}

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

z ( x ) = c B T x B = 0 0 0 3 6 2 = 0 size 12{z \( x \) =c rSub { size 8{B} } rSup { size 8{T} } x rSub { size 8{B} } = left [ matrix { 0 {} # 0 {} # 0{}} right ] left [ matrix {3 {} ## 6 {} ##2 } right ]=0} {}

. Tính ma trận :

N __ = B 1 N = 1 0 0 0 1 0 0 0 1 1 1 1 2 1 2 = 1 1 1 2 1 2 size 12{ {N} cSup { size 8{"__"} } =B rSup { size 8{ - 1} } N= left [ matrix { 1 {} # 0 {} # 0 {} ##0 {} # 1 {} # 0 {} ## 0 {} # 0 {} # 1{}} right ] left [ matrix {" 1" {} # - 1 {} ## " 1" {} # " 2" {} ##- 1 {} # " 2"{} } right ]= left [ matrix { " 1" {} # - 1 {} ##" 1" {} # " 2" {} ## - 1 {} # " 2"{}} right ]} {}

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

c ¯ N T = c N T c B T N __ = 2 1 0 0 0 1 1 1 2 1 2 = 2 1 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} } {N} cSup { size 8{"__"} } = left [ matrix { 2 {} # 1{}} right ] - left [ matrix {0 {} # 0 {} # 0{} } right ]left [ matrix { " 1" {} # - "1 " {} ##" 1" {} # " 2" {} ## - 1 {} # " 2"{}} right ]= left [ matrix {" 2" {} # "1 "{} } right ]} {}

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 size 12{ {overline {c}} rSub { size 8{s} } = "max"" " left lbrace {overline {c}} rSub { size 8{k} }>0 in {overline {c}} rSub { size 8{N} } right rbrace } {} = max 2 , 1 = 2 = c __ 1 size 12{ {}="max " left lbrace " 2 , 1 " right rbrace =2= {c} cSup { size 8{"__"} } rSub { size 8{1} } } {}

Vậy s=1

Ma trận cột s=1 trong ma trận N ¯ size 12{ {overline {N}} } {} 1 1 1 righ N ¯ 1 = size 12{ {overline {N}} rSub { size 8{1} } =alignl { stack { left [" "1 {} #right ] left [" "1 {} #right ] left [ - 1 {} #righ]} } \[ \]} {}

. Xác định chỉ số dòng pivot r :

min b ¯ i N ˉ is = min b ¯ 1 N ¯ 11 , b ¯ 2 N ¯ 21 = min 3 1 , 6 1 = 3 = b ¯ 1 N ˉ 11 size 12{"min " left lbrace { { {overline {b}} rSub { size 8{i} } } over { { bar {N}} rSub { size 8{"is"} } } } right rbrace ="min " left lbrace { { {overline {b}} rSub { size 8{1} } } over { {overline {N}} rSub { size 8{"11"} } } } , { { {overline {b}} rSub { size 8{2} } } over { {overline {N}} rSub { size 8{"21"} } } } right rbrace ="min" left lbrace { {3} over {1} } , { {6} over {1} } right rbrace =3= { { {overline {b}} rSub { size 8{1} } } over { { bar {N}} rSub { size 8{"11"} } } } } {}

Vậy r = 1

e- Hoán vị

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

. Phần tử thứ s=1 trong c N T size 12{c rSub { size 8{N} } rSup { size 8{T} } } {} với phần tử thứ r=1 trong c B T size 12{c rSub { size 8{B} } rSup { size 8{T} } } {}

. Biến thứ s=1 trong x N T size 12{x rSub { size 8{N} } rSup { size 8{T} } } {} với biến thứ r=1 trong x B T size 12{x rSub { size 8{B} } rSup { size 8{T} } } {}

A = 1 1 1 0 0 1 2 0 1 0 1 2 0 0 1 A = 1 1 1 0 0 0 2 1 1 0 0 2 1 0 1 size 12{A= left [ matrix { 1 {} # - 1 {} # \lline {} # 1 {} # 0 {} # 0 {} ##1 {} # 2 {} # \lline {} # 0 {} # 1 {} # 0 {} ## - 1 {} # 2 {} # \lline {} # 0 {} # 0 {} # 1{}} right ] rightarrow A= left [ matrix {1 {} # - 1 {} # \lline {} # 1 {} # 0 {} # 0 {} ## 0 {} # 2 {} # \lline {} # 1 {} # 1 {} # 0 {} ##0 {} # 2 {} # \lline {} # - 1 {} # 0 {} # 1{} } right ]} {}

c T = 2 1 0 0 0 c T = 0 1 2 0 0 size 12{c rSup { size 8{T} } = left [ matrix { 2 {} # 1 {} # \lline {} # 0 {} # 0 {} # 0{}} right ]" " rightarrow " c" rSup { size 8{T} } = left [ matrix {0 {} # 1 {} # \lline {} # 2 {} # 0 {} # 0{} } right ]} {}

x T = x 1 x 2 x 3 x 4 x 5 x T = x 3 x 2 x 1 x 4 x 5 size 12{x rSup { size 8{T} } = left [ matrix { x rSub { size 8{1} } {} # x rSub { size 8{2} } {} # \lline {} # x rSub { size 8{3} } {} # x rSub { size 8{4} } {} # x rSub { size 8{5} } {}} right ] rightarrow " x" rSup { size 8{T} } = left [ matrix {x rSub { size 8{3} } {} # x rSub { size 8{2} } {} # \lline {} # x rSub { size 8{1} } {} # x rSub { size 8{4} } {} # x rSub { size 8{5} } {} } right ]} {}

f- Quay về bước a

Lần lặp 2

a. Tính ma trận nghịch đảo B-1

B = 1 0 0 1 1 0 1 0 1 B 1 = 1 0 0 1 1 0 1 0 1 size 12{B= left [ matrix { 1 {} # 0 {} # 0 {} ##1 {} # 1 {} # 0 {} ## - 1 {} # 0 {} # 1{}} right ]" B" rSup { size 8{ - 1} } = left [ matrix {1 {} # 0 {} # 0 {} ## - 1 {} # 1 {} # 0 {} ##1 {} # 0 {} # 1{} } right ]} {}

b- Tính các tham số

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

x 1 x 4 x 5 righ 1 0 0 1 1 0 1 0 1 righ [ ] 3 6 2 righ 3 3 5 righ x 3 x 2 righ 0 0 righ [ ] x B = x = size 12{x=alignl { stack { left [x rSub { size 8{B} } =alignl { stack {left [x rSub { size 8{1} } {} # right ]left [x rSub { size 8{4} } {} # right ]left [x rSub { size 8{5} } {} # righ]} } \[ \] =B rSup { size 8{ - 1} } b=alignl { stack {left [1" 0 0" {} # right ]left [ - 1" 1 0" {} # right ]left [1" 0 1" {} # righ]} } \[ \] alignl { stack {left [3 {} # right ]left [6 {} # right ]left [2 {} # righ]} } \[ \] =alignl { stack {left [3 {} # right ]left [3 {} # right ]left [5 {} # righ]} } \[ \] = {overline {b}} {} #right ] left [x rSub { size 8{N} } =alignl { stack {left [x rSub { size 8{3} } {} #right ] left [x rSub { size 8{2} } {} #righ]} } \[ \]=alignl { stack { left [0 {} #right ] left [0 {} #righ]} } \[ \]{} # righ]} } \[ \] } {}

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

z ( x ) = c B T x B = 2 0 0 3 3 5 = 6 size 12{z \( x \) =c rSub { size 8{B} } rSup { size 8{T} } x rSub { size 8{B} } = left [ matrix { 2 {} # 0 {} # 0{}} right ] left [ matrix {3 {} ## 3 {} ##5 } right ]=6} {}

. Tính ma trận :

N __ = B 1 N = 1 0 0 -1 1 0 1 0 1 1 1 0 2 0 2 = 1 1 -1 3 1 1 size 12{ {N} cSup { size 8{"__"} } =B rSup { size 8{ - 1} } N= left [ matrix { 1 {} # 0 {} # 0 {} ##"-1" {} # 1 {} # 0 {} ## 1 {} # 0 {} # 1{}} right ] left [ matrix {" 1" {} # - 1 {} ## " 0" {} # " 2" {} ##0 {} # " 2"{} } right ]= left [ matrix { " 1" {} # - 1 {} ##" -1" {} # " 3" {} ## 1 {} # " 1"{}} right ]} {}

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

c ¯ N T = c N T c B T N __ = 0 1 2 0 0 1 1 -1 3 1 1 = 2 3 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} } {N} cSup { size 8{"__"} } = left [ matrix { 0 {} # 1{}} right ] - left [2" 0 0" right ]left [ matrix { " 1" {} # - "1 " {} ##" -1" {} # " 3" {} ## 1 {} # " 1"{}} right ]= left [ - 2" "3 right ]} {}

Chuyển sang bước d

d- Xác định chỉ số của pivot

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