<< Chapter < Page Chapter >> Page >

z ' ( x ) size 12{ { {z}} sup { ' } \( 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à

1 5 0 5 0 0 0 -4 -1 6 1 0 0 3 0 8 0 1 righ x T = [ x 1 x 2 x 3 x 4 x 5 x 6 ] A = alignl { stack { size 12{x rSup { size 8{T} } = \[ x rSub { size 8{1} } " x" rSub { size 8{2} } " x" rSub { size 8{3} } " x" rSub { size 8{4} } " x" rSub { size 8{5} } " x" rSub { size 8{6} } \]} {} # A=" "alignl { stack {left [1" 5 0 5 0 0" {} # right ]left ["0 -4 -1 6 1 0" {} # right ]left ["0 3 0 8 0 1 " {} # righ]} } \[ \] {} #c rSup { size 8{T} } = \[ 2" 1 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 2 . . . x n ] size 12{x rSup { size 8{T} } = \[ x rSub { size 8{1} } " "x rSub { size 8{2} } " " "." "." "." " "x rSub { size 8{n} } \] } {} là phương án (tối ưu) của bài toán xuất phát thì x ¯ T = [ x 1 x 2 . . . x n 0 0 . . . 0 ] size 12{ {overline {x}} rSup { size 8{T} } = \[ x rSub { size 8{1} } " "x rSub { size 8{2} } " " "." "." "." " "x rSub { size 8{n} } " 0 0 " "." "." "." " 0" \] } {} là phương án (tối ưu) của bài toán cải biên tương ứ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.

- Nếu x ¯ T = [ x 1 x 2 . . . x n 0 0 . . . 0 ] size 12{ {overline {x}} rSup { size 8{T} } = \[ x rSub { size 8{1} } " "x rSub { size 8{2} } " " "." "." "." " "x rSub { size 8{n} } " 0 0 " "." "." "." " 0" \] } {} là phương án tối ưu của bài toán cải biên thì x T = [ x 1 x 2 . . . x n ] size 12{x rSup { size 8{T} } = \[ x rSub { size 8{1} } " "x rSub { size 8{2} } " " "." "." "." " "x rSub { size 8{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 :

min z ( x ) = x 1 + 2x 2 + x 4 5x 5 3x 3 9x 4 = 0 x 2 7x 3 5x 4 2x 5 = 5 x 1 1 3 x 2 + 2 3 x 3 + 4 3 x 4 + 1 3 x 5 = 2 3 x j 0 ( j = 1,2,3,4, 5 ) { { { alignl { stack { size 12{"min"" "z \( x \) =x rSub { size 8{1} } +"2x" rSub { size 8{2} } +x rSub { size 8{4} } - "5x" rSub { size 8{5} } } {} #alignl { stack { left lbrace - "3x" rSub { size 8{3} } - "9x" rSub { size 8{4} } =0 {} #right none left lbrace x rSub { size 8{2} } - "7x" rSub { size 8{3} } - "5x" rSub { size 8{4} } - "2x" rSub { size 8{5} } =5 {} # right none left lbrace x rSub { size 8{1} } - { {1} over {3} } x rSub { size 8{2} } + { {2} over {3} } x rSub { size 8{3} } + { {4} over {3} } x rSub { size 8{4} } + { {1} over {3} } x rSub { size 8{5} } = { {2} over {3} } {} #right none left lbrace " " {} # right no } } lbrace {} #x rSub { size 8{j} }>= "0 " \( j="1,2,3,4, 5" \) {} } } {}

Bài toán cải biên không có phương án tối ưu nên bài toán xuất phát cũng không có phương án tối ưu .

2- Xét bài toán :

min z ( x ) = 16x 1 + 7x 2 + 9x 3 2 3 x 1 1 3 x 2 + x 3 = 1 3 5x 1 + 5x 2 = 7 x j 0 ( j = 1,2,3 ) { alignl { stack { size 12{"min z" \( x \) = - "16x" rSub { size 8{1} } +"7x" rSub { size 8{2} } +"9x" rSub { size 8{3} } } {} #alignl { stack { left lbrace - { {2} over {3} } x rSub { size 8{1} } - { {1} over {3} } x rSub { size 8{2} } +x rSub { size 8{3} } = { {1} over {3} } {} #right none left lbrace - "5x" rSub { size 8{1} } +"5x" rSub { size 8{2} } =7 {} # right no } } lbrace {} #x rSub { size 8{j} }>= "0 " \( j="1,2,3" \) {} } } {}

Phương án tối ưu của bài toán cải biên :

x 1 x 2 x 3 x 4 = 0 7 5 22 15 0 size 12{ left [ matrix { x rSub { size 8{1} } {} # x rSub { size 8{2} } {} # x rSub { size 8{3} } {} # x rSub { size 8{4} } {}} right ]= left [ matrix {0 {} # { {7} over {5} } {} # { {"22"} over {"15"} } {} # 0{} } right ]} {}

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

x 1 x 2 x 3 = 0 7 5 22 15 size 12{ left [ matrix { x rSub { size 8{1} } {} # x rSub { size 8{2} } {} # x rSub { size 8{3} } {}} right ]= left [ matrix {0 {} # { {7} over {5} } {} # { {"22"} over {"15"} } {} } right ]} {}

3- Xét bài toán :

min z ( x ) = 2x 1 + 4x 2 2x 3 x 1 2x 2 + x 3 = 27 2x 1 + x 2 + 2x 3 = 50 x 1 x 2 x 3 18 x j ( j = 1,2,3 ) { { alignl { stack { size 12{"min z" \( x \) ="2x" rSub { size 8{1} } +"4x" rSub { size 8{2} } - "2x" rSub { size 8{3} } } {} #alignl { stack { left lbrace x rSub { size 8{1} } - "2x" rSub { size 8{2} } +x rSub { size 8{3} } ="27" {} #right none left lbrace "2x" rSub { size 8{1} } +x rSub { size 8{2} } +"2x" rSub { size 8{3} } ="50" {} # right none left lbrace x rSub { size 8{1} } - x rSub { size 8{2} } - x rSub { size 8{3} }<= "18" {} # right no } } lbrace {} #x rSub { size 8{j} } " " \( j="1,2,3" \) {} } } {}

Phương án tối ưu của bài toán cải biên :

x 1 x 2 x 3 x 4 x 5 x 6 = 0 0 25 43 2 0 size 12{ left [ matrix { x rSub { size 8{1} } {} # x rSub { size 8{2} } {} # x rSub { size 8{3} } {} # x rSub { size 8{4} } {} # x rSub { size 8{5} } {} # x rSub { size 8{6} } {}} right ]= left [ matrix {0 {} # 0 {} # "25" {} # "43" {} # 2 {} # 0{} } right ]} {}

Bài toán xuất phát không có phương án tối ưu .

Hai phương pháp biến giả cải biên thương dùng là phương pháp hai pha và phương pháp M vô cùng lớn .

Phương pháp hai pha

Pha 1

Tìm phương án tối ưu cho bài toán cải biên với hàm mục tiêu cải biên là :

min (tổng tất cả biến giả cải biên)

Pha 2

Tìm phương án tối ưu cho bài toán xuất phát với phương án cơ sở khả thi xuất phát là phương án tối ưu tìm được ở pha 1. Ở pha 2 này các biến giả cải biên bị loại ra khỏi ma trận các hệ số ràng buộc, và vectơ chi phí được cập nhật lại, do đó dấu hiệu tối ưu cũng được cập nhật lại

Đây là phương pháp thuận lợi cho việc lập trình ứng dụng giải thuật đơn hình cải tiến.

Ví dụ : Xét bài toán quy hoạch tuyến tính

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

Đưa bài toán về dạng chính tắc bằng cách thêm biến phụ x4 , x5 ta được

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

Ma trận các hệ số ràng buộc là :

A= 1 2 2 1 0 1 2 3 0 1 righ size 12{alignl { stack { left [1" "2" "2" "1" "0 {} #right ] left [1" "2" "3" "0" " - 1 {} #righ]} } \[ \]} {} không chứa ma trận đơn vị

Áp dụng phương pháp đơn hình cải biên hai pha như sau :

Pha 1

Thêm biến giả (cải biên ) x6  0 vào ràng buộc thứ hai để được ma trận đơn vị . Khi đó bài toán cải biên có dạng :

min w ( x ) = x 6 x 1 + 2x 2 + 2x 3 + x 4 = 8 3 x 1 + 2x 2 + 3x 3 x 5 + x 6 = 7 3 x j 0 ( j = 1,2,3,4,5,6 ) { alignl { stack { size 12{ "min"" "w \( x \) =x rSub { size 8{6} } } {} #alignl { stack { left lbrace x rSub { size 8{1} } +2x rSub { size 8{2} } +2x rSub{ size 8{3} } +x rSub { size 8{4} } = { {8} over {3} } {} # right none left lbrace x rSub { size 8{1} } +2x rSub { size 8{2} } +3x rSub { size 8{3} } - x rSub { size 8{5} } +x rSub { size 8{6} } = { {7} over {3} } {} #right no } } lbrace {} # x rSub { size 8{j} }>= 0" " \( j="1,2,3,4,5,6" \) {} } } {}

Có ma trận các ràng buộc là :

1 2 2 1 0 0 1 2 3 0 1 1 righ A = size 12{A=alignl { stack { left [1" "2" "2" "1" "0" 0" {} #right ] left [1" "2" "3" "0" " - 1" 1" {} #righ]} } \[ \]} {} có chứa ma trận đơn vị

Giải bài toán cải biên bằng giải thuật đơn hình cải tiến

Khởi tạo

A ¯ 0 = 1 2 2 1 0 0 1 2 3 0 1 1 b ¯ 0 = 8 3 7 3 size 12{ {overline {A}} rSub { size 8{0} } = left [ matrix { 1 {} # 2 {} # 2 {} # 1 {} # 0 {} # 0 {} ##1 {} # 2 {} # 3 {} # 0 {} # - 1 {} # 1{} } right ]" " {overline {b}} rSub { size 8{0} } = left [ matrix { { {8} over {3} } {} ##{ {7} over {3} } } right ]} {}

c T = 0 0 0 0 0 1 size 12{c rSup { size 8{T} } = left [ matrix { 0 {} # 0 {} # 0 {} # 0 {} # 0 {} # 1{}} right ]} {}

Bước lặp k=0

c B 0 size 12{c rSub { size 8{B rSub { size 6{0} } } } } {} i B 0 size 12{i rSub { size 8{B rSub { size 6{0} } } } } {} x1 x2 x3 x4 x5 x6 b ¯ 0 size 12{ {overline {b}} rSub { size 8{0} } } {}
0 4 1 2 2 1 0 0 8 3 size 12{ { {8} over {3} } } {}
1 6 1 2 3 0 -1 1 7 3 size 12{ { {7} over {3} } } {}
cT 0 0 0 0 0 1 w(x0)
c ¯ 0 T size 12{ {overline {c}} rSub { size 8{0} } rSup { size 8{T} } } {} -1 -2 -3 0 1 0 7 3 size 12{ { {7} over {3} } } {}

Bước lặp k= 1

c B 1 size 12{c rSub { size 8{B rSub { size 6{1} } } } } {} i B 1 size 12{i rSub { size 8{B rSub { size 6{1} } } } } {} x1 x2 x3 x4 x5 x6 b ¯ 1 size 12{ {overline {b}} rSub { size 8{1} } } {}
0 4 1 3 size 12{ { {1} over {3} } } {} 2 3 size 12{ { {2} over {3} } } {} 0 1 2 3 size 12{ { {2} over {3} } } {} 2 3 size 12{ - { {2} over {3} } } {} 10 9 size 12{ { {"10"} over {9} } } {}
0 3 1 3 size 12{ { {1} over {3} } } {} 2 3 size 12{ { {2} over {3} } } {} 1 0 1 3 size 12{ - { {1} over {3} } } {} 1 3 size 12{ { {1} over {3} } } {} 7 9 size 12{ { {7} over {9} } } {}
cT 0 0 0 0 0 1 w(x1)
c ¯ 1 T size 12{ {overline {c}} rSub { size 8{1} } rSup { size 8{T} } } {} 0 0 0 0 0 1 0 size 12{0} {}

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