<< Chapter < Page Chapter >> Page >
7 7 0 50
0 10 0 20 0 10
0 70 3 1

Giai đoạn 2 : kiểm tra tính tối ưu

Đây là phương án tối ưu

80 20 60
50 5 4 1 50
40 3 10 2 20 6 10
70 7 70 9 11

Với cước phí là :

1.50+3.10+2.20+6.10+7.70=670

Khi sử dụng phương án ban đầu

80 20 60
50 5 4 1 50
40 3 20 2 20 6
70 7 60 9 11 10

thì cước phí là :

1.50+3.20+2.20+7.60+11.10=680

Các bài toán được đưa về bài toán vận tải

Có nhiều bài toán thực tế có tính chất không phải là ’’vận tải ’’ nhưng có mô hình toán học là bài toán vận tải. Một số bài toán như vậy là :

a- Bài toán bổ nhiệm

Giả sử tập hợp S gồm m người và tập hợp D gồm n công việc (chức vụ). Cước phí của việc bổ nhiệm người iS vào việc jD là cij (i=1m , j=1n). Bài toán đặt ra là tìm cách chia mỗi người đúng một việc sao cho cước phí bổ nhiệm là nhỏ nhất.

Người ta đặt biến (biến trên dòng) như sau :

1 nÕu ng­êi i nhËn viÖc j 0 nÕu tr­êng hîp kh¸c x ij = { size 12{x rSub { size 8{ ital "ij"} } =alignl { stack { left lbrace 1" ""nÕu ng­êi i nhËn viÖc j" {} #right none left lbrace 0" ""nÕu tr­êng hîp kh¸c" {} # right no } } lbrace } {}

thì bài toán trở thành :

min i S j D c ij x ij size 12{"min"" " Sum cSub { size 8{i in S} } { Sum cSub { size 8{j in D} } {c rSub { size 8{ ital "ij"} } x rSub { size 8{ ital "ij"} } } } } {}

Vì mỗi người nhận đúng 1 việc nên : j D x ij = 1 ( i S ) size 12{ Sum cSub { size 8{j in D} } {x rSub { size 8{ ital "ij"} } =1" " \( forall i in S \) } } {}

Vì mỗi việc chỉ giao cho một người nên : i S x ij = 1 ( j D ) size 12{ Sum cSub { size 8{i in S} } {x rSub { size 8{ ital "ij"} } =1" " \( forall j in D \) } } {}

Đây là bài toán vận tải nhưng có thêm yêu cầu là các biến xij chỉ lấy giá trị 0 hoặc 1.

Bài toán bổ nhiệm cũng có khi được gọi là bài toán chọn (Choice Problem). Nhiều bài toán thực tế đa dạng có mô hình toán học là bài toán bổ nhiệm, chẳng hạn như bài toán phân bố hoả lực vào mục tiêu cần tiêu diệt.

b- Bài toán vận tải với cung ít hơn cầu

Xét một bài toán một bài toán vận tải với S là tập hợp m nút cung và D là tập hợp n nút cầu mà tổng nguồn cung nhỏ hơn tổng nhu cầu, tức là

i = 1 m s i j = 1 n d j size 12{ Sum cSub { size 8{i=1} } cSup { size 8{m} } {s rSub { size 8{i} } }<= Sum cSub { size 8{j=1} } cSup { size 8{n} } {d rSub { size 8{j} } } } {}

Trong trường hợp này tất nhiên không thể đáp ứng đủ nhu cầu dj cho mỗi nút j=1n cho nên ràng buộc có dạng bất đẳng thức thay vì là đẳng thức. Vậy :

i = 1 m x ij d j ( j = 1 n ) size 12{ Sum cSub { size 8{i=1} } cSup { size 8{m} } {x rSub { size 8{ ital "ij"} } }<= d rSub { size 8{j} } " " \( forall j=1 rightarrow n \) } {}

Người ta thường đưa bài toán này về bài toán vận tải (đóng) theo một trong hai trường hợp sau đây :

1.Trường hợp thứ nhất là có tính đến sự thiệt hại bằng tiền khi thiếu một đơn vị hàng hoá ở nút cầu j là rj (j=1n)

Lúc này người ta đưa thêm vào một nút cung giả (m+1) với nguồn cung là

s m + 1 = j = 1 n d j i = 1 n s i size 12{s rSub { size 8{m+1} } = Sum cSub { size 8{j=1} } cSup { size 8{n} } {d rSub { size 8{j} } } - Sum cSub { size 8{i=1} } cSup { size 8{n} } {s rSub { size 8{i} } } } {}

và cước phí tương ứng là

c(m+1) j = rj(j=1n)

Khi đó ta nhận được một bài toán vận tải (đóng)

min i = 1 m + 1 j = 1 n c ij x ij i = 1 m + 1 x ij = d j ( j = 1 n ) j = 1 n x ij = s i ( i = 1 m ) x ij 0 ( i = 1 m + 1,j = 1 n ) { { alignl { stack { size 12{"min"" " Sum cSub { size 8{i=1} } cSup { size 8{m+1} } { Sum cSub { size 8{j=1} } cSup { size 8{n} } {c rSub { size 8{ ital "ij"} } x rSub { size 8{ ital "ij"} } } } } {} #alignl { stack { left lbrace Sum cSub { size 8{i=1} } cSup { size 8{m+1} } {x rSub { size 8{ ital "ij"} } } =d rSub { size 8{j} } " " \( j=1 rightarrow n \) {} #right none left lbrace Sum cSub { size 8{j=1} } cSup { size 8{n} } {x rSub { size 8{ ital "ij"} } =s rSub { size 8{i} } } " " \( i=1 rightarrow m \) {} # right none left lbrace x rSub { size 8{"ij"} }>= 0" " \( i=1 rightarrow m+"1,j"=1 rightarrow n \) {} # right no } } lbrace {}} } {}

2.Trường hợp thứ hai là không tính đến sự thiệt hại do thiếu hàng ở nút cầu

Lúc này ta cũng đưa về bài toán vận tải (đóng) như trên, nhưng vì không tính đến sự thiệt hại nên mục tiêu sẽ là

min i = 1 m j = 1 n c ij x ij size 12{"min"" " Sum cSub { size 8{i=1} } cSup { size 8{m} } { Sum cSub { size 8{j=1} } cSup { size 8{n} } {c rSub { size 8{ ital "ij"} } x rSub { size 8{ ital "ij"} } } } } {}

Ghi chú :

Với bài toán vận tải mở, nguồn chuyển không hết sang các nhu cầu, người ta có thể tính thêm cước phí lưu kho ở mỗi nguồn cho mỗi đơn vị hàng là ci (n+1) (i=1m) . Hoàn toàn tương tự như trên, khi đưa bài toán này về bài toán vận tải (đóng) bằng cách thêm vào nút cầu giả (n+1) thì hàm mục tiêu trở thành

min j = 1 n + 1 i = 1 m c ij x ij size 12{"min" Sum cSub { size 8{j=1} } cSup { size 8{n+1} } { Sum cSub { size 8{i=1} } cSup { size 8{m} } {c rSub { size 8{ ital "ij"} } x rSub { size 8{ ital "ij"} } } } } {}

Như vậy ta chỉ cần xét bài toán vận tải (đóng)

min j = 1 n + 1 i = 1 m c ij x ij j = 1 n x ij = s i ( i = 1 m ) i = 1 m x ij = d j ( j = 1 n ) x ij 0 ( i = 1 m ,j = 1 n ) { { alignl { stack { size 12{"min" Sum cSub { size 8{j=1} } cSup { size 8{n+1} } { Sum cSub { size 8{i=1} } cSup { size 8{m} } {c rSub { size 8{ ital "ij"} } x rSub { size 8{ ital "ij"} } } } } {} #alignl { stack { left lbrace Sum cSub { size 8{j=1} } cSup { size 8{n} } {x rSub { size 8{ ital "ij"} } } =s rSub { size 8{i} } " " \( i=1 rightarrow m \) {} #right none left lbrace Sum cSub { size 8{i=1} } cSup { size 8{m} } {x rSub { size 8{"ij"} } } =d rSub { size 8{j} } " " \( j=1 rightarrow n \) {} # right none left lbrace x rSub { size 8{"ij"} }>= 0" " \( i=1 rightarrow m",j"=1 rightarrow n \) {} # right no } } lbrace {}} } {}

c- Bài toán vận tải có đường cấm

Đây là bài toán vận tải nhưng không phải mỗi nguồn đều có cung nối với mọi đích. nghĩa là có đường cấm. Cách đưa về bài toán vận tải là dùng phương pháp M-lớn, tức là phương pháp phạt như sau :

Gọi E là tập các cung không cấm, tức là các cung (i,j), iS, jD và bài toán có thêm điều kiện

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