<< Chapter < Page Chapter >> Page >
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.

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 đó.

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 { alignl { stack { size 12{"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 {}} } {}

Giả sử rằng B0 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 :

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

b-l = l+1

c-Với cơ sở hiện thời B tính :

x B = B 1 b x N = 0 righ x = size 12{x=alignl { stack { left [x rSub { size 8{B} } =B rSup { size 8{ - 1} } b {} #right ] left [x rSub { size 8{N} } =0 {} #righ]} } \[ \]} {} : phương án cơ sở khả thi tương ứng

b ¯ = B 1 b size 12{ {overline {b}} =B rSup { size 8{ - 1} } b} {}

c ¯ N T = c N T c N T B 1 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{N} } rSup { size 8{T} } B rSup { size 8{ - 1} } N} {} : dấu hiệu tối ưu

d-Nếu 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ì 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 size 12{ {overline {c}} rSub { size 8{s} }>0} {} ( c ¯ s size 12{ {overline {c}} rSub { size 8{s} } } {} là thành phần thứ s của c ¯ N size 12{ {overline {c}} rSub { size 8{N} } } {} ) thì sang bước e

e-Tính : A ¯ s = B 1 A s size 12{ {overline {A}} rSub { size 8{s} } =B rSup { size 8{ - 1} } A rSub { size 8{s} } } {} ( As là cột thứ s của A )

Nếu A ¯ s 0 size 12{ {overline {A}} rSub { size 8{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 size 12{ {overline {a}} rSub { size 8{ ital "is"} } in {overline {A}} rSub { size 8{s} } } {} a ¯ is > 0 size 12{ {overline {a}} rSub { size 8{ ital "is"} }>0} {} thì tính :

x s = min b ¯ i a ¯ is , a ¯ is > 0 = b ¯ r a ¯ rs size 12{ {x} cSup { size 8{ and } } rSub { size 8{s} } ="min" left lbrace { { {overline {b}} rSub { size 8{i} } } over { {overline {a}} rSub { size 8{ ital "is"} } } } , {overline {a}} rSub { size 8{ ital "is"} }>0 right rbrace = { { {overline {b}} rSub { size 8{r} } } over { {overline {a}} rSub { size 8{ ital "rs"} } } } } {} ( i = 1  m)

a ¯ is size 12{ {overline {a}} rSub { size 8{ ital "is"} } } {} là các thành phần của A ¯ s size 12{ {overline {A}} rSub { size 8{s} } } {} .

x s size 12{ {x} cSup { size 8{ and } } rSub { size 8{s} } } {} là thành phần thứ s của phương án mới x size 12{ {x} cSup { size 8{ and } } } {} .

f-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 size 12{ {x} cSup { size 8{ and } } rSub { size 8{s} }>0} {} ( vào cơ sở ), biến xt sẽ nhận giá trị x t = 0 size 12{ {x} cSup { size 8{ and } } rSub { size 8{t} } =0} {} ( ra khỏi cơ sở ). Như vậy phương án mới x size 12{ {x} cSup { size 8{ and } } } {} tương ứng với cơ sở mới B size 12{ {B} cSup { size 8{ and } } } {} ( thay đổi cơ sở ) được xác định như sau :

B size 12{ {B} cSup { size 8{ and } } } {} = B  { t } - { s }

g-Gán B = B size 12{ {B} cSup { size 8{ and } } } {} 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 chuỗi các ma trận cơ sở kề B0 B1 B2 ......... mà các phương án cơ sở tương ứng x0 x1 x2........ là ngày càng tốt hơn, tức là :

z(x0)<z(x1)<z(x2) .............

Chú ý :

Nếu cơ sở ban đầu B0 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 .

Đị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 ) .

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 { 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 {}} } {}

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 c N ] ư size 12{c rSup { size 8{T} } = \[ c rSub { size 8{B} } " "c rSub { size 8{N} } \] ư} {}

x T = [ x B x N ] ư size 12{x rSup { size 8{T} } = \[ x rSub { size 8{B} } " "x rSub { size 8{N} } \] ư} {}

Giải thuật đơn hình cơ bản được thực hiện như sau :

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