Bài giảng Quy hoạch tuyến tính (Bản đẹp)

pdf 116 trang ngocly 470
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Quy hoạch tuyến tính (Bản đẹp)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_quy_hoach_tuyen_tinh_ban_dep.pdf

Nội dung text: Bài giảng Quy hoạch tuyến tính (Bản đẹp)

  1. Quy hoạch tuyến tính
  2. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH CHƯƠNG I LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH Chương này trình bày cách xây dựng mô hình quy hoạch tuyến tính của những bài toán dạng đơn giản. Đây là những kiến thức quan trọng để xây dựng mô hình cho những bài toán phức tạp hơn trong thực tế sau này. Các khái niệm về ‘’ lồi’’ đuợc trình bày để làm cơ sở cho phương pháp hình học giải quy hoạch tuyến tính. Một ví dụ mở đầu được trình bày một cách trực quan để làm rõ khái niệm về phương án tối ưu của quy hoạch tuyến tính. Nội dung chi tiết của chương bao gồm : I- GIỚI THIỆU BÀI TOÁN QUY HOẠCH TUYẾN TÍNH 1- Bài toán vốn đầu tư 2- Bài toán lập kế hoạch sản xuất 3- Bài toán vận tải II- QUY HOẠCH TUYẾN TÍNH TỔNG QUÁT VÀ CHÍNH TẮC 1- Quy hoạch tuyến tính tổng quát 2- Quy hoạch tuyến tính dạng chính tắc 3- Phương án III- ĐẶC ĐIỂM CỦA TẬP HỢP CÁC PHƯƠNG ÁN 1- Khái niệm lồi và tính chất 2- Đặc điểm của tập các phương án 3- Phương pháp hình học IV- MỘT VÍ DỤ MỞ ĐẦU V- DẤU HIỆU TỐI ƯU 1- Ma trận cơ sở - Phương án cơ sở - Suy biến 2- Dấu hiệu tối ưu 5
  3. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH CHƯƠNG I LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH I- GIỚI THIỆU BÀI TOÁN QUY HOẠCH TUYẾN TÍNH Có thể tạm định nghĩa quy hoạch tuyến tính là lĩnh vực toán học nghiên cứu các bài toán tối ưu mà hàm mục tiêu (vấn đề được quan tâm) và các ràng buộc (điều kiện của bài toán) đều là hàm và các phương trình hoặc bất phương trình tuyến tính. Đây chỉ là một định nghĩa mơ hồ, bài toán quy hoạch tuyến tính sẽ được xác định rõ ràng hơn thông qua các ví dụ . Các bước nghiên cứu và ứng dụng một bài toán quy hoạch tuyến tính điển hình là như sau : a- Xác định vấn đề cần giải quyết, thu thập dữ liệu. b- Lập mô hình toán học. c- Xây dựng các thuật toán để giải bài toán đã mô hình hoá bằng ngôn ngữ thuận lợi cho việc lập trình cho máy tính. d- Tính toán thử và điều chỉnh mô hình nếu cần. e- Áp dụng giải các bài toán thực tế. 1- Bài toán vốn đầu tư Người ta cần có một lượng (tối thiểu) chất dinh dưỡng i=1,2, ,m do các thức ăn j=1,2, ,n cung cấp. Giả sử : aij là số lượng chất dinh dưỡng loại i có trong 1 đơn vị thức ăn loại j (i=1,2, ,m) và (j=1,2, , n) bi là nhu cầu tối thiểu về loại dinh dưỡng i cj là giá mua một đơn vị thức ăn loại j Vấn đề đặt ra là phải mua các loại thức ăn như thế nào để tổng chi phí bỏ ra ít nhất mà vẫn đáp ứng được yêu cầu về dinh dưỡng. Vấn đề được giải quyết theo mô hình sau đây : Gọi xj ≥ 0 (j= 1,2, ,n) là số lượng thức ăn thứ j cần mua . Tổng chi phí cho việc mua thức ăn là : 6
  4. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH n z = ∑ c j x j = c1 x1 + c 2 x 2 + + c n x n j=1 Vì chi phí bỏ ra để mua thức ăn phải là thấp nhất nên yêu cầu cần được thỏa mãn là : n min z = ∑ c jx j = c1x1 + c2x2 + + cnxn j=1 Lượng dinh dưỡng i thu được từ thức ăn 1 là : ai1x1 (i=1→m) Lượng dinh dưỡng i thu được từ thức ăn 2 là : ai2x2 Lượng dinh dưỡng i thu được từ thức ăn n là : ainxn Vậy lượng dinh dưỡng thứ i thu được từ các loại thức ăn là : ai1x1+ai2x2+ +ainxn (i=1→m) Vì lượng dinh dưỡng thứ i thu được phải thỏa yêu cầu bi về dinh dưỡng loại đó nên ta có ràng buộc sau : ai1x1+ai2x2+ +ainxn ≥ bi (i=1→m) Khi đó theo yêu cầu của bài toán ta có mô hình toán sau đây : n min z = ∑ c jx j = c1x1 + c2x2 + + cnxn j=1 ⎧a11 x1 + a12 x 2 + + a1n x n ≥ b1 ⎪ ⎪a x + a x + + a x ≥ b ⎪ 21 1 22 2 2n n 2 ⎪ ⎨ ⎪ ⎪am1 x1 + am2 x 2 + + amn x n ≥ bm ⎪ ⎪ ⎩x j ≥ 0 (j = 1,2, ,n) 2- Bài toán lập kế hoạch sản xuất Từ m loại nguyên liệu hiện có người ta muốn sản xuất n loại sản phẩm Giả sử : aij là lượng nguyên liệu loại i dùng để sản xuất 1 sản phẩm loại j (i=1,2, ,m) và (j=1,2, , n) bi là số lượng nguyên liệu loại i hiện có cj là lợi nhuận thu được từ việc bán một đơn vị sản phẩm loại j 7
  5. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH Vấn đề đặt ra là phải sản xuất mỗi loại sản phẩm là bao nhiêu sao cho tổng lợi nhuận thu được từ việc bán các sản phẩm lớn nhất trong điều kiện nguyên liệu hiện có. Gọi xj ≥ 0 là số lượng sản phẩm thứ j sẽ sản xuất (j=1,2, ,n) Tổng lợi nhuận thu được từ việc bán các sản phẩm là : n z = ∑ c j x j = c1 x1 + c 2 x 2 + + c n x n j=1 Vì yêu cầu lợi nhuận thu được cao nhất nên ta cần có : n max z = ∑ c jx j = c1x1 + c2x2 + + cnxn j=1 Lượng nguyên liệu thứ i=1→m dùng để sản xuất sản phẩm thứ 1 là ai1x1 Lượng nguyên liệu thứ i=1→m dùng để sản xuất sản phẩm thứ 2 là ai2x2 Lượng nguyên liệu thứ i=1→m dùng để sản xuất sản phẩm thứ n là ainxn Vậy lượng nguyên liệu thứ i dùng để sản xuất là các sản phẩm là ai1x1+ai2x2+ +ainxn Vì lượng nguyên liệu thứ i=1→m dùng để sản xuất các loại sản phẩm không thể vượt quá lượng được cung cấp là bi nên : ai1x1+ai2x2+ +ainxn ≤ bi (i=1,2, ,m) Vậy theo yêu cầu của bài toán ta có mô hình sau đây : n max z = ∑ c jx j = c1x1 + c2x2 + + cnxn j=1 ⎧a11 x1 + a12 x 2 + + a1n x n ≤ b1 ⎪ ⎪a x + a x + + a x ≤ b ⎪ 21 1 22 2 2n n 2 ⎪ ⎨ ⎪ ⎪am1 x1 + am2 x 2 + + amn x n ≤ bm ⎪ ⎪ ⎩x j ≥ 0 (j = 1,2, ,n) 3- Bài toán vận tải Người ta cần vận chuyển hàng hoá từ m kho đến n cửa hàng bán lẻ. Lượng hàng hoá ở kho i là si (i=1,2, ,m) và nhu cầu hàng hoá của cửa hàng j là dj 8
  6. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH (j=1,2, ,n). Cước vận chuyển một đơn vị hàng hoá từ kho i đến của hàng j là cij ≥ 0 đồng. Giả sử rằng tổng hàng hoá có ở các kho và tổng nhu cầu hàng hoá ở các cửa hàng là bằng nhau, tức là : m n ∑ s i = ∑ d j i=1 j=1 Bài toán đặt ra là lập kế hoạch vận chuyển để tiền cước là nhỏ nhất, với điều kiện là mỗi cửa hàng đều nhận đủ hàng và mỗi kho đều trao hết hàng. Gọi xij ≥ 0 là lượng hàng hoá phải vận chuyển từ kho i đến cửa hàng j. Cước vận chuyển chuyển hàng hoá i đến tất cả các kho j là : n ∑ c ij x ij j=1 Cước vận chuyển tất cả hàng hoá đến tất cả kho sẽ là : m n z = ∑∑c ij x ij i==1 j 1 Theo yêu cầu của bài toán ta có mô hình toán sau đây : m n min z = ∑∑c ij x ij i==1 j 1 ⎧ m ⎪∑ x ij = d j (j = 1,2, ,n) ⎨ i=1 ⎪ ⎩x ij ≥ 0 (i = 1,2, ,m) (j = 1,1, ,n) II- QUY HOẠCH TUYẾN TÍNH TỔNG QUÁT VÀ CHÍNH TẮC 1- Quy hoạch tuyến tính tổng quát Tổng quát những bài toán quy hoạch tuyến tính cụ thể trên, một bài toán quy hoạch tuyến tính là một mô hình toán tìm cực tiểu (min) hoặc cực đại (max) của hàm mục tiêu tuyến tính với các ràng buộc là bất đẳng thức và đẳng thức tuyến tính. Dạng tổng quát của một bài toán quy hoạch tuyến tính là : 9
  7. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH n min/ max z = ∑ c j x j (I) j=1 ⎧⎧ n ⎪⎪∑ aij x j = bi (i ∈ I1 ) ⎪⎪ j=1 ⎪⎪ n ⎪⎨∑ aij x j ≤ bi (i ∈ I2 ) (II) ⎪⎪ j=1 ⎪⎪ n ⎨ ⎪∑ aij x j ≥ bi (i ∈ I3 ) ⎪⎩⎪ j=1 ⎪ ⎪⎧x j ≥ 0 ()j ∈ J1 ⎪⎪ ⎪⎨x j ≤ 0 ()j ∈ J2 (III) ⎪ ⎪ x tùy ý j ∈ J ⎩⎩ j ()3 Trong đó : • (I) Hàm mục tiêu Là một tổ hợp tuyến tính của các biến số, biểu thị một đại lượng nào đó mà ta cần phải quan tâm của bài toán. • (II) Các ràng buộc của bài toán Là các phương trình hoặc bất phương trình tuyến tính n biến số, sinh ra từ điều kiện của bài toán. • (III) Các các hạn chế về dấu của các biến số Người ta cũng thường trình bày bài toán quy hoạch tuyến tính dưới dạng ma trận như sau : ⎡a11 a12 a1n ⎤ ⎡x1 ⎤ ⎡c1 ⎤ ⎡b1 ⎤ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢a21 a22 a2n ⎥ ⎢x 2 ⎥ ⎢c 2 ⎥ ⎢b2 ⎥ A = []aij = ⎢ ⎥ x = ⎢ ⎥ c = ⎢ ⎥ b = ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎣am1 am2 amn ⎦ ⎣x n ⎦ ⎣c n ⎦ ⎣bm ⎦ Gọi ai (i=1→m) là dòng thứ i của ma trận A, ta có : 10
  8. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH min/max z(x) = c T x (I) ⎧⎧ai x = bi (i ∈ I1 ) ⎪⎪ ⎪⎨ai x ≤ bi (i ∈ I2 ) (II) ⎪⎪a x ≥ b (i ∈ I ) ⎪⎩ i i 3 ⎨ ⎧ ⎪ x j ≥ 0 ()j ∈ J1 ⎪ ⎪ x ≤ 0 ()j ∈ J (III) ⎪⎨ j 2 ⎪ ⎪ x tùy ý j ∈ J ⎩⎩ j ()3 Người ta gọi : - A là ma trận hệ số các ràng buộc. - c là vectơ chi phí (cT là chuyển vị của c) - b là vectơ giới hạn các ràng buộc. 2- Quy hoạch tuyến tính dạng chính tắc Bài toán quy hoạch tuyến tính chính tắc là bài toán quy hoạch tuyến tính mà trong đó các ràng buộc chỉ có dấu = và các biến số đều không âm. n min/max z = ∑ c j x j (I) j=1 ⎧ n ( m≤ n ) a x = b (i = 1,2, ,m) (II) ⎪∑ ij j i ⎨ j=1 ⎪ ⎩⎪x j ≥ 0 (j = 1,2, ,n) (III) min/max z(x) = c T x (I) ⎪⎧Ax = b (II) rang(A)=m ⎨ ⎩⎪x ≥ 0 (III) Người ta có thể biến đổi bài toán quy hoạch tuyến tính dạng tổng quát thành bài toán quy hoạch tuyến tính dạng chính tắc nhờ các quy tắc sau đây : - Nếu gặp ràng buộc i có dạng ≤ thì người ta cộng thêm vào vế trái của ràng buộc một biến phụ xn+i ≥ 0 để được dấu = . 11
  9. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH - Nếu gặp ràng buộc i có dạng ≥ thì người ta trừ vào vế trái của ràng buộc một biến phụ xn+i ≥ 0 để được dấu = . Các biến phụ chỉ là những đại lượng giúp ta biến các ràng buộc dạng bất đẳng thức thành đẳng thức, nó phải không ảnh hưởng gì đến hàm mục tiêu nên không xuất hiện trong hàm mục tiêu. - Nếu biến xj ≤ 0 thì ta đặt xj = -x’j với x’j ≥ 0 rồi thay vào bài toán. - Nếu biến xj là tuỳ ý thì ta đặt x j = x′j − x′j′ với x′j , x′j′ đều ≥ 0 rồi thay vào bài toán. - Trong trường hợp trong số các ràng buộc có dòng mà vế phải của dòng đó là giá trị âm thì đổi dấu cả hai vế để được vế phải là một giá trị không âm. Dựa vào các phép biến đổi trên mà người ta có thể nói rằng bài toán quy hoạch tuyến tính chính tắc là bài toán quy hoạch tuyến tính mà trong đó các ràng buộc chỉ có dấu = , vế phải và các biến số đều không âm. Ví dụ : Biến đổi bài toán quy hoạch tuyến tính sau đây về dạng chính tắc : min z(x) = 2x1 − x 2 + 2x 3 + x 4 − 2x 5 ⎧⎧x1 − 2x 2 + x 3 + 2x 4 + x 5 ≤ 7 ⎪⎪ ⎪⎪x 2x x 1 ⎪ 2 + 3 + 4 ≥ − ⎪⎨ ⎪ ⎪2x 3 + x 4 + 3x 5 ≥ 10 ⎪⎪ ⎪ ⎨⎩⎪x1 + x 2 − 2x 3 + x 4 = 20 ⎪ ⎪⎧x1 , x 5 ≥ 0 ⎪⎪ ⎪⎪ ⎨x 4 ≤ 0 ⎪⎪ ⎪ ⎩⎩⎪x 2 , x 3 tùy ý Bằng các thay thế : x 4 = −x′4 (x′4 ≥ 0) x 2 = x′2 − x′2′ (x′2 , x′2′ ≥ 0) x 3 = x′3 − x′3′ (x′3 , x′3′ ≥ 0) ta được : 12
  10. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH min z(x) = 2x1 − (x′2 − x′2′) + 2(x′3 − x′3′) − x′4 − 2x 5 ⎧x1 − 2(x′2 − x′2′) + (x′3 − x′3′) − 2x′4 + x 5 + x 6 = 7 ⎪ ⎪(x′2 − x′2′) + 2(x′3 − x′3′) + x 4 − x 7 = −1 ⎨ ′ ′′ ′ ⎪2(x 3 − x 3 ) − x 4 + 3x 5 − x 8 = 10 ⎪ ⎩x1 + (x′2 − x′2′) − 2(x′3 − x′3′) − x′4 = 20 x1 , x 5 , x 6 , x 7 , x 8 , x′2 , x′2′ , x′3 , x′3′, x′4 ≥ 0 hay : min z(x) = 2x1 − (x′2 − x′2′) + 2(x′3 − x′3′) − x′4 − 2x 5 ⎧x1 − 2(x′2 − x′2′) + (x′3 − x′3′) − 2x′4 + x 5 + x 6 = 7 ⎪ ⎪− (x′2 − x′2′) − 2(x′3 − x′3′) − x 4 + x 7 = 1 ⎨ ′ ′′ ′ ⎪2(x 3 − x 3 ) − x 4 + 3x 5 − x 8 = 10 ⎪ ⎩x1 + (x′2 − x′2′) − 2(x′3 − x′3′) − x′4 = 20 x1 , x 5 , x 6 , x 7 , x 8 , x′2 , x′2′ , x′3 , x′3′, x′4 ≥ 0 3- Phương á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 (P) ⎨ ⎩x ≥ 0 T • x=[x1 x2 xn] là một phương án của (P) khi và chỉ khi Ax = b. T • x=[x1 x2 xn] là một phương án khả thi của (P) khi và chỉ khi Ax = b và x ≥ 0 . • Một phương án tối ưu của (P) là một phương án khả thi của (P) mà giá trị của hàm mục tiêu tương ứng đạt min/max. 13
  11. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH III- ĐẶC ĐIỂM CỦA TẬP HỢP CÁC PHƯƠNG ÁN 1- Khái niệm lồi và các tính chất a- Tổ hợp lồi - Cho m điểm xi trong không gian Rn . Điểm x được gọi là tổ hợp lồi của các điểm xi nếu : m i 1 2 m x = ∑αi x = α1 x + α 2 x + + αm x i=1 α1 ,α 2 , ,αn ≥ 0 α1 + α 2 + + αn = 1 - Khi x là tổ hợp lồi của hai điểm x1, x2 người ta thường viết : x=λx1+(1-λ)x2 (0≤λ≤1) Nếu 0<λ<1 thì x được gọi là tổ hợp lồi thật sự. - Ðoạn thẳng Tập hợp tất cả các tổ tổ hợp lồi của 2 điểm bất kỳ A, B∈ Rn được gọi là đoạn thẳng nối A và B . Ký hiệu : δAB= {x = λA + (1-λ)B với λ∈[0,1] } Định lý Tổ hợp lồ có tính chất bắc cầu. b- Tập hợp lồi Tập con S của Rn được gọi là tập hợp lồi khi S chứa toàn bộ đoạn thẳng nối hai điểmbất kỳ của S. λx + (1-λ)y ∈ S ∀x,y∈,λ∈[0,1] Tập hợp rỗng và tập hợp chỉ có một phần tử được xem là tập hợp lồi. Định lý Giao của một số bất kỳ các tập hợp lồi là một tập hợp lồi. Định lý Nếu S là một tập hợp lồi thì S chứa mọi tổ hợp lồi của một họ điểm bất kỳ trong S. 14
  12. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH c- Ðiểm cực biên của một tập hợp lồi Ðiểm x trong tập lồi S ⊂ Rn được gọi là điểm cực biên nếu không thể biểu diễn được x dưới dạng tổ hợp lồi thật sự của hai điểm phân biệt của S. x d- Ða diện lồi và tập lồi đa diện Đa diện lồi Tập hợp S tất cả các tổ hợp của các điểm x1, x2, ,xm cho trước được gọi là đa diện lồi sinh ra bởi các điểm đó. Đa diện lồi là một tập hợp lồi. Trong đa diện lồi người ta có thể loại bỏ dần các điểm là tổ hợp của các điểm còn lại. Khi đó người ta thu được một hệ các điểm, giả sử là y1, y2, ,yp (p≤m) . Các điểm này chính là các điểm cực biên của đa diện lồi, chúng sinh ra đa diện lồi đó. Số điểm cực biên của đa diện lồi là hữu hạn. Siêu phẳng - Nửa không gian A=[aij]m.n là ma trận cấp m.n Ai (i=1,2, ,m) là hàng thứ i của A n T Siêu phẳng trong R là tập các điểm x=[x1,x2, ,xn] thỏa Ai x = bi n T Nửa không gian trong R là tập các điểm x=[x1,x2, ,xn] thỏa Ai x ≥ bi Siêu phẳng và nửa không gian đều là các tập hợp lồi. Tập lồi đa diện Giao của một số hữu hạn các nửa không gian trong Rn được gọi là tập lồi đa diện. 15
  13. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH Tập lồi đa diện là một tập hợp lồi. Nếu tập lồi đa diện không rỗng và giới nội thì đó là một đa diện lồi 2- Đặc điểm của tập hợp các phương án Ðịnh lý Tập hợp các phương án của một quy hoạch tuyến tính là một tập lồi đa diện. Nếu tập hợp lồi đa diện này không rỗng và giới nội thì đó là một đa diện lồi, số điểm cực biên của nó là hữu hạn. Ðịnh lý Tập hợp các phương án tối ưu của một quy hoạch tuyến tính là một tập lồi. Xét quy hoạch tuyến tính chính tắc min/max z(x) = c T x (I) ⎪⎧Ax = b (II) ⎨ ⎩⎪x ≥ 0 (III) Giả sử A=[aij]m.n có cấp m.n, m ≤ n, rang(A)=m . Gọi Aj (j=1,2, ,n) cột thứ j của ma trận A, quy hoạch tuyến tính chính tắc trên có thể viết : min/ max z(x) = c1 x1 + c 2 x 2 + + c n x n ⎧x A1 + x A 2 + + x A n = b ⎨ 1 2 n ⎩x ≥ 0 T 1 2 n Gọi S={x=[x1,x2, ,xn] ≥ 0 / x1A + x2A + + xnA =b} là tập các phương án của bài toán. 0 0 0 0 T x = [x 1 , x 2 , , x n ]∈ S là một phương án khác 0. Định lý Điều kiện cần và đủ để x0 là phương án cực biên ( điểm cực biên của S) là các j 0 cột A ứng với x j >0 là độc lập tuyến tính. Hệ quả Số phương án cực biên của một quy hoạch tuyến tính chính tắc là hữu hạn. Số thành phần > 0 của một phương án cực biên tối đa là bằng m. Khi số thành phần > 0 của một phương án cực biên bằng đúng m thì phương án đó được gọi là một phương án cơ sở. 16
  14. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH Định lý Nếu tập các phương án của một quy hoạch tuyến tính chính tắc không rỗng thì quy hoạch tuyến tính đó có ít nhất một phương án cực biên. Bổ đề Nếu x là một phương án tối ưu của quy hoạch tuyến tính. x1, x2 là các phương án của quy hoạch tuyến tính. x là tổ hợp lồi thực sự của x1, x2 thì x1, x2 cũng là phương án tối ưu của quy hoạch tuyến tính. Định lý Nếu quy hoạch tuyến tính chính tắc có phương án tối ưu thì thì sẽ có ít nhất một phương án cực biên là phương án tối ưu. Ví dụ : xét quy hoạch tuyến tính chính tắc max z(x) = 2x1 + 3x 2 ⎧4x1 + 2x 2 + x 3 = 5 ⎨ ⎩x1 + 3x 2 = 1 x1 , x 2 , x 3 ≥ 0 T 1 2 1 ⎡13 1 ⎤ Với hệ A A ta tính được x = ⎢ − 0⎥ ⎣ 3 10 ⎦ Với hệ A1 A3 ta tính được x 2 = [1 0 1]T T 2 3 3 ⎡ 1 13⎤ Với hệ A A ta tính được x = ⎢0 ⎥ ⎣ 3 3 ⎦ Vì các thành phần của phương án cực biên là > 0 nên ta chi xét x2 và x3 . Khi đó : z(x2)=2.1+3.0=2 z(x3)=2.0+3.1/3=1 Vậy x 2 = [1 0 1]T là một phương án tối ưu. Định lý Điều kiện cần và đủ để một quy hoạch tuyến tính có phương án tối ưu là tập các phương án không rỗng và hàm mục tiêu bị chặn. 17
  15. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH Định lý Nếu tập các phương án của một quy hoạch tuyến tính không rỗng và là một đa diện lồi thì quy hoạch tuyến tính đó sẽ có ít nhất một phương án cực biên là phương án tối ưu. 3- Phương pháp hình học Từ những kết quả trên người ta có cách giải một quy hoạch tuyến tính hai biến bằng phương pháp hình học thông qua ví dụ sau : Ví dụ : xét quy hoạch tuyến tính max z(x) = 3x1 + 2x 2 ⎧x1 − x 2 ≥ −4 ⎪ ⎨x1 + 2x 2 ≤ 14 ⎪ ⎩⎪5x1 + 2x 2 ≤ 30 x1 , x 2 ≥ 0 x2 C B D x O A 1 A,B,C,D,O là các điểm cực biên. Giá trị hàm mục tiêu tại đó là : z(A)=3.6+2.0=18 z(B)=3.4+2.5=22 z(C)=3.2+2.6=18 z(D)=3.0+2.8=8 z(O)=3.0+2.0=0 Phương án tối ưu của bài toán đạt được tại B : x1=4 và x2=5 IV- MỘT VÍ DỤ MỞ ĐẦU Xét bài toán quy hoạch tuyến tính : 18
  16. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH min z(x) = - 5x1 − 4x 2 − 3x 3 ⎧2x1 + 3x 2 + x 3 ≤ 5 ⎪ ⎨4x1 + x 2 + 2x 3 ≤ 11 ⎪ ⎩3x1 + 4x 2 + 2x 3 ≤ 8 x1 , x 2 , x 3 ≥ 0 Đưa bài toán về dạng chính tắc bằng cách đưa vào các biến phụ w1, w2, w3 ≥ 0 ( làm cho các ràng buộc bất đẳng thức thành đẳng thức ) . Ta được : min z(x) = - 5x1 − 4x 2 − 3x 3 ⎧2x1 + 3x 2 + x 3 + w1 = 5 ⎪ ⎨4x1 + x 2 + 2x 3 + w 2 = 11 ⎪ ⎩3x1 + 4x 2 + 2x 3 + w 3 = 8 x1 , x 2 , x 3 , w1 , w 2 , w 3 ≥ 0 Thực hiện việc chuyển vế ta được bài toán ban đầu như sau : min z(x) = - 5x1 − 4x 2 − 3x 3 ⎧w1 = 5 − 2x1 − 3x 2 − x 3 ⎪ ⎨w 2 = 11 − 4x1 − x 2 − 2x 3 (I) ⎪ ⎩w 3 = 8 − 3x1 − 4x 2 − 2x 3 x1 , x 2 , x 3 ,w1 ,w 2 ,w 3 ≥ 0 Một phương án khả thi xuất phát ( chưa là phương án tối ưu ) của bài toán là : x1 = x2 = x3 = 0 w1=5 w2=11 w3 = 8 Giá trị tương ứng của hàm mục tiêu là z(x) = 0 Người ta sẽ cải tiến phương án xuất phát này để được một phương án mới tốt hơn, nó làm cho giá trị của hàm mục tiêu giảm xuống. Người ta làm như sau : Vì hệ số của x1 trong hàm mục tiêu là âm và có giá trị tuyệt đối lớn nhất nên nếu tăng x1 từ bằng 0 lên một giá trị dương ( càng lớn càng tốt ) và đồng thời vẫn giữ x2 và x3 bằng 0 thì giá trị của hàm của hàm mục tiêu sẽ giảm xuống. Khi đó các biến ở vế trái của bài toán (I) sẽ bị thay đổi theo nhưng phải thoả ≥ 0 . Sự thay đổi của chúng không ảnh hưởng đến sự thay đổi của hàm mục tiêu. Thực hiện ý tưởng trên ta được : ⎧w1 = 5 − 2x1 ≥ 0 ⎪ ⎨w 2 = 11 − 4x1 ≥ 0 ⎪ ⎩w 3 = 8 − 3x1 ≥ 0 x 2 = x 3 = 0 19
  17. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH ⎧ 5 x ≤ ⎪ 1 2 ⎪ ⎪ 11 5 Suy ra : ⎨x1 ≤ ⇒ x1 ≤ (dòng 1 được chọn) ⎪ 4 2 ⎪ 8 ⎪x1 ≤ ⎩ 3 5 Người ta chọn x = nên nhận được một phương án tốt hơn được xác định 1 2 như sau : x 2 = x 3 = w1 = 0 5 1 x = w = 1 w = 1 2 2 3 2 25 Giá trị tương ứng của hàm mục tiêu là z(x) = − 2 Bước tiếp theo là biến đổi bài toán (I) thành một bài toán tương đương bằng cách từ dòng 1 ( dòng được chọn ) tính x1 theo các biến còn lại và thế giá trị nhận được vào các dòng còn lại, ta được : 25 5 7 1 min z(x) = - + w + x − x 2 2 1 2 2 2 3 ⎧ 5 1 3 1 x = − w − x − x ⎪ 1 2 2 1 2 2 2 3 ⎪ ⎨w 2 = 1 + 2w1 + 5x 2 (II) ⎪ 1 3 1 1 ⎪w = + w + x − x ⎩ 3 2 2 1 2 2 2 3 x1 , x 2 , x 3 ,w1 ,w 2 ,w 3 ≥ 0 Thực hiện tương tự như trên, người ta tăng x3 từ bằng 0 lên một giá trị dương cho phép và đồng thời vẫn giữ x2 và w1 bằng 0 thì giá trị của hàm của hàm mục tiêu sẽ giảm xuống. Khi đó các biến ở vế trái của bài toán (II) sẽ bị thay đổi theo nhưng phải thoả ≥ 0 . Ta được : ⎧ 5 1 x = − x ≥ 0 ⎪ 1 2 2 3 ⎪ ⎧x 3 ≤ 5 ⎨w 2 = 1 ≥ 0 ⇒ ⎨ ⇒ x 3 ≤ 1 ( dòng 3 được chọn ) x ≤ 1 ⎪ 1 1 ⎩ 3 ⎪w = − x ≥ 0 ⎩ 3 2 2 3 Khi đó người ta chọn x3=1 nên thu được một phương án tốt hơn được xác định như sau : 20
  18. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH x = w = w = 0 2 1 3 x1 = 2 x 3 = 1 w 2 = 1 Giá trị tương ứng của hàm mục tiêu là z(x)=-13 Bước tiếp theo là biến đổi bài toán (II) thành một bài toán tương đương bằng cách từ dòng 3 ( dòng đựợc chọn ) tính x3 theo các biến còn lại và thế giá trị nhận được vào các dòng còn lại, ta được : min z(x) = -13 + w1 + 3x 2 + w 3 ⎧x1 = 2 - 2w1 − 2x 2 + w 3 ⎪ ⎨w 2 = 1 + 2w1 + 5x 2 (III) ⎪ ⎩x 3 = 1 + 3w 1 + x 2 − 2w 3 x1 , x 2 , x 3 ,w1 ,w 2 ,w 3 ≥ 0 Đến đây vì không có hệ số nào của hàm mục tiêu là âm nên không thể làm giảm giá trị của hàm mục tiêu theo cách như trên nữa. Phương án thu được ở bước sau cùng chính là phương án tối ưu của bài toán. Đối với bài toán max, thay cho việc làm tăng biến có hệ số âm trong hàm mục tiêu người ta làm tăng biến có hệ số dương cho đến khi các hệ số trong hàm mục tiêu hoàn toàn âm. V- DẤU HIỆU TỐI ƯU 1- Ma trận cơ sở - Phương án cơ sở - Suy biế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 (P) ⎨ ⎩x ≥ 0 a- Ma trận cơ sở Người ta gọi cơ sở của bài toán quy hoạch tuyến tính chính tắc (P) là mọi ma trận B không suy biến (có ma trận nghịch đảo) mxm trích ra từ m cột của ma trận ràng buộc A. Các cột còn lại được gọi là ma trận ngoài cơ sở, ký hiệu là N . b- Phương án cơ sở - Phương án cơ sở khả thi B là một cơ sở của bài toán (P). Khi đó, bằng cách hoán vị các cột của A người ta có thể luôn luôn đặt A dưới dạng : 21
  19. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH A = [ B N ] Do đó, người ta cũng phân hoạch x và c như sau : T x = [ xB xN ] T c = [ cB cN ] Một phương án x của bài toán (P) thoả : ⎡x B ⎤ Ax = b ⇔ [] B N ⎢ ⎥ = b ⇔ Bx B + Nx N = b ⎣x N ⎦ Phương án cơ sở Người ta gọi một phương án cơ sở tương ứng với cơ sở B là một phương án đặc biệt, nhận được bằng cách cho : xN = 0 Khi đó xB được xác định một cách duy nhất bằng cách giải hệ phương trình tuyến tính bằng phương pháp Cramer : -1 BxB = b ⇔ xB = B b Phương án cơ sở khả thi Một phương án cơ sở là phương án cơ sở khả thi nếu : -1 xB = B b ≥ 0 Cơ sở tương ứng với một phương án khả thi được gọi là cơ sở khả thi . Ví dụ : xét bài toán quy hoạch tuyến tính dạng chính tắc : min/ max z(x) = x1 − x2 + x3 − x 4 + x5 + x6 ⎧2x1 + 2x 4 + x5 = 20 ⎪ ⎨− 3x1 + 4x2 − 4x 4 + x6 = 10 ⎪ ⎩⎪x1 + 2x2 + x3 + 3x 4 = 28 x j ≥ 0 (j = 1,2, ,6) Ma trận ràng buộc là x 1 x 2 x 3 x 4 x 5 x 6 ⎡ 2 0 0 2 1 0 ⎤ ⎢ ⎥ A = ⎢- 3 4 0 - 4 0 1 ⎥ ⎢ ⎥ ⎣⎢ 1 2 1 3 0 0 ⎦⎥ Có thể chọn ba cột bất kỳ và kiểm chứng xem đó có thể là cơ sở không. Một cơ sở được chọn và sắp xếp lại là 22
  20. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH x 5 x 6 x 3 x 4 x1 x 2 ⎡ 1 0 0 2 2 0 ⎤ ⎢ ⎥ ⎢ 0 1 0 - 4 - 3 4 ⎥ ⎣⎢ 0 0 1 3 1 2 ⎦⎥ Các cột x5 x6 x3 tạo thành một ma trận cơ sở . Các biến tương ứng được gọi là các biến (trong) cơ sở . Các cột x1 x2 x4 tạo thành một ma trận ngoài cơ sở. Các biến tương ứng được gọi là các biến ngoài cơ sở. Một phương án cơ sở khả thi của bài toán là : x1 x2 x3 x4 x5 x6 0 0 28 0 20 10 c- Suy biến -1 Một phương án cơ sở khả thi được gọi là suy biến nếu xB = B b ≥ 0 có những thành phần bằng 0. Sự suy biến là một hiện tượng thường xảy ra trong một số bài toán như bài toán vận tải, dòng dữ liệu, đường đi ngắn nhất Đây là hiện tượng khá phức tạp (có nhiều cách giải quyết sẽ được xét sau). Vì vậy trong những phần tiếp -1 theo ta giả sử rằng phương án cơ sở khả thi là không suy biến, tức là xB = B b > 0 ( dương thực sự ) . 2- 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 Điều kiện cần và đủ để một phương án cơ sở khả thi x có dạng : −1 ⎡x B = B b ≥ 0⎤ x = ⎢ ⎥ ⎢ ⎥ ⎣x N = 0 ⎦ 23
  21. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH của bài toán là phương án tối ưu là : T T T −1 cN = cN − cB B N ≤ 0 đối với bài toán max T T T −1 cN = cN − cB B N ≥ 0 đối với bài toán min Với : A = [ B | N ] T c = [ cB | cN ] Người ta thường gọi : cN là chi phí ngoài cơ sở cB là chi phí cơ sở T c N là chi phí trượt giảm T −1 c B B 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ả T T T −1 cN = cN − cBB 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ả : ⎧ ⎡x B ⎤ ⎪[]B N = b ⎧Ax = b ⎪ ⎢x ⎥ ⎨ ⇒ ⎨ ⎣ N ⎦ ⎩ x ≥ 0 ⎪ ⎪ ⎩x B ≥ 0 x N ≥ 0 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 Nx b ⎪⎧ B + N = ⇒ ⎨ ⎩⎪x B ≥ 0 x N ≥ 0 ⎧ -1 -1 -1 -1 ⎪B Bx B + B Nx N = B b (B B = I) ⇒ ⎨ ⎩⎪x B ≥ 0 x N ≥ 0 24
  22. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH ⎧ -1 -1 ⎪x B + B Nx N = B .b ⇒ ⎨ ⎩⎪x B ≥ 0 x N ≥ 0 ⎧ -1 -1 ⎪x B = B b - B Nx N ⇒ ⎨ ⎩⎪x B ≥ 0 x N ≥ 0 Tính giá trị hàm mục tiêu đối với phương án x ta được : z(x) = cTx T T ⎡x B ⎤ T T = []c B c N ⎢ ⎥ = c B x B + c N x N ⎣x N ⎦ T −1 −1 T = c B (B b − B Nx N ) + c N x N T −1 T −1 T = c B B b − c B B Nx N + c N x N T −1 T T −1 = c B B b + (c N - c B B N)x 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 −1b 0 ⎪ B = ≥ ⎨ * ⎩⎪x N = 0 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* ⎡x * ⎤ c T c T B c T x * c T x * = []B N ⎢ * ⎥ = B B + N N ⎣x N ⎦ T * T −1 * =cB x B = c B B b ( vì x N = 0 ) (2) Từ (1) và (2) ta có : T −1 z(x) ≤ z(x*) vì cN − cB B N ≤ 0 Vậy x* là phương án tối ưu. Ðiều kiện cần * −1 ⎡x B = B b ≥ 0⎤ Giả sử x* = ⎢ ⎥ là phương án tối ưu với ma trận cơ sở B, cần ⎢ * ⎥ ⎣x N = 0 ⎦ T T T −1 chứng minh rằng : cN = cN − cB B N ≤ 0 . (cN là vectơ có n-m thành phần) Ta sẽ chứng minh điều này bằng phản chứng. 25
  23. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH Giả sử rằng tồn tại một thành phần cs của cN mà cs > 0. Dựa vào cs người ta xây dựng một vectơ x như sau : * −1 ⎡x B = x B − B Nx N ⎤ x = ⎢ ⎥ ⎣x N = θI s ≥ 0 ⎦ 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 = θI ≥ 0 ⎤ x = N s (*) ⎢ * −1 −1 −1 ⎥ ⎣x B = x B − B NθIs = B b − B NθI s ⎦ -1 Do B b ≥ 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 : ⎡x B ⎤ Ax = []B N ⎢ ⎥ = Bx B + Nx N ⎣x N ⎦ * −1 = B(x B − B NθI s ) + NθI s −1 −1 = B( B b − B NθI s ) + NθI s −1 −1 = BB b − BB NθIs + NθI s = b − NθI s + NθI 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 T T ⎡x B ⎤ T T = [] c B c N ⎢ ⎥ = c B x B + c N x N ⎣x N ⎦ T * −1 T = c B (x B − B Nx N ) + c N x N T * T −1 T = c B x B − c B B Nx N + c N x N T * T * T −1 T T * = c B x B + c N x N − c B B Nx N + c N x N (vì c N x N = 0) ⎡x * ⎤ c T c T B c T c TB −1N x = []B N ⎢ * ⎥ + ()N − B N ⎣x N ⎦ T * T T −1 = c x + (c N − c B B N) θI s 26
  24. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH T * T T * T = c x + cN θIs = c x + cN Isθ = z(x*) + c s θ > z(x*) ( vì c 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. Bổ đề 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 với B là một cơ sở khả thi nào đó và x0 là phương án cơ sở tương ứng, tức là ⎡x 0 = B −1b ≥ 0⎤ x 0 = B và z(x 0 ) = c TB −1b ⎢ 0 ⎥ B ⎣⎢x N = 0 ⎦⎥ T T T −1 Xét cN = cN − cB B N . Nếu tồn tại một biến ngoài cơ sở xs sao cho c s >0 với c s là thành phần thứ s của c N thì : a- Hoặc là người ta có thể làm tăng một cách vô hạn giá trị của xs mà không đi ra khỏi tập hợp các phương án khả thi, và trong trường hợp này phương án tối ưu của bài toán không giới nội. ∧ b- Hoặc là người ta có thể xác định một cơ sở khả thi khác là B có phương án cơ sở ∧ khả thi x tương ứng với nó là tốt hơn , tức là : ∧ z(x0) < z( x ) Chứng minh Trong quá trình chứng minh định lý dấu hiệu tối ưu ta có phương án mới được xác định như sau : ⎡x = θI ≥ 0 ⎤ x = N s ⎢ * −1 −1 −1 ⎥ ⎣x B = x B − B NθIs = B b − B NθI s ⎦ 27
  25. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH Ký hiệu : N = B −1N Ns là cột s của N b = B −1b ⎡x = b − θ Ns ⎤ Như vậy ta có : x = ⎢ B ⎥ ⎣⎢x N = θIs ⎦⎥ Hai trường hợp có thể xảy ra như sau : a- Trường hợp Ns ≤ 0 Trong trường hợp này xs có thể nhận một giá trị θ lớn tuỳ mà vẫn đảm bảo xB ≥ 0, nghĩa là x luôn luôn thoả ≥ 0 . Khi đó như đã biết giá trị hàm mục tiêu tương ứng là T T ⎡x B ⎤ T T z(x) = []cB cN ⎢ ⎥ = cB x B + cN x N ⎣x N ⎦ T −1 −1 T = c B (B b − B NθIs ) + c N θIs T −1 T −1 T = c B B b − c B B NθIs + c N θIs 0 T T −1 = z(x ) + (c N − c B B N)θIs 0 T = z(x ) + cN θIs 0 = z(x ) +c sθ với c sθ có thể lớn vô hạn thì giá trị của hàm mục tiêu là không giới nội. b- Trường hợp tồn tại i=1→m sao cho Nis > 0 ( Nis > 0 là thành phần thứ i của Ns ) Trong trường hợp này giá trị của θ>0 mà xs có thể nhận không thể tăng vô hạn ∧ vì phải đảm bảo xB>0. Giá trị lớn nhất θ của θ mà xs có thể nhận được xác định như sau : ∧ ⎧ bi ⎫ br θ = min ⎨ , Nis > 0⎬ = ⎩Nis ⎭ Nrs (∀i = 1 → m) Phương án cơ sở khả thi mới có các thành phần như sau : ⎡ ∧ ∧ ⎤ ∧ x B = b − θ Ns x = ⎢ ⎥ ⎢ ∧ ∧ ⎥ ⎣⎢x N = θ Is ⎦⎥ 28
  26. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH và giá trị hàm mục tiêu tương ứng là : ∧ ∧ 0 0 z(x) = z(x ) + θ c s > z(x ) Ghi chú : ∧ Trong trường hợp bài toán không suy biến, nếu θ được xác định một cách duy ∧ nhất thì phương án mới x có đúng m thành phần khác 0. Thật vậy : 0 - Biến xs đang bằng 0 trong phương án x trở thành dương thật sự vì ˆ x s = θ - Biến xr đang dương thật sự bây giờ nhận giá trị : ∧ ∧ br x r = br − θNrs = br − Nrs = br − br = 0 Nrs ∧ ∧ Vậy phương án mới x là một phương án cơ sở. Nó tương ứng với cơ sở ở B được suy ra từ B bằng cách thay thế cột r bằng cột s. ∧ Người ta nói rằng hai cơ sở B và B là kề nhau, chung tương ứng với những điểm cực biên kề nhau trong tập hợp lồi S các phương án khả thi của bài toán. CÂU HỎI CHƯƠNG 1 1- Trình bày các bước nghiên cứu một quy hoạch tuyến tính. 2- Định nghĩa quy hoạch tuyến tính chính tắc. 3- Trình bày khái niệm về phương án của một quy hoạch tuyến tính. 4- Trình bày cơ sở lý thuyết của phương pháp hình học giải một quy hoạch tuyến tính hai biến. 29
  27. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH BÀI TẬP CHƯƠNG 1 1- Một nhà máy cán thép có thể sản xuất hai loại sản phẩm : thép tấm và thép cuộn. Nếu chỉ sản xuất một loại sản phẩm thì nhà máy chỉ có thể sản xuất 200 tấn thép tấm hoặc 140 tấn thép cuộn trong một giờ . Lợi nhuận thu được khi bán một tấn thép tấm là 25USD, một tấn thép cuộn là 30USD. Nhà máy làm việc 40 giờ trong một tuần và thị trường tiêu thụ tối đa là 6000 tấn thép tấm và 4000 tấn thép cuộn . Vấn đề đặt ra là nhà máy cần sản xuất mỗi loại sản phẩm là bao nhiêu trong một tuần để đạt lợi nhuận cao nhất. Hãy trình bày bài toán quy hoạch tuyến tính cho vấn đề trên. 2- Có 3 người cùng phải đi một quảng đường dài 10km mà chỉ có một chiếc xe đạp một chổ ngồi. Tốc độ đi bộ của người thứ nhất là 4km/h, người thứ hai là 2km/h, người thứ ba là 2km/h. Tốc độ đi xe đạp của người thứ nhất là 16km/h, người thứ hai là 12km/h, người thứ ba là 12km/h. Vấn đề đặt ra là làm sao để thời gian người cuối cùng đến đích là ngắn nhất. Hãy trình bày bài toán quy hoạch tuyến tính cho vấn đề trên. 3- Một nhà máy sản xuất ba loại thịt : bò, lợn và cừu với lượng sản xuất mỗi ngày là 480 tấn thịt bò, 400 tấn thịt lợn, 230 tấn thịt cừu. Mỗi loại đều có thể bán được ở dạng tươi hoặc nấu chín. Tổng lượng các loại thịt có thể nấu chín để bán là 420 tấn trong 30
  28. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH giờ và 250 tấn ngoài giờ. Lợi nhuận thu được từ việc bán một tấn mỗi loại thịt được cho trong bảng sau đây : Tươi Nấu chín trong giờ Nấu chín ngoài giờ Bò 8 14 11 Lợn 4 12 7 Cừu 4 13 9 Hãy trình bày bài toán quy hoạch tuyến tính để nhà máy sản xuất đạt lợi nhuận cao nhất. 4- Một xưởng mộc làm bàn và ghế. Một công nhân làm xong một cái bàn phải mất 2 giờ, một cái ghế phải mất 30 phút. Khách hàng thường mua nhiều nhất là 4 ghế kèm theo 1 bàn do đó tỷ lệ sản xuất giữa ghế và bàn nhiều nhất là 4:1. Giá bán một cái bàn là 135USD, một cái ghế là 50USD. Hãy trình bày bài toán quy hoạch tuyến tính để xưởng mộc sản xuất đạt doanh thu cao nhất, biết rằng xưởng có 4 công nhân đều làm việc 8 giờ mỗi ngày. 5- Một nhà máy sản xuất hai kiểu mũ. Thời gian để làm ra một cái mũ kiểu thứ nhất nhiều gấp 2 lần thời gian làm ra một cái kiểu thứ hai. Nếu sản xuất toàn kiểu mũ thứ hai thì nhà máy làm được 500 cái mỗi ngày. Hàng ngày, thị trường tiêu thụ nhiều nhất là 150 cái mũ kiểu thứ nhất và 200 cái kiểu thứ hai. Tiền lãi khi bán một cái mũ kiểu thứ nhất là 8USD, một cái mũ thứ hai là 5USD. Hãy trình bày bài toán quy hoạch tuyến tính để nhà máy sản xuất đạt lợi nhuận cao nhất. 6- Trong hai tuần một con gà mái đẻ được 12 trứng hoặc ấp được 4 trứng nở ra gà con. Sau 8 tuần thì bán tất cả gà con và trứng với giá 0,6USD một gà và 0,1USD một trứng. Hãy trình bày bài toán quy hoạch tuyến tính bố trí 100 gà mái đẻ trứng hoặc ấp trứng sao cho doanh thu là nhiều nhất. 7- Giải những bài toán quy hoạch tuyến tính sau đây bằng phương pháp hình học : 31
  29. LÝ THUYẾT CƠ BẢN VỀ QUY HOẠCH TUYẾN TÍNH max z = x1 − x 2 ⎧3x1 + x 2 ≥ 3 min w = −x1 + x 2 ⎪ ⎧− x − 2x ≤ 6 ⎪x + 2x ≥ 4 1 2 1 2 ⎪ a)- ⎪ b)- x 2x 4 ⎪ ⎪ 1 − 2 ≤ x − x ≤ 1 ⎨ ⎨ 1 2 − x + x ≤ 1 ⎪ ⎪ 1 2 ⎪ ⎪x1 ≤ 5 ⎩x1 ,x 2 ≤ 0 ⎪ ⎪ ⎩x 2 ≤ 5 min w = -2x1 − x 2 max z = 5x1 + 6x 2 ⎧x + 2x ≤ 6 ⎧x1 − 2x 2 ≥ 2 1 2 c)- ⎪ d)- ⎪ − 2x + 3x ≥ 2 ⎪ ⎨ 1 2 ⎨x1 − x 2 ≥ 3 ⎪ ⎪ ⎩x1 , x 2 tuy ý ⎩⎪x1 , x 2 ≥ 0 max z = 3x1 − 4x 2 max z = 3x1 + 2x 2 ⎧x1 − x 2 ≥ −4 ⎪ ⎧2x1 + x 2 ≤ 2 2x x 14 ⎪ 1 + 2 ≤ e)- ⎪ f)- ⎪ ⎪ x ≤ 6 ⎨3x1 + 4x 2 ≥ 1 ⎨ 2 ⎪ ⎪x ≤ 6 ⎪ 1 ⎩⎪x1 , x 2 ≥ 0 ⎩⎪x1 , x 2 ≥ 0 min/ max z(x) = 4x1 + 3x 2 ⎧2x1 − 3x 2 ≥ −12 ⎪ 2x 3x 24 ⎪ 1 + 2 ≤ ⎪ g)- ⎨3x1 − x 2 ≤ 14 ⎪x + 4x ≥ 9 ⎪ 1 2 ⎩⎪2x1 + x 2 ≥ 4 x1 , x 2 ≥ 0 32
  30. GIẢI THUẬT ĐƠN HÌNH CHƯƠNG II GIẢI THUẬT ĐƠN HÌNH 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. Nội dung chi tiết của chương bao gồm : I- GIẢI THUẬT ĐƠN HÌNH CƠ BẢN 1- Cơ sở xây dựng giải thuật đơn hình cơ bản 2- Định lý về sự hội tụ 3- Giải thuật đơn hình cơ bản 4- Chú ý trong trường hợp suy biến II- GIẢI THUẬT ĐƠN HÌNH CẢI TIẾN 1- Một cách tính ma trận nghịch đảo 2- Quy hoạch tuyến tính dạng chuẩn 3- Giải thuật đơn hình cải tiến 4- Phép tính trên dòng - Bảng đơn hình III- PHƯƠNG PHÁP BIẾN GIẢ CẢI BIÊN 1- Bài toán cải biên a- Cải biên bài toán quy hoạch tuyến tính b- Quan hệ giữa bài toán xuất phát và bài toán cải biên 2- Phương pháp hai pha 3- Phương pháp M vô cùng lớn IV- QUY HOẠCH TUYẾN TÍNH SUY BIẾN 1- Các ví dụ về quy hoạch tuyến tính suy biến 2- Xử lý quy hoạch tuyến tính suy biến 34
  31. GIẢI THUẬT ĐƠN HÌNH CHƯƠNG II: GIẢI THUẬT ĐƠN HÌNH I- 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 đó. 1- 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 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 : −1 ⎡x B = B b⎤ x = ⎢ ⎥ : phương án cơ sở khả thi tương ứng ⎣x N = 0 ⎦ b = B −1b T T T −1 cN = cN − cNB N : dấu hiệu tối ưu T T T −1 d- Nếu cN = cN − cB B 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 ( c s là thành phần thứ s của c N ) thì sang bước e 35
  32. GIẢI THUẬT ĐƠN HÌNH −1 e- Tính : A s = B A s ( As là cột thứ s của A ) Nếu A 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 ais ∈ A s mà ais > 0 thì tính : ∧ ⎧ bi ⎫ br x s = min ⎨ , ais > 0⎬ = ( i = 1 → m) ⎩ais ⎭ ars ais là các thành phần của A s . ∧ ∧ x s là thành phần thứ s của phương án mới x . 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 ( vào cơ sở ), biến xt sẽ nhận giá trị x t = 0 ( ra khỏi cơ sở ). Như ∧ ∧ vậy phương án mới x tương ứng với cơ sở mới B ( thay đổi cơ sở ) được xác định như sau : ∧ B = B ∪ { t } - { s } ∧ g- Gán B = B 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 . 2- Đị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 ) . 36
  33. GIẢI THUẬT ĐƠN HÌNH 3- 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 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 ] T c = [cB cN ] T x = [xB xN ] Giải thuật đơn hình cơ bản được thực hiện như sau : 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 −1 ⎡xB = B b = b⎤ x = ⎢ ⎥ ⎢ ⎥ ⎣xN = 0 ⎦ T . Giá trị hàm mục tiêu z(x) = cB xB __ . Ma trận N = B-1N c- Xét dấu hiệu tối ưu : T __ T T −1 T T c N = c N − c B B N = c N − cB N T - Nếu cN ≤ 0 thì kết thúc giải thuật với phương án tối ưu là : −1 ⎡xB = B b = b⎤ x = ⎢ ⎥ ⎢ ⎥ ⎣xN = 0 ⎦ và giá trị hàm mục tiêu là : T z(x) = cB xB - Nếu tồn tại c s ∈ c N mà c s > 0 thì sang bước d. d- Xác định chỉ số của phần tử pivot trong ma trận N . Xác định chỉ số cột s của pivot cs = max { ck > 0 ∈ cN} 37
  34. GIẢI THUẬT ĐƠN HÌNH Nếu Nis ≤ 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 ⎧ bi ⎫ br min ⎨ , Nis > 0⎬ = (i = 1,2, ,m) ⎩Nis ⎭ Nrs __ Phần tử Nrs trong ma trận N đượ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 : T __ T T −1 T T c N = c N − c B B N = c N − cB N T - Nếu cN ≥ 0 thì kết thúc giải thuật với phương án tối ưu là : −1 ⎡xB = B b = b⎤ x = ⎢ ⎥ ⎢ ⎥ ⎣xN = 0 ⎦ và giá trị hàm mục tiêu là : T z(x) = cB xB - Nếu tồn tại c s ∈ c N mà c s 0⎬ = (i = 1,2, ,m) ⎩Nis ⎭ Nrs __ Phần tử Nrs trong ma trận N đượ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 T T . Phần tử thứ s trong cN với phần tử thứ r trong cB T T . Biến xs trong xN với biến xr trong xB f- Quay về (a) 38
  35. GIẢI THUẬT ĐƠN HÌNH 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) = 2x1 + x2 ⎧x1 − x2 + x3 = 3 ⎪ ⎪x + 2x + x = 6 ⎪ 1 2 4 ⎨ ⎪− x1 + 2x2 + x5 = 2 ⎪ ⎩⎪x j ≥ 0 (j = 1,2,3,4,5) Ta có : ⎡ 1 − 1 | 1 0 0 ⎤ ⎡3⎤ ⎢ ⎥ ⎢ ⎥ A = ⎢ 1 2 | 0 1 0 ⎥ b = ⎢6⎥ ⎣⎢− 1 2 | 0 0 1 ⎦⎥ ⎣⎢2⎦⎥ N B T x = []x1 x2 | x3 x 4 x5 T T xN xB c T = [] 2 1 | 0 0 0 T T cN cB Lần lặp1 a- Tính ma trận nghịch đảo B-1 ⎡1 0 0⎤ −1 ⎢ ⎥ B = B = ⎢0 1 0⎥ ⎣⎢0 0 1⎦⎥ b- Tính các tham số . Phương án cơ sở khả thi tốt hơn : ⎡ ⎡x3 ⎤ ⎡1 0 0⎤⎡3⎤ ⎡3⎤ ⎤ ⎢ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎥ ⎢ −1 ⎥ xB = ⎢x 4 ⎥ = B b = ⎢0 1 0⎥⎢6⎥ = ⎢6⎥ = b ⎢ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎥ x = ⎢ ⎢x ⎥ ⎢0 0 1⎥⎢2⎥ ⎢2⎥ ⎥ ⎢ ⎣ 5 ⎦ ⎣ ⎦⎣ ⎦ ⎣ ⎦ ⎥ ⎢ ⎥ ⎢ ⎡x1 ⎤ ⎡0⎤ ⎥ ⎢xN = ⎢ ⎥ = ⎢ ⎥ ⎥ ⎢ ⎥ ⎣⎢ ⎣x2 ⎦ ⎣⎢0⎦⎥ ⎦⎥ . Giá trị hàm mục tiêu : 39
  36. GIẢI THUẬT ĐƠN HÌNH ⎡3⎤ T ⎢ ⎥ z(x) = c x = 0 0 0 6 = 0 B B []⎢ ⎥ ⎣⎢2⎦⎥ . Tính ma trận : ⎡1 0 0⎤⎡ 1 − 1 ⎤ ⎡ 1 − 1 ⎤ __ −1 ⎢ ⎥⎢ ⎥ ⎢ ⎥ N = B N = ⎢0 1 0⎥⎢ 1 2 ⎥ = ⎢ 1 2 ⎥ ⎣⎢0 0 1⎦⎥⎣⎢− 1 2 ⎦⎥ ⎣⎢− 1 2 ⎦⎥ c- Xét dấu hiệu tối ưu : ⎡ 1 − 1 ⎤ T __ T T ⎢ ⎥ cN = c − c N = 2 1 − 0 0 0 1 2 = 2 1 N B [][ ]⎢ ⎥ [ ] ⎣⎢− 1 2 ⎦⎥ 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 {ck > 0 ∈ cN }= max {} 2 , 1 = 2 = c 1 Vậy s=1 ⎡ 1 ⎤ ⎢ ⎥ Ma trận cột s=1 trong ma trận N là N1 = ⎢ 1 ⎥ ⎢ ⎥ ⎣⎢− 1⎦⎥ . Xác định chỉ số dòng pivot r : ⎧ bi ⎫ ⎧ b1 b2 ⎫ ⎧3 6⎫ b1 min ⎨ ⎬ = min ⎨ , ⎬ = min⎨ , ⎬ = 3 = ⎩Nis ⎭ ⎩N11 N21 ⎭ ⎩1 1⎭ N11 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 T T . Phần tử thứ s=1 trong cN với phần tử thứ r=1 trong cB T T . Biến thứ s=1 trong xN với biến thứ r=1 trong xB ⎡ 1 − 1 | 1 0 0⎤ ⎡1 − 1 | 1 0 0⎤ ⎢ ⎥ ⎢ ⎥ A = ⎢ 1 2 | 0 1 0⎥ → A = ⎢0 2 | 1 1 0⎥ ⎣⎢− 1 2 | 0 0 1⎦⎥ ⎣⎢0 2 | − 1 0 1⎦⎥ cT = []2 1 | 0 0 0 → c T = [0 1 | 2 0 0] T T x = []x1 x 2 | x 3 x 4 x 5 → x = [x 3 x 2 | x1 x 4 x 5 ] 40
  37. GIẢI THUẬT ĐƠN HÌNH f- Quay về bước a Lần lặp 2 a. Tính ma trận nghịch đảo B-1 ⎡ 1 0 0⎤ ⎡ 1 0 0⎤ ⎢ ⎥ −1 ⎢ ⎥ B = ⎢ 1 1 0⎥ B = ⎢− 1 1 0⎥ ⎣⎢− 1 0 1⎦⎥ ⎣⎢ 1 0 1⎦⎥ b- Tính các tham số . Phương án cơ sở khả thi tốt hơn : ⎡ ⎡x1 ⎤ ⎡1 0 0⎤⎡3⎤ ⎡3⎤ ⎤ ⎢ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎥ ⎢ −1 ⎥ xB = ⎢x 4 ⎥ = B b = ⎢− 1 1 0⎥⎢6⎥ = ⎢3⎥ = b ⎢ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎥ x = ⎢ ⎢x ⎥ ⎢1 0 1 ⎥⎢2⎥ ⎢5⎥ ⎥ ⎢ ⎣ 5 ⎦ ⎣ ⎦⎣ ⎦ ⎣ ⎦ ⎥ ⎢ ⎥ ⎢ ⎡x3 ⎤ ⎡0⎤ ⎥ ⎢xN = ⎢ ⎥ = ⎢ ⎥ ⎥ ⎢ ⎥ ⎣⎢ ⎣x2 ⎦ ⎣⎢0⎦⎥ ⎦⎥ . Giá trị hàm mục tiêu : ⎡3⎤ T ⎢ ⎥ z(x) = c x = 2 0 0 3 = 6 B B []⎢ ⎥ ⎣⎢5⎦⎥ . Tính ma trận : ⎡ 1 0 0⎤⎡ 1 − 1 ⎤ ⎡ 1 − 1 ⎤ __ −1 ⎢ ⎥⎢ ⎥ ⎢ ⎥ N = B N = ⎢- 1 1 0⎥⎢ 0 2 ⎥ = ⎢ - 1 3 ⎥ ⎣⎢ 1 0 1⎦⎥⎣⎢ 0 2 ⎦⎥ ⎣⎢ 1 1 ⎦⎥ c- Xét dấu hiệu tối ưu : ⎡ 1 − 1 ⎤ __ T T T ⎢ ⎥ cN = c − c N = 0 1 − 2 0 0 - 1 3 = − 2 3 N B [][ ]⎢ ⎥ [ ] ⎣⎢ 1 1 ⎦⎥ 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 ∈ cN } = max {} 3 = 3 = c 2 Vậy s=2 41
  38. GIẢI THUẬT ĐƠN HÌNH ⎡ - 1⎤ ⎢ ⎥ Ma trận cột s=2 trong ma trận N là N2 = ⎢ 3 ⎥ ⎢ ⎥ ⎣⎢ 1 ⎦⎥ . Xác định chỉ số dòng pivot r : ⎧ bi ⎫ ⎧ b2 b3 ⎫ ⎧3 5⎫ b2 min ⎨ ⎬ = min ⎨ , ⎬ = min⎨ , ⎬ = 1 = ⎩Nis ⎭ ⎩N22 N23 ⎭ ⎩3 1⎭ N22 Vậy r = 2 e- Hoán vị . Cột thứ s=2 trong ma trận N và cột thứ r=2 trong ma trận B T T . Phần tử thứ s=2 trong cN với phần tử thứ r=2 trong cB T T . Biến thứ s=2 trong xN với biến thứ r=2 trong xB ⎡1 − 1 | 1 0 0⎤ ⎡1 0 | 1 − 1 0⎤ ⎢ ⎥ ⎢ ⎥ A = ⎢0 2 | 1 1 0⎥ → A = ⎢0 1 | 1 2 0⎥ ⎣⎢0 2 | − 1 0 1⎦⎥ ⎣⎢0 0 | − 1 2 1⎦⎥ cT = []0 1 | 2 0 0 → c T = [0 0 | 2 1 0] T T x = []x 3 x 2 | x1 x 4 x 5 → x = [x 3 x 4 | x1 x 2 x 5 ] f- Quay về bước a Lần lặp 3 a. Tính ma trận nghịch đảo B-1 ⎡ 2 1 ⎤ 0 ⎢ 3 3 ⎥ ⎡ 1 - 1 0⎤ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ −1 1 1 B = 1 2 0 B = ⎢− 0⎥ ⎢ ⎥ 3 3 ⎢ ⎥ ⎢ ⎥ ⎣− 1 2 1⎦ ⎢ ⎥ 4 1 ⎢ - 1 ⎥ ⎣⎢ 3 3 ⎦⎥ b- Tính các tham số . Phương án cơ sở khả thi tốt hơn : 42
  39. GIẢI THUẬT ĐƠN HÌNH ⎡ ⎡ 2 1 ⎤ ⎤ 0 ⎢ ⎢ 3 3 ⎥ ⎥ ⎢ ⎡x1 ⎤ ⎢ ⎥⎡3⎤ ⎡4⎤ ⎥ ⎢ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎥ −1 1 1 ⎢xB = ⎢x2 ⎥ = B b = ⎢− 0⎥⎢6⎥ = ⎢1 ⎥ = b⎥ ⎢ ⎢ ⎥ ⎢ 3 3 ⎥⎢ ⎥ ⎢ ⎥ ⎥ ⎢ ⎢x ⎥ ⎢ ⎥⎢2⎥ ⎢4⎥ ⎥ x = ⎣ 5 ⎦ 4 1 ⎣ ⎦ ⎣ ⎦ ⎢ ⎢ - 1 ⎥ ⎥ ⎢ ⎣⎢ 3 3 ⎦⎥ ⎥ ⎢ ⎥ ⎢ ⎡x ⎤ 0 ⎥ ⎢ 3 ⎡ ⎤ ⎥ xN = ⎢ ⎥ = ⎢ ⎥ ⎢ ⎢ ⎥ ⎢ ⎥ ⎥ ⎣ ⎣x 4 ⎦ ⎣0⎦ ⎦ . Giá trị hàm mục tiêu : ⎡4⎤ T ⎢ ⎥ z(x) = c x = 2 1 0 1 = 9 B B []⎢ ⎥ ⎣⎢4⎦⎥ . Tính ma trận : ⎡ 2 1 ⎤ ⎡2 1 ⎤ 0 ⎢ 3 3 ⎥ ⎢3 3 ⎥ ⎢ ⎥⎡ 1 0 ⎤ ⎢ ⎥ __ ⎢ ⎥ ⎢ ⎥ −1 1 1 ⎢ ⎥ 1 1 N = B N = ⎢− 0⎥ 0 1 = ⎢− ⎥ 3 3 ⎢ ⎥ 3 3 ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎣ 0 0 ⎦ ⎢ ⎥ 4 1 4 1 ⎢ - 1 ⎥ ⎢ - ⎥ ⎣⎢ 3 3 ⎦⎥ ⎣⎢3 3 ⎦⎥ c- Xét dấu hiệu tối ưu : ⎡2 1 ⎤ ⎢3 3 ⎥ ⎢ ⎥ __ T T T ⎢ 1 1 ⎥ cN = c − c N = []0 0 − [2 1 0] − = [− 1 - 1]< 0 : dừng N B ⎢ 3 3 ⎥ ⎢ ⎥ 4 1 ⎢ - ⎥ ⎣⎢3 3 ⎦⎥ Vậy phương án tối ưu sẽ là : ⎧ ⎡x1 ⎤ ⎡4⎤ ⎪ ⎢ ⎥ ⎢ ⎥ x = x = 1 ⎪ B ⎢ 2 ⎥ ⎢ ⎥ ⎪ ⎢x ⎥ ⎢4⎥ ⎨ ⎣ 5 ⎦ ⎣ ⎦ ⎪ ⎪ ⎡x3 ⎤ ⎡0⎤ x ⎪ N = ⎢ ⎥ = ⎢ ⎥ ⎩ ⎣x 4 ⎦ ⎣0⎦ Giá trị hàm mục tiêu là z(x) = 9 với x1 = 4 và x2 = 1 43
  40. GIẢI THUẬT ĐƠN HÌNH 4- Chú ý trong trường hợp suy biến Trong trường hợp bài toán suy biến, nghĩa là br = 0 , ta có : ∧ br x s = = 0 ars cho nên giá trị của hàm mục tiêu không thay đổi khi thay đổi cơ sở, vì : ∧ ∧ z(x) = z(x) + c s x s = z(x) Vậy thì, có thể sau một số lần thay đổi cơ sở lại quay trở về cơ sở đã gặp và lặp như vậy một cách vô hạn. Người ta có nhiều cách để khắc phục hiện tượng này bằng cách xáo trộn một chút các dữ liệu của bài toán, sử dụng thủ tục từ vựng, quy tắc chọn pivot để tránh bị khử. II- GIẢI THUẬT ĐƠN HÌNH CẢI TIẾN 1- Một cách tính ma trận nghịch đảo ∧ Trong giải thuật đơn hình cơ bản hai ma trận kề B và B chỉ khác nhau một cột ∧ −1 vì vậy có thể tính ma trận nghịch đảo B một cách dễ dàng từ B-1 . Để làm điều đó chỉ cần nhân (bên trái) B-1 với một ma trận đổi cơ sở được xác định như sau : ⎡ − a1s ⎤ ⎢1 0 0⎥ ⎢ ars ⎥ ⎢ − a2s ⎥ ⎢0 1 0⎥ ⎢ ars ⎥ µ = ⎢ ⎥ 1 → dòng r ⎢0 0 0⎥ ⎢ ars ⎥ ⎢ ⎥ ⎢ ⎥ − ams ⎢0 0 1⎥ ⎣⎢ ars ⎦⎥ ↑ côt r Khi đó : ^ −1 B = µB −1 Ta thấy rằng ma trận đổi cơ sở µ được thiết lập giống như một ma trận đơn vị mxm, trong đó cột r có các thành phần được xác định như sau : 44
  41. GIẢI THUẬT ĐƠN HÌNH − ais : đối với thành phần i ≠ r. ars 1 : đối với thành phần r . ars Khi mà ma trận cở sở xuất phát là ma trận đơn vị, sau một số bước đổi cơ sở B0 B1 B2 Bq tương ứng với các ma trận đổi cơ sở µ0 µ1 µ2 . µq-1 người ta có cách tính ma trận nghịch đảo như sau : −1 []B q = µ0 .µ1 µ q−1 2- Quy hoạch tuyến tính dạng chuẩn Quy hoạch tuyến tính dạng chuẩn là quy hoạch tuyến tính chính tắc mà trong đó có thể rút ra một ma trận cơ sở là ma trận đơn vị. Quy hoạch tuyến tính chuẩn có dạng : min/ max z(x) = c T x ⎧[I N] x = b ⎨ ⎩x ≥ 0 3- Giải thuật đơn hình cải tiến Từ những kết quả trên người ta xây dựng giải thuật đơn hình cải tiến đối với bài toán qui hoạch tuyến tính (max) dạng chuẩn như sau : a- Khởi tạo A 0 = A b0 = b b- Thực hiện bước lặp với k = 0,1,2, . Xác định phương án cơ sở khả thi : ⎡ ⎤ x B = bk x k = ⎢ k ⎥ ⎢x = 0 ⎥ ⎣ Nk ⎦ . Tính giá trị hàm mục tiêu : k T T z(x ) = c x = c bk Bk Bk Bk . Xét dấu hiệu tối ưu : T T T c k = c − c A k Bk T - Nếu ck ≤ 0 thì giải thuật dừng và : 45
  42. GIẢI THUẬT ĐƠN HÌNH ⎡ ⎤ x B = bk x k = ⎢ k ⎥ là phương án tối ưu ⎢x = 0 ⎥ ⎣ Nk ⎦ k T T z(x ) = c x = c bk là giá trị hàm mục tiêu Bk Bk Bk - Ngược lại thì sang bước (c) c- Cập nhật các giá trị mới : .Tính pivot .Tính ma trận chuyển cơ sở µk k .Tính Ak+1 = µ Ak k .Tính bk+1 = µ bk .Tăng số lần lặp k=k+1. Quay về bước b Ví dụ Giải bài toán quy hoạch tuyến tính sau đây bằng phương pháp đơn hình cải tiến : max z(x) = 2x1 + x 2 ⎧x1 − x 2 + x 3 = 3 ⎪ ⎨x1 + 2x 2 + x 4 = 6 ⎪ ⎩⎪− x1 + 2x 2 + x 5 = 2 x j ≥ 0 (j = 1,2,3,4,5) Bước khởi tạo ⎡ 1 − 1 | 1 0 0⎤ ⎡3⎤ ⎢ ⎥ ⎢ ⎥ A 0 = A = 1 2 | 0 1 0 b0 = 6 ⎢ ⎥ ⎢ ⎥ ⎣⎢− 1 2 | 0 0 1⎦⎥ ⎣⎢2⎦⎥ N0 B 0 c T = []2 1 | 0 0 0 c T c T N0 B0 Bước lặp k=0 ⎡ ⎡x 3 ⎤ ⎡3⎤⎤ ⎢ ⎢ ⎥ ⎢ ⎥⎥ x = x = b0 = 6 0 ⎢ B0 4 ⎥ x = ⎢ ⎥ ⎢ ⎥ ⎢ ⎢x ⎥ ⎢2⎥⎥ ⎢ ⎣ 5 ⎦ ⎣ ⎦⎥ ⎢x = 0 ⎥ ⎣ N0 ⎦ 46
  43. GIẢI THUẬT ĐƠN HÌNH ⎡3⎤ 0 T ⎢ ⎥ z(x ) = c b0 = []0 0 0 6 = 0 B0 ⎢ ⎥ ⎣⎢2⎦⎥ ⎡ 1 - 1 1 0 0 ⎤ T T T ⎢ ⎥ c 0 = c − c A 0 = []2 1 0 0 0 − [0 0 0] 1 2 0 1 0 = [2 1 0 0 0] B0 ⎢ ⎥ ⎣⎢− 1 2 0 0 1 ⎦⎥ ⎡ 1 ⎤ ⎡3⎤ ⎢ ⎥ ⎢ ⎥ ⎢ 1 ⎥ ⎢6⎥ suy ra pivot : a11 = 1 ⎣⎢− 1⎦⎥ ⎣⎢2⎦⎥ ⎡ 1 0 0⎤ 0 ⎢ ⎥ µ = ⎢− 1 1 0⎥ ⎣⎢ 1 0 1⎦⎥ ⎡ 1 0 0⎤ ⎡ 1 - 1 1 0 0 ⎤ ⎡1 - 1 1 0 0⎤ 0 ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ A1 = µ A0 = ⎢− 1 1 0⎥ ⎢ 1 2 0 1 0 ⎥ = ⎢0 3 - 1 1 0⎥ ⎣⎢ 1 0 1⎦⎥ ⎣⎢− 1 2 0 0 1 ⎦⎥ ⎣⎢0 1 1 0 1⎦⎥ ⎡ 1 0 0⎤ ⎡3⎤ ⎡3⎤ 0 ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ b1 = µ b0 = ⎢− 1 1 0⎥ ⎢6⎥ = ⎢3⎥ ⎣⎢ 1 0 1⎦⎥ ⎣⎢2⎦⎥ ⎣⎢5⎦⎥ Bước lặp k=1 ⎡ ⎡x1 ⎤ ⎡3⎤⎤ ⎢ ⎢ ⎥ ⎢ ⎥⎥ x = x = b1 = 3 1 ⎢ B1 4 ⎥ x = ⎢ ⎥ ⎢ ⎥ ⎢ ⎢x ⎥ ⎢5⎥⎥ ⎢ ⎣ 5 ⎦ ⎣ ⎦⎥ ⎢x = 0 ⎥ ⎣ N1 ⎦ ⎡3⎤ 1 T ⎢ ⎥ z(x ) = c b1 = []2 0 0 3 = 6 B1 ⎢ ⎥ ⎣⎢5⎦⎥ ⎡1 - 1 1 0 0⎤ T T T ⎢ ⎥ c1 = c − c A1 = []2 1 0 0 0 − [2 0 0] 0 3 - 1 1 0 B1 ⎢ ⎥ ⎣⎢0 1 1 0 1⎦⎥ = [ 0 3 -2 0 0 ] 47
  44. GIẢI THUẬT ĐƠN HÌNH ⎡- 1⎤ ⎡3⎤ ⎢ ⎥ ⎢ ⎥ ⎢ 3 ⎥ ⎢3⎥ suy ra pivot : a22 = 3 ⎣⎢ 1 ⎦⎥ ⎣⎢5⎦⎥ ⎡ 1 ⎤ 1 0 ⎢ 3 ⎥ ⎢ 1 ⎥ µ1 = ⎢0 0⎥ ⎢ 3 ⎥ ⎢ 1 ⎥ ⎢0 − 1⎥ ⎣ 3 ⎦ ⎡ 1 ⎤ ⎡ 2 1 ⎤ 1 0 ⎢1 0 0 ⎥ ⎢ 3 ⎥ 3 3 ⎢ ⎥ ⎡1 - 1 1 0 0⎤ ⎢ ⎥ 1 1 ⎢ ⎥ ⎢ 1 1 ⎥ A2 = µ A1 = ⎢0 0⎥ 0 3 - 1 1 0 = 0 1 - 0 ⎢ 3 ⎥ ⎢ ⎥ ⎢ 3 3 ⎥ ⎢ 1 ⎥ ⎣⎢0 1 1 0 1⎦⎥ ⎢ ⎥ 0 − 1 ⎢ 4 1 ⎥ ⎢ 3 ⎥ 0 0 - 1 ⎣ ⎦ ⎣⎢ 3 3 ⎦⎥ ⎡ 1 ⎤ 1 0 ⎢ 3 ⎥ ⎢ ⎥ ⎡3⎤ ⎡4⎤ 1 1 ⎢ ⎥ ⎢ ⎥ b2 = µ b1 = ⎢0 0⎥ 3 = 1 ⎢ 3 ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ 1 ⎥ ⎣⎢5⎦⎥ ⎣⎢4⎦⎥ ⎢0 − 1⎥ ⎣ 3 ⎦ Bước lặp k=2 ⎡ ⎡x1 ⎤ ⎡4⎤⎤ ⎢ ⎢ ⎥ ⎢ ⎥⎥ x = x = b2 = 1 2 ⎢ B2 2 ⎥ x = ⎢ ⎥ ⎢ ⎥ ⎢ ⎢x ⎥ ⎢4⎥⎥ ⎢ ⎣ 5 ⎦ ⎣ ⎦⎥ ⎢x = 0 ⎥ ⎣ N2 ⎦ ⎡4⎤ 2 T ⎢ ⎥ z(x ) = c b2 = []2 1 0 1 = 9 B2 ⎢ ⎥ ⎣⎢4⎦⎥ ⎡ 2 1 ⎤ 1 0 0 ⎢ 3 3 ⎥ ⎢ ⎥ T T T ⎢ 1 1 ⎥ c 2 = c − c A 2 = []2 1 0 0 0 − [2 1 0] 0 1 - 0 B2 ⎢ 3 3 ⎥ ⎢ ⎥ 4 1 ⎢0 0 - 1 ⎥ ⎣⎢ 3 3 ⎦⎥ = [ 0 0 -1 -1 0 ] : thoả dấu hiệu tối ưu. 48
  45. GIẢI THUẬT ĐƠN HÌNH Vậy kết quả của bài toán là : ⎡4⎤ ⎢ ⎥ ⎢1 ⎥ . Phương án tối ưu x = x2 = ⎢0⎥ ⎢ ⎥ ⎢0⎥ ⎢ ⎥ ⎣4⎦ . Giá trị hàm mục tiêu z(x) = 9 4- Phép tính trên dòng - Bảng đơn hình Các bước thực hiện giải thuật đơn hình cải tiến được trình bày lần lượt trong các bảng, gọi là bảng đơn hình. Trong thực hành, để cập nhật những giá trị mới ta có thể làm như sau : . Tìm pivot. . Chia dòng chứa pivot cho pivot. . Khử các phần tử trên cột chứa pivot. . Tính dấu hiệu tối ưu. . Tính giá trị hàm mục tiêu . c i x x B0 B0 x 1 x 2 3 x 4 5 b0 0 3 1 -1 1 0 0 3 0 4 1 2 0 1 0 6 0 5 -1 2 0 0 1 2 c T 2 1 0 0 0 z(x0) T c 0 2 1 0 0 0 0 c i x x B1 B1 x 1 x 2 3 x 4 5 b1 2 1 1 -1 1 0 0 3 0 4 0 3 -1 1 0 3 0 5 0 1 1 0 1 5 c T 2 1 0 0 0 z(x1) T c1 0 3 -2 0 0 6 49
  46. GIẢI THUẬT ĐƠN HÌNH c i x x x x x B2 B2 1 2 3 4 5 b2 2 1 2 1 1 0 0 4 3 3 1 1 1 2 0 1 − 0 1 3 3 4 1 0 5 0 0 − 1 4 3 3 c T 2 1 0 0 0 z(x2) T c2 0 0 -1 -1 0 9 III- PHƯƠNG PHÁP BIẾN GIẢ CẢI BIÊN 1- Bài toán cải biên a- Cải biên bài toán quy hoạch tuyến tính Người ta có thể biến đổi một bài toán quy hoạch tuyến tính chính tắc thành dạng chuẩn bằng cách cộng một cách phù hợp vào vế trái của ràng buộc i một biến giả xn+i ≥ 0 để làm xuất hiện ma trận đơn vị. Vì các biến giả cải biên có ảnh hưởng đến hàm mục tiêu nên cũng sẽ có sự cải biên hàm mục tiêu. Vậy, người ta có thể biến đổi bài toán quy hoạch tuyến tính tổng quát, gọi là bài toán xuất phát, thành bài toán dạng chuẩn, gọi là bài toán cải biên (mở rộng) Ví dụ : Biến đổi bài toán quy hoạch tuyến tính sau đây thành dạng chuẩn max z(x) = 2x1 + x 2 + x 3 − x 4 ⎧x1 + 5x 2 + 5x 4 = 25 ⎪ ⎨− 4x 2 − x 3 + 6x 4 = 18 ⎪ ⎩⎪3x 2 + 8x 4 = 28 x j ≥ 0 (j = 1,2,3,4) Bài toán xuất phát có các biến, ma trận ràng buộc và chi phí : T x = [x1 x 2 x 3 x 4 ] ⎡1 5 0 5⎤ ⎢ ⎥ A = ⎢0 - 4 - 1 6⎥ ⎣⎢0 3 0 8 ⎦⎥ c T = [2 1 1 - 1] 50
  47. GIẢI THUẬT ĐƠN HÌNH Bằng cách thêm biến giả x5, x6 lần lượt vào ràng buộc 2 và 3 . Ta được bài toán cải biên : max z′(x) = 2x1 + x 2 + x 3 − x 4 − M(x 5 + x 6 ) ⎧x1 + 5x 2 + 5x 4 = 25 ⎪ ⎨− 4x 2 − x 3 + 6x 4 + x 5 = 18 ⎪ ⎩3x 2 + 8x 4 + x 6 = 28 x j ≥ 0 (j = 1,2,3,4,5,6) z′(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à T x = [x1 x 2 x 3 x 4 x 5 x 6 ] ⎡1 5 0 5 0 0 ⎤ ⎢ ⎥ A = ⎢0 - 4 - 1 6 1 0 ⎥ ⎣⎢0 3 0 8 0 1 ⎦⎥ c 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 : T - Nếu x = [x1 x 2 x n ] là phương án (tối ưu) của bài toán xuất phát thì T x = [x1 x 2 x 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. T - Nếu x = [x1 x 2 x n 0 0 0] là phương án tối ưu của bài toán cải T biên thì x = [x1 x 2 x 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 : 51
  48. GIẢI THUẬT ĐƠN HÌNH min z(x) = x1 + 2x 2 + x 4 − 5x 5 ⎧− 3x 3 − 9x 4 = 0 ⎪ x − 7x − 5x − 2x = 5 ⎪ 2 3 4 5 ⎨ 1 2 4 1 2 ⎪x1 − x 2 + x 3 + x 4 + x 5 = ⎪ 3 3 3 3 3 ⎩⎪ x 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) = −16x1 + 7x 2 + 9x 3 ⎧ 2 1 1 ⎪− x1 − x 2 + x 3 = ⎨ 3 3 3 ⎪ ⎩− 5x1 + 5x 2 = 7 x j ≥ 0 (j = 1,2,3) Phương án tối ưu của bài toán cải biên : ⎡ 7 22 ⎤ []x1 x 2 x 3 x 4 = ⎢0 0⎥ ⎣ 5 15 ⎦ Phương án tối ưu của bài toán xuất phát : ⎡ 7 22⎤ []x1 x 2 x 3 = ⎢0 ⎥ ⎣ 5 15 ⎦ 3- Xét bài toán : min z(x) = 2x1 + 4x 2 − 2x 3 ⎧x1 − 2x 2 + x 3 = 27 ⎪ ⎨2x1 + x 2 + 2x 3 = 50 ⎪ ⎩x1 − x 2 − x 3 ≤ 18 x j (j = 1,2,3) Phương án tối ưu của bài toán cải biên : [x1 x 2 x 3 x 4 x 5 x 6 ]= [0 0 25 43 2 0] 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 . 52
  49. GIẢI THUẬT ĐƠN HÌNH 2- 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) = 3x1 + 4x 2 + x 3 ⎧ 8 ⎪x1 + 2x 2 + 2x 3 ≤ ⎪ 3 ⎨ ⎪ 7 x + 2x + 3x ≥ ⎩⎪ 1 2 3 3 x 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) = 3x1 + 4x 2 + x 3 ⎧ 8 ⎪x1 + 2x 2 + 2x 3 + x 4 = ⎪ 3 ⎨ ⎪ 7 x + 2x + 3x − x = ⎩⎪ 1 2 3 5 3 x j ≥ 0 (j = 1,2,3,4,5) Ma trận các hệ số ràng buộc là : ⎡1 2 2 1 0 ⎤ A=⎢ ⎥ không chứa ma trận đơn vị ⎣1 2 3 0 − 1⎦ Áp dụng phương pháp đơn hình cải biên hai pha như sau : Pha 1 53
  50. GIẢI THUẬT ĐƠN HÌNH 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 ⎧ 8 ⎪x1 + 2x 2 + 2x 3 + x 4 = ⎪ 3 ⎨ ⎪ 7 x + 2x + 3x − x + x = ⎩⎪ 1 2 3 5 6 3 x 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⎤ A = ⎢ ⎥ có chứa ma trận đơn vị ⎣1 2 3 0 − 1 1⎦ 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 ⎡8⎤ ⎡1 2 2 1 0 0⎤ ⎢3⎥ A0 = b0 = ⎢ ⎥ ⎢7⎥ ⎣1 2 3 0 −1 1⎦ ⎢ ⎥ ⎣3⎦ c T = [0 0 0 0 0 1] Bước lặp k=0 c i x1 x2 x3 x4 x5 x6 B0 B0 b0 8 0 4 1 2 2 1 0 0 3 7 1 6 1 2 3 0 -1 1 3 T c 0 0 0 0 0 1 w(x0) T 7 c 0 -1 -2 -3 0 1 0 3 Bước lặp k= 1 c i B1 B1 x1 x2 x3 x4 x5 x6 b1 1 2 2 2 10 0 4 0 1 − 3 3 3 3 9 1 2 1 1 7 0 3 1 0 − 3 3 3 3 9 cT 0 0 0 0 0 1 w(x1) T c1 0 0 0 0 0 1 0 Ta được phương án tối ưu . Xong pha 1 . Chuyển sang pha 2. Pha 2 54
  51. GIẢI THUẬT ĐƠN HÌNH Loại bỏ biến giả cải biên x6 ≥ 0 Khởi tạo ⎡1 2 2 ⎤ 0 1 ⎢3 3 3 ⎥ A 0 = ⎢1 2 1⎥ ⎢ 1 0 − ⎥ ⎣3 3 3⎦ ⎡10⎤ ⎢ 9 ⎥ b0 = ⎢ 7 ⎥ ⎢ ⎥ ⎣ 9 ⎦ c T = [] 3 4 1 0 0 Bước lặp k=0 c i B0 B0 x1 x2 x3 x4 x5 b0 1 2 2 10 0 4 0 1 3 3 3 9 1 2 1 7 1 3 1 0 − 3 3 3 9 cT 3 4 1 0 0 z(x0) T 8 10 1 7 c 0 0 0 3 3 3 9 Bước lặp k=1 c i B1 B1 x1 x2 x3 x4 x5 b1 1 0 4 0 0 -1 1 1 3 1 3 1 7 4 2 1 0 − 2 2 2 6 cT 3 4 1 0 0 z(x1) T 14 c1 1 0 -5 0 2 3 Bước lặp k=2 c i B2 B2 x1 x2 x3 x4 x5 b2 1 0 5 0 0 -1 1 1 3 1 1 4 4 2 1 1 0 2 2 3 cT 3 4 1 0 0 z(x2) T 16 c 2 1 0 -3 -2 0 3 Bước lặp k=3 c i B3 B3 x1 x2 x3 x4 x5 b3 55
  52. GIẢI THUẬT ĐƠN HÌNH 1 0 5 0 0 -1 1 1 3 8 3 1 1 2 2 1 0 3 cT 3 4 1 0 0 z(x3) T c 3 0 -2 -5 -2 0 8 Kết quả của bài toán đã cho : ⎧ 8 x = ⎪ 1 3 ⎪ ⎪x 2 = 0 ⎪ . Phương án tối ưu ⎨x 3 = 0 ⎪x = 0 ⎪ 4 ⎪ 1 ⎪x 5 = ⎩ 3 . Giá trị hàm mục tiêu z(x)=z(x3)= 8 3- Phương pháp M vô cùng lớn Phương pháp M vô cùng lớn ( M là số vô cùng lớn ) tương tự như phương pháp hai pha, ngoại trừ ở pha 1 hàm mục tiêu cải biên có dạng sau đây cho bài toán max/min max [z(x) - M*( tổng các biến giả cải biên) ] min [z(x) + M*( tổng các biến giả cải biên) ] Bằng phương pháp này, trong quá trình tối ưu, các biến giả cải biên sẽ được loại dần ra khỏi ma trận cơ sở : tất cả đều bằng 0. Nếu trong quá trình tìm phương án tối ưu mà không loại bỏ được các biến giả cải biên ra khỏi cơ sở thì bài toán vô nghiệm. So với phương pháp hai pha thì phương pháp này tránh được việc phải cập nhật lại dữ liệu cho bài toán gốc nhưng không tiện lợi bằng trong lập trình ứng dụng. Ví dụ : Xét bài toán tương tự như trên 56
  53. GIẢI THUẬT ĐƠN HÌNH max z(x) = 3x1 + 4x 2 + x 3 ⎧ 8 x + 2x + 2x + x = ⎪ 1 2 3 4 3 ⎨ 7 ⎪x + 2x + 3x − x = ⎩⎪ 1 2 3 5 3 x j ≥ 0 (j = 1,2,3,4,5) Thêm biến giả cải biên x6 ≥ 0 vào ràng buộc thứ hai đồng thời cải biên hàm mục tiêu theo như trên ta được : max w(x) = 3x1 + 4x 2 + x 3 − Mx 6 ⎧ 8 x + 2x + 2x + x = ⎪ 1 2 3 4 3 ⎨ 7 ⎪x + 2x + 3x − x + x = ⎩⎪ 1 2 3 5 6 3 x j ≥ 0 (j = 1,2,3,4,5,6) Tìm phương án tối ưu cho bài toán cải biên này bằng phương pháp đơn hình cải tiến Khởi tạo ⎡8⎤ ⎢ ⎥ ⎡1 2 2 1 0 0⎤ 3 T A 0 = b0 = c = [3 4 1 0 0 − M] ⎢ ⎥ ⎢7⎥ ⎣1 2 3 0 − 1 1⎦ ⎢ ⎥ ⎣3⎦ Bước lặp k=0 c i x x x x x x B0 B0 1 2 3 4 5 6 b0 8 0 4 1 2 2 1 0 0 3 7 -M 6 1 2 3 0 -1 1 3 cT 3 4 1 0 0 -M w(x0) T 7M c 0 3+M 4+2M 1+3M 0 -M 0 − 3 Bước lặp k= 1 c i x x x x x x B1 B1 1 2 3 4 5 6 b1 1 2 2 2 10 0 4 0 1 − 3 3 3 3 9 1 2 1 1 7 1 3 1 0 − 3 3 3 3 9 cT 3 4 1 0 0 -M w(x1) T 8 10 1 5 7 c1 0 0 − − M 3 3 3 3 9 57
  54. GIẢI THUẬT ĐƠN HÌNH Do x6 = 0 (vì ngoài cơ sở) nên bị loại ra khỏi bảng và ta tiếp tục tìm phương án tối ưu cho bài toán gốc đã cho có phương án cơ sở khả thi được khởi tạo như sau : c i x x B0 B1 x1 x 2 3 x 4 5 b0 1 2 2 10 0 4 0 1 3 3 3 9 1 2 1 7 1 3 1 0 − 3 3 3 9 cT 3 4 1 0 0 z(x0) T 8 10 1 7 c 0 0 0 3 3 3 9 Các bước tiếp theo được thực hiện giống như phương pháp hai pha. IV- QUY HOẠCH TUYẾN TÍNH SUY BIẾN Khi thực hiện thuật toán đơn hình trường hợp bất thường có thể xảy ra là khi bi xác định biến ra thì tồn tại tỷ số = 0 , tức là tồn tại bi=0, hay không có tỷ số nào aik dương thật sự. Người ta xem đây là trường hợp suy biến. Khi một bảng đơn hình rơi vào tình trạng suy biến thì có thể gây khó khăn mà cũng có thể không khi ta tiếp tục thực hiện thuật toán đơn hình. 1- Các ví dụ về quy hoạch tuyến tính suy biến Ví dụ 1 : xét quy hoạch tuyến tính : min z(x) = 7 + x1 − x 2 ⎧x1 − 2x 2 ≤ 2 ⎪ ⎨− 3x1 ≤ 6 ⎪ ⎩− 2x1 ≤ 0 x1 , x 2 ≥ 0 Đưa bài toán về dạng chuẩn : min z(x) = 7 + x1 − x 2 ⎧x1 − 2x 2 + x 3 = 2 ⎪ ⎨− 3x1 + x 4 = 6 ⎪ ⎩− 2x1 + x 5 = 0 x1 , x 2 ≥ 0 với ma trận hệ số là : 58
  55. GIẢI THUẬT ĐƠN HÌNH x1 x2 x3 x4 x5 b 1 -2 1 0 0 2 -3 0 0 1 0 6 -2 0 0 0 1 0 có chứa ma trận đơn vị. Áp dụng thuật toán đơn hình cải tiến ta được : cB iB x1 x2 x3 x4 x5 b 0 3 1 -2 1 0 0 2 0 4 -3 0 0 1 0 6 0 5 -2 0 0 0 1 0 c T 1 -1 0 0 0 w=7 T 1 -1 0 0 0 c Đây là trường hợp suy biến, biến vào là x2, nó được tăng lên đến mức vẫn thỏa những điều kiện về dấu của các biến trong cơ sở x3, x3, x5 . Đó là : ⎧ 2 ⎪x 2 ≥ − ⎧x 3 = 2 + 2x 2 ≥ 0 2 ⎪ ⎪ ⎨x 4 = 6 + 0x 2 ≥ 0 ⇔ ⎨∀x 2 ≥ 0 ⎪x = 0 + 0x ≥ 0 ⎪∀x ≥ 0 ⎩ 3 2 ⎪ 2 ⎩ Như vậy x2 có thể lớn tùy ý nên hàm mục tiêu không bị giới nội. Vậy bài toán không có phương án tối ưu. Trường hợp này ở bảng đơn hình không có tỷ số nào dương thật sự để xác định biến ra. Ví dụ 2 : xét quy hoạch tuyến tính : min z(x) = 7 + x1 − x 2 ⎧x1 + 2x 2 ≤ 2 ⎪ ⎨− 3x1 ≤ 6 ⎪ ⎩− 2x1 ≤ 0 x1 , x 2 ≥ 0 Đưa bài toán về dạng chuẩn : min z(x) = 7 + x1 − x 2 ⎧x1 + 2x 2 + x 3 = 2 ⎪ ⎨− 3x1 + x 4 = 6 ⎪ ⎩− 2x1 + x 5 = 0 x1 , x 2 ≥ 0 với ma trận hệ số là : 59
  56. GIẢI THUẬT ĐƠN HÌNH x1 x2 x3 x4 x5 b 1 2 1 0 0 2 -3 0 0 1 0 6 -2 0 0 0 1 0 có chứa ma trận đơn vị. Áp dụng thuật toán đơn hình cải tiến ta được : cB iB x1 x2 x3 x4 x5 b 0 3 1 2 1 0 0 2 0 4 -3 0 0 1 0 6 0 5 -2 0 0 0 1 0 c T 1 -1 0 0 0 T 1 -1 0 0 0 w=7 c cB iB x1 x2 x3 x4 x5 b 1 1 -1 2 1 0 0 1 2 2 0 4 -3 0 0 1 0 6 0 5 -2 0 0 0 1 0 c T 1 -1 0 0 0 T 3 1 w=6 c 0 0 0 2 2 Đây là bảng đơn hình tối ưu. Ví dụ 3 : xét quy hoạch tuyến tính : 1 3 min w(x) = -3 + x − 2x + x 2 1 2 2 3 ⎧1 1 ⎪ x1 + x 3 ≤ 1 ⎨2 2 ⎪ ⎩− x1 + x 2 − x 3 ≤ 0 x1 , x 2 , x 3 ≥ 0 Đưa bài toán về dạng chuẩn : 1 3 min w(x) = -3 + x − 2x + x 2 1 2 2 3 ⎧1 1 ⎪ x1 + x 3 + x 4 = 1 ⎨2 2 ⎪ ⎩− x1 + x 2 − x 3 + x 5 = 0 x1 , x 2 , x 3 , x 4 , x 5 ≥ 0 với ma trận hệ số : 60
  57. GIẢI THUẬT ĐƠN HÌNH x1 x2 x3 x4 x5 b 1 1 0 1 0 1 2 2 -1 1 1 0 1 0 có chứa ma trận đơn vị . Áp dụng giải thuật đơn hình cải tiến : cB iB x1 x2 x3 x4 x5 b 1 1 0 4 0 1 0 1 2 2 0 5 -1 1 1 0 1 0 1 3 c T -2 0 0 2 2 w=-3 T 1 3 c -2 0 0 2 2 x2 vào , x5 ra cB iB x1 x2 x3 x4 x5 b 1 1 0 4 0 1 1 2 2 -2 2 -1 1 -1 0 0 1 3 c T -2 0 0 2 2 w=-3 T 3 1 c − 0 − 0 2 2 2 x1 vào , x4 ra cB iB x1 x2 x3 x4 x5 b 1 1 1 0 1 2 0 2 2 -2 2 0 1 0 2 1 2 1 3 c T -2 0 0 2 2 w=-6 T c 0 0 1 3 2 Đây là bảng đơn hình tối ưu Ví dụ 4 : xét quy hoạch tuyến tính 61
  58. GIẢI THUẬT ĐƠN HÌNH min z(x) = −10x1 + 57x 2 + 9x 3 + 24x 4 ⎧0,5x1 − 5,5x 2 − 2,5x 3 + 9x 4 ≤ 0 ⎪ ⎨0,5x1 − 1,5x 2 − 0,5x 3 + x 4 ≤ 0 ⎪ ⎩x1 ≤ 1 x1 , x 2 , x 3 , x 4 ≥ 0 Đưa bài toán về dạng chuẩn min w(x) = −10x1 + 57x 2 + 9x 3 + 24x 4 ⎧0,5x1 − 5,5x 2 − 2,5x 3 + 9x 4 + x 5 = 0 ⎪ ⎨0,5x1 − 1,5x 2 − 0,5x 3 + x 4 + x 6 = 0 ⎪ ⎩x1 + x 7 = 1 x1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 ≥ 0 với ma trận hệ số x1 x2 x3 x4 x5 x6 x7 b 0,5 -5,5 -2,5 9 1 0 0 0 0,5 -1,5 -0,5 1 0 1 0 0 1 0 0 0 0 0 1 1 có chứa ma trận đơn vị . Áp dụng phương pháp đơn hình cải tiến cB iB x1 x2 x3 x4 x5 x6 x7 b 0 5 0,5 -5,5 -2,5 9 1 0 0 0 0 6 0,5 -1,5 -0,5 1 0 1 0 0 0 7 1 0 0 0 0 0 1 1 c T -10 57 9 24 0 0 0 T w=0 c -10 57 9 24 0 0 0 x1 vào , x5 ra cB iB x1 x2 x3 x4 x5 x6 x7 b -10 1 1 -11 -5 18 2 0 0 0 0 6 0 4 2 -8 -1 1 0 0 0 7 0 11 5 -18 -2 0 1 1 c T -10 57 9 24 0 0 0 T w=0 c 0 -53 -41 204 20 10 0 x2 vào , x6 ra cB iB x1 x2 x3 x4 x5 x6 x7 b -10 1 1 0 0,5 -4 -0,75 2,75 0 0 57 2 0 1 0,5 -2 -0,25 0,25 0 0 0 7 0 0 -0,5 4 0,75 -2,75 1 1 c T -10 57 9 24 0 0 0 T w=0 c 0 0 -14,5 98 6,75 13,25 0 x3 vào , x1 ra cB iB x1 x2 x3 x4 x5 x6 x7 b 62
  59. GIẢI THUẬT ĐƠN HÌNH 9 3 2 0 1 -8 -1,5 5,5 0 0 57 2 -1 1 0 2 0,5 -2,5 0 0 0 7 1 0 0 0 0 0 1 1 c T -10 57 9 24 0 0 0 T w=0 c 29 0 0 -18 -15 93 0 x4 vào , x2 ra cB iB x1 x2 x3 x4 x5 x6 x7 b 9 3 -2 4 1 0 0,5 -4,5 0 0 24 4 -0,5 0,5 0 1 0,25 -1,25 0 0 0 7 1 0 0 0 0 0 1 1 c T -10 57 9 24 0 0 0 T w=0 c 20 9 0 0 -10,5 70,5 0 x5 vào , x3 ra cB iB x1 x2 x3 x4 x5 x6 x7 b 0 5 -4 8 2 0 1 -9 0 0 24 4 0,5 -1,5 -0,5 1 0 1 0 0 0 7 1 0 0 0 0 0 1 1 c T -10 57 9 24 0 0 0 T w=0 c -22 93 21 0 0 -24 0 x6 vào , x4 ra cB iB x1 x2 x3 x4 x5 x6 x7 b 0 5 0,5 -5,5 -2,5 9 1 0 0 0 0 6 0,5 -1,5 -0,5 1 0 1 0 0 0 7 1 0 0 0 0 0 1 1 c T -10 57 9 24 0 0 0 T w=0 c -10 57 9 24 0 0 0 Bảng đơn hình hiện thời giống với bảng đơn hình xuất phát : đây là hiện tượng xoay vòng . 2- Xử lý trường hợp suy biến Theo các ví dụ trên, trong trường hợp quy hoạch tuyến tính suy biến thì sau một số lần lặp có thể phương án nhận được vẫn như cũ mà không có sự thay đổi nào, có thể phương án nhận được tốt hơn, có thể phương án nhận được là một phương án đã nhận trước đó rồi và từ đó cứ xoay vòng mãi. Do đó nếu không có biện pháp phòng ngừa thì thuật toán đơn hình sẽ có thể kéo dài vô tận. Khi thực hiện thuật toán đơn hình thì hiện tượng suy biến xảy ra khi có sự tình cờ khử lẫn nhau làm cho tồn tại b i nào đó bằng 0. Trong trường hợp này có thể có nhiều biến thỏa điều kiện của biến ra. Gặp trường hợp này cần phải lựa chọn biến ra sao cho tránh được hiện tượng xoay vòng. 63
  60. GIẢI THUẬT ĐƠN HÌNH Người ta thường dùng phương pháp nhiễu loạn, phương pháp từ vựng để tránh sự tình cờ khử lẫn nhau này. Trong thực tiển tính toán người ta đã đề ra một quy tắc xử lý khá đơn giản, gọi là quy tắc Bland, khi dùng giải thuật đơn hình giải các quy hoạch tuyến tính suy biến, đó là : Với xk là biến vào , biến ra xr được chọn là biến có chỉ số nhỏ nhất thỏa điều kiện chọn biến ra : ⎧ bi ⎫ min ⎨ , aik > 0 ⎬ (i = 1,2, ,m) ⎩aik ⎭ Ví dụ : Xét quy hoạch tuyến tính suy biến : 4 min w(x) = − x − +2x − x + 16x 3 4 5 6 7 ⎧ 1 x + x − 2x − x + 12x = 0 ⎪ 1 3 4 5 6 7 ⎪ ⎪ 1 1 2 ⎨x 2 + x 4 − x 5 − x 6 + x 7 = 0 ⎪ 2 6 3 ⎪x 3 + x 5 + x 6 − 9x 7 = 2 ⎪ ⎩ x1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 ≥ 0 Áp dụng quy tắc Bland ta thấy : cB iB x1 x2 x3 x4 x5 x6 x7 b 1 0 1 1 0 0 -2 -1 12 0 3 1 1 2 0 2 0 1 0 -1 − 0 2 6 3 0 3 0 0 1 0 1 1 -9 2 4 cT 0 0 0 − 2 -1 16 3 w=0 T 4 c 0 0 0 − 2 -1 16 3 Biến ra có thể là x1 hay x2 . Chọn x1 cB iB x1 x2 x3 x4 x5 x6 x7 b 4 − 4 3 0 0 1 -6 -3 36 0 3 64
  61. GIẢI THUẬT ĐƠN HÌNH 3 4 34 0 2 − 1 0 0 2 − 0 2 3 3 0 3 0 0 1 0 1 1 -9 2 4 cT 0 0 0 − 2 -1 16 3 w=0 T c 4 0 0 0 -6 -5 64 Biến ra là x2 cB iB x1 x2 x3 x4 x5 x6 x7 b 4 3 − 4 − 3 0 1 0 1 2 0 3 2 3 1 2 17 2 5 − 0 0 1 − 0 4 2 3 3 3 1 1 10 0 3 − 1 0 0 − 2 4 2 3 3 4 cT 0 0 0 − 2 -1 16 3 w=0 T 1 c − 3 0 0 0 -1 30 2 Biến ra có thể là x4 hay x5 . Chọn x4 cB iB x1 x2 x3 x4 x5 x6 x7 b 3 -1 6 − 3 0 1 0 1 2 0 2 1 3 2 2 5 − 0 − 1 0 -7 0 4 2 3 5 3 1 0 3 − 1 − 0 0 -4 2 4 2 3 4 cT 0 0 0 − 2 -1 16 3 w=0 T c -2 6 0 1 0 0 32 Biến ra là x5 cB iB x1 x2 x3 x4 x5 x6 x7 b -1 6 0 -6 0 -3 6 1 -40 0 8 0 1 1 6 0 − 4 0 -28 0 3 65
  62. GIẢI THUẬT ĐƠN HÌNH 0 3 0 6 1 3 -5 0 31 2 4 cT 0 0 0 − 2 -1 16 3 w= T 13 c 0 -6 0 − 81 0 -24 3 Biến ra là x3 cB iB x1 x2 x3 x4 x5 x6 x7 b 54 40 27 14 80 -1 6 0 − 1 0 31 31 31 31 31 18 28 4 16 56 0 1 1 − − 0 0 31 31 93 31 31 6 1 3 5 2 16 7 0 − 0 1 31 31 31 31 31 4 cT 0 0 0 − 2 -1 16 3 48 w= − T 42 24 187 128 31 c 0 − 0 0 31 31 93 31 Đến đây không còn hiện tượng suy biến. Biến vào là x7 66
  63. GIẢI THUẬT ĐƠN HÌNH CÂU HỎI CHƯƠNG 2 1- Trình bày cơ sở lý thuyết của thuật toán đơn hình cơ bản. 2- Định nghĩa quy hoạch tuyến chuẩn. 3- Trình bày các bước lập bảng đơn hình theo phép toán trên dòng . 4- Cải biên một quy hoạch tuyến tính tổng quát như thế nào ? . Cách giải quy hoạch tuyến tính cải biên và quy hoạch tuyến tính gốc. 67
  64. GIẢI THUẬT ĐƠN HÌNH BÀI TẬP CHƯƠNG 2 1- Tìm phương án tối ưu của bài toán sau đây bằng phương pháp đơn hình cơ bản min z = -2x1 − 2x 2 max z = 3x1 + 2x 2 ⎧2x1 + x 2 ≤ 4 ⎧- x1 + x 2 ≤ 4 ⎪ ⎪ ⎪2x1 + 3x 2 ≤ 3 a)- ⎪x 2x 14 b)- ⎪ ⎪ 1 + 2 ≤ ⎪ ⎨ ⎨4x1 + x 2 ≤ 5 ⎪5x1 + 2x 2 ≤ 30 ⎪ ⎪ ⎪x1 + 5x 2 ≤ 1 ⎩⎪x1 , x 2 ≥ 0 ⎪ ⎪ ⎩x1 , x 2 ≥ 0 min w = x1 + 2x 3 + x 5 ⎧x1 + x 2 + x 3 + x 4 + x 5 = 5 ⎪ c)- ⎪x x x x 2 ⎪ 2 + 3 + 4 − 5 = ⎨ ⎪x 3 − x 4 + x 5 = 1 ⎪ ⎩⎪x1 , x 2 , x 3 , x 4 , x 5 ≥ 0 2- Tìm phương án tối ưu của bài toán sau bằng phương pháp đơn hình cải tiến a) max z = 5x1 + 3x2 2x1 + 2x2 ≤ 80 x1 ≤ 30 x1, x2 ≥ 0 b) max z = x1 + 2x2 2x1 + 3x2 ≤ 7 x1 - x2 ≤ 1 x1 ≥ 0, x2 ≥ 0 c) max z = 5x1 + 3x2 + x3 2x1 + 3x2 - x3 ≤ 4 3x1 - x2 + 2x3 ≤ 2 x1 + x2 + 3x3 ≤ 5 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0 3- Tìm phương án tối ưu của các bài toán sau bằng phương pháp biến giả cải biên. a) max z = 3x1 - x2 2x1 + x2 ≤ 100 68
  65. GIẢI THUẬT ĐƠN HÌNH x1 ≥ 10 x2 ≥ 0 b) min w = 3x1 + x2 x1 + x2 ≥ 3 2x1 ≥ 5 x1, x2 ≥ 0 c) max z = 3x1 + x2 - 3x3 x1 + 2x2 - x3 = 2 -10x2 + 5x3 = 5 -3x2 + 2 x3 = 4 xi ≥ 0, ∀i = 1→3 min w = -x1 − 3x 2 max z = 2x1 + 6x 2 ⎧x1 + x 2 ≥ 3 ⎧− x1 − x 2 − x 3 ≤ −2 ⎪ d)- ⎪ e)- ⎪ x x 1 ⎪ ⎪− 1 + 2 ≤ − ⎨2x1 − x 2 + x 3 ≤ 1 ⎨ ⎪ ⎪x1 + 2x 2 ≤ 4 ⎩⎪x1 , x 2 , x 3 ≥ 0 ⎪ ⎩⎪x1 , x 2 ≥ 0 max z = x1 + 3x 2 min w = 2x1 + x 2 ⎧− x1 − x 2 ≤ −3 ⎧− x1 + x 2 ≤ −1 ⎪ ⎪ f)- ⎪ x x 1 g)- ⎪ x 2x 2 ⎪− 1 + 2 ≤ − ⎪− 1 − 2 ≤ − ⎨ ⎨ ⎪− x1 + 2x 2 ≤ 2 ⎪x 2 ≤ 1 ⎪ ⎪ ⎩⎪x1 , x 2 ≥ 0 ⎩⎪x1 , x 2 ≥ 0 69
  66. BÀI TOÁN ĐỐI NGẪU CHƯƠNG III BÀI TOÁN ĐỐI NGẪU Chương này trình bày trình bày khái niệm đối ngẫu, các quy tắc đối ngẫu và giải thuật đối ngẫu. Đây là các kiến thức có giá trị trong ứng dụng vì nhờ đó có thể giải một quy hoạch tuyến tính từ quy hoạch tuyến tính đối ngẫu của nó. Nội dung chi tiết của chương này bao gồm : I- KHÁI NIỆM VỀ ĐỐI NGẪU 1- Đối ngẫu của quy hoạch tuyến tính dạng chính tắc 2- Định nghĩa đối ngẫu trong trường hợp tổng quát 3- Các định lý về sự đối ngẫu a- Định lý 1 ( đối ngẫu yếu ) b- Định lý 2 c- Định lý 3 d- Định lý 4 ( sự đối ngẫu) e- Định lý 5 (tính bổ sung ) II- GIẢI THUẬT ĐỐI NGẪU 70
  67. BÀI TOÁN ĐỐI NGẪU CHƯƠNG III BÀI TOÁN ĐỐI NGẪU I- KHÁI NIỆM VỀ ĐỐI NGẪU Đối ngẫu là một khái niệm cơ bản của việc giải bài toán quy hoạch tuyến tính vì lý thuyết đối ngẫu dẫn đến một kết quả có tầm quan trọng về mặt lý thuyết và cả mặt thực hành. 1- Đối ngẫu của quy hoạch tuyến tính dạng chính tắc Xét một bài toán quy hoạch tuyến tính dạng chính tắc min z(x) = c T x ⎪⎧Ax = b ⎨ ⎩⎪x ≥ 0 Giả sử rằng x* là phương án tối ưu cần tìm của bài toán và x0 là một phương án của bài toán thì một cận trên của giá trị mục tiêu tối ưu được xác định vì : cTx* ≤ cTx0 Tuy chưa tìm được phương án tối ưu x* nhưng nếu biết thêm được một cận dưới của giá trị mục tiêu tối ưu thì ta đã giới hạn được phần nào giá trị mục tiêu tối ưu. Người ta ước lượng cận dưới này theo cách như sau : T n Với mỗi vectơ x = [x1 x2 xn] ≥ 0 thuộc R chưa thoả ràng buộc của bài toán, tức là b – Ax ≠ 0 người ta nới lỏng bài toán trên thành bài toán nới lỏng : min L(x,y) = cTx + yT(b - Ax) x ≥ 0 T m y = [ y1 y2 ym] tuỳ ý ∈ R Gọi g(y) là giá trị mục tiêu tối ưu của bài toán nới lỏng, ta có : g(y) = min { cTx + yT(b - Ax) } (x ≥ 0) 71
  68. BÀI TOÁN ĐỐI NGẪU ≤ cTx + yT(b - Ax) Trong trường hợp x là phương án của bài toán ban đầu, tức là : b - Ax = 0 thì g(y) ≤ cTx Vậy g(y) là một cận dưới của giá trị mục tiêu bất kỳ nên cũng là cận dưới của giá trị mục tiêu tối ưu. Một cách tự nhiên là người ta quan tâm đến bài toán tìm cận dưới lớn nhất, đó là : max g(y) y tuỳ ý ∈ Rm Bài toán này được gọi là bài toán đối ngẫu của bài toán ban đầu. Trong phần sau người ta sẽ chứng minh giá trị mục tiêu tối ưu của bài toán đối ngẫu bằng với giá trị mục tiêu tối ưu của bài toán gốc ban đầu. Người ta đưa bài toán đối ngẫu về dạng dể sử dụng bằng cách tính như sau : g(y) = min { cTx+yT(b - Ax) } (x ≥ 0) = min { cTx + yTb - yTAx } (x ≥ 0) = min { yTb + (cT - yTA)x } (x ≥ 0) = yTb + min { (cT - yTA)x } (x ≥ 0) Ta thấy : ⎡0 khi c T − y T A ≥ 0 min (c T − y T A)x =⎢ T T (x≥0) ⎣⎢không xác đinh khi c − y A < 0 Vậy ta nhận được : g(y) = yTb với cT - yTA ≥ 0 Suy ra bài tóan đối ngẫu có dạng : max g(y) = y Tb T T ⎪⎧y A ≤ c ⎨ m ⎩⎪y ∈ R tùy ý Hay là : 72
  69. BÀI TOÁN ĐỐI NGẪU max g(y) = bT y T ⎪⎧A y ≤ c ⎨ m ⎩⎪y ∈ R tùy ý 2- Định nghĩa đối ngẫu trong trường hợp quy hoạch tổng quát Trong trường hợp quy hoạch tuyến tính tổng quát, những quy tắc sau đây được áp dụng để xây dựng bài toán đối ngẫu : - Hàm mục tiêu đối ngẫu : . max ↔ min - Biến đối ngẫu : . Mỗi ràng buộc ↔ một biến đối ngẫu - Chi phí đối ngẫu và giới hạn ràng buộc : . Chi phí đối ngẫu ↔ giới hạn ràng buộc - Ma trận ràng buộc đối ngẫu : . Ma trận chuyển vị - Chiều của ràng buộc và dấu của biến : . Ràng buộc trong bài toán max có dấu ≤ thì biến đối ngẫu trong bài toán min có dấu ≥ 0 ( trái chiều ) . Ràng buộc trong bài toán max có dấu = thì biến đối ngẫu trong bài toán min có dấu tùy ý. . Ràng buộc trong bài toán max có dấu ≥ thì biến đối ngẫu trong bài toán min có dấu ≤ 0 ( trái chiều ) . Biến của bài toán max có dấu ≥ 0 thì ràng buộc đối ngẫu trong bài toán min có dấu ≥ ( cùng chiều ) . Biến của bài toán max có dấu tùy ý thì ràng buộc đối ngẫu trong bài toán min có dấu = . . Biến của bài toán max có dấu ≤ 0 thì ràng buộc trong bài toán đối ngẫu min có dấu ≤ ( cùng chiều ) Xét các ràng buộc dạng ma trận của một bài toán quy hoạch tuyến tính tổng quát như sau : 73
  70. BÀI TOÁN ĐỐI NGẪU ⎡x1 ⎤ ⎡a11 a12 a1j a1n ⎤ ⎢ ⎥ ⎡b1 ⎤ ⎢ ⎥ x 2 ⎢ ⎥ = ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ T ⎢ ⎥ ai → ai1 ai2 aij ain ⎢ ⎥ ≤ ⎢ bi ⎥ ⎢ ⎥ x ⎢ ⎥ ⎢ j ⎥ ≥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢a a a a ⎥ ⎢ ⎥ ⎣ m1 m2 mj mn ⎦ ⎢ ⎥ ⎣bm ⎦ ⎣⎢x n ⎦⎥ ↑ A j Ký hiệu : T ai là dòng thứ i (i=1,2, ,m) Aj là cột thứ j (j=1,2, ,n) Khi đó, mối liên hệ giữa hai bài toán đối ngẫu có thể được trình bày như sau : z(x) = cTx → min w(y) = yTb → max Ràng buộc / Dấu T ai x = bi yi tự do T ai x ≤ bi yi ≤ 0 Cùng chiều T ai x ≥ bi yi ≥ 0 T xj ≥ 0 y Aj ≤ cj T xj ≤ 0 y Aj ≥ cj Trái chiều T xj tự do y Aj = cj Ví dụ a- Hai bài toán sau đây là đối ngẫu : max z(x) = 30x1 + 10x 2 ⎧2x1 + x 2 ≤ 4 ⎨ (P) ⎩2x1 + 2x 2 ≤ 6 x1 , x 2 ≥ 0 min w(y) = 4y1 + 6y 2 ⎧2y1 + 2y 2 ≥ 30 ⎨ (D) ⎩y1 + 2y 2 ≥ 10 y1 , y 2 ≥ 0 b- Hai bài toán sau đây là đối ngẫu : 74
  71. BÀI TOÁN ĐỐI NGẪU min w(x) = x1 − x 2 + x 3 + 2x 4 ⎧x1 + 2x 2 − x 3 + 5x 4 ≤ 6 ⎪ ⎪2x1 − 3x 2 + 3x 3 − 4x 4 ≥ 7 ⎨ (D) ⎪3x1 − 2x 2 + 5x 3 = 9 ⎪ ⎩7x1 + x 3 − 2x 4 ≥ 5 x1 , x 2 ≥ 0, x 3 tuy y , x 4 ≤ 0 max z(y) = 6y1 + 7y 2 + 9y 3 + 5y 4 ⎧y1 + 2y 2 + 3y 3 + 7y 4 ≤ 1 ⎪ ⎪2y1 − 3y 2 − 2y 3 ≤ −1 ⎨ (P) ⎪- y1 + 3y 2 + 5y 3 + y 4 = 1 ⎪ ⎩5y1 − 4y 2 − 2y 4 ≥ 2 y1 ≤ 0, y 2 ≥ 0, y 3 tuy y, y 4 ≥ 0 Ðối với cặp bài toán đối ngẫu (P) và (D) chỉ xảy ra một trong ba trường hợp sau : - Cả hai bài toán đều không có phương án tối ưu . - Cả hai bài toán đều có phương án, lúc đó chúng đều có phương án tối ưu và giá trị hàm mục tiêu đối với hai phương án tối ưu là bằng nhau. - Một trong hai bài toán không có phương án, còn bài toán kia thì có phương án, khi đó bài toán có phương án không có phương án tối ưu. 3- Các định lý về sự đối ngẫu a- Định lý 1 ( đối ngẫu yếu ) Xét hai bài toán đối ngẫu : T ⎧max z(x) = c T x ⎧min w(y) = b y ⎪ ⎪ ⎪ ⎪ T (P) ⎨Ax = b (D) ⎨A y ≥ c ⎪ ⎪ x ≥ 0 y tùy ý ⎩⎪ ⎩⎪ Nếu x là phương án của bài toán (P) y là phương án của bài toán (D) thì z(x) ≤ w(y) nghĩa là giá trị hàm mục tiêu của bài toán max không vượt quá giá trị hàm mục tiêu của bài toán đối ngẫu min trên các phương án bất kỳ của mỗi bài toán . Chứng minh 75
  72. BÀI TOÁN ĐỐI NGẪU x là phương án của (P) nên : Ax = b T T ⇒ y Ax = y b = b T y = w(y) y là phương án của (D) nên : A T y ≥ c T ⇒ y A ≥ c T T ⇒ y Ax ≥ c T x = z(x) Vậy z(x) ≤ w(y) Định lý này được phát biểu và chứng minh cho hai bài toán đối ngẫu trong trường hợp tổng quát . b- Định lý 2 Xét hai bài toán đối ngẫu : T ⎧max z(x) = c T x ⎧min w(y) = b y ⎪ ⎪ ⎪ ⎪ T (P) ⎨Ax = b (D) ⎨A y ≥ c ⎪ ⎪ x ≥ 0 y tùy ý ⎩⎪ ⎩⎪ x là phương án khả thi của bài toán (P) y là phương án khả thi của bài toán (D) Nếu z(x) = w(y) thì x , y lần lượt là phương án tối ưu tương ứng của (P và (D). Chúng minh - Nếu x không là phương án tối ưu của bài toán (P) thì tồn tại một phương án x sao cho : z(x) < z(x) ⇒ w(y) < z(x) : điều này mâu thuẩn với định lý 1. - Nếu y không là phương án tối ưu của bài toán (D) thì tồn tại một phương án y sao cho : w(y) < w(y) ⇒ w(y) < z(x) : điều này mâu thuẩn với định lý 1. Vậy x và y lần lượt là phương án tối ưu của (P) và (D). 76
  73. BÀI TOÁN ĐỐI NGẪU c- Định lý 3 Xét hai bài toán đối ngẫu : T ⎧max z(x) = c T x ⎧min w(y) = b y ⎪ ⎪ ⎪ ⎪ T (P) ⎨Ax = b (D) ⎨A y ≥ c ⎪ ⎪ x ≥ 0 y tùy ý ⎩⎪ ⎩⎪ Nếu x* là phương án tối ưu của bài toán (P) đối với cơ sở B thì phương án tối ưu y* của bài toán (D) được tính bởi công thức : T T −1 ()y * = cB B Chứng minh Do x* là phương án tối ưu của (P) với cơ sở B nên thoả dấu hiệu tối ưu T T −1 c − cB .B A ≤ 0 T −1 T ⇒ cB .B A ≥ c ⇒ ()y * T A ≥ c T ⇒ y* là một phương án của (D) Mặt khác x* được tính bởi công thức : * −1 ⎡x B = B b⎤ x * = ⎢ ⎥ ⎢ * ⎥ ⎣x N = 0 ⎦ và giá trị mục tiêu tối ưu của (P) là : T T * z(x*) = c x* = cB xB Ta có : w(y * ) = b T y* = b T (c TB −1 ) T = (c TB −1 )b B B T -1 T * T * * = c B (B b) = c B x B = c B x B = z(x ) Theo định lý 2 thì y* là phương án tối ưu của (D). Định lý này cho phép tìm phương án tối ưu của bài toán quy hoạch tuyến tính đối ngẫu từ bài toán gốc. Trong đó : T - cB được xác định trong bảng đơn hình tối ưu của (P). - B-1 gồm m cột tương ứng với m cột của ma trận cơ sở ban đầu lấy từ bảng đơn hình tối ưu của bài toán gốc. 77
  74. BÀI TOÁN ĐỐI NGẪU d- Định lý 4 ( sự đối ngẫu) Xét hai bài toán đối ngẫu T ⎧max z(x) = c T x ⎧min w(y) = b y ⎪ ⎪ ⎪ ⎪ T (P) ⎨Ax = b (D) ⎨A y ≥ c ⎪ ⎪ ⎪x ≥ 0 ⎪y tùy ý ⎩ ⎩ - Nếu (P) và (D) đều có phương án khả thi thì chúng có phương án tối ưu và giá trị của hàm mục tiêu tương ứng là bằng nhau. - Nếu một trong hai bài toán có phương án tối ưu không giới nội thì bài toán còn lại không có phương án khả thi. Chứng minh - Đây là kết quả của định lý 3 . - Giả sử rằng phương án tối ưu của (D) không giới nội, tức là tồn tại một phương án khả thi y của (D) sao cho w(y)= bTy nhỏ tuỳ ý. Điều này cũng có nghĩa là : với mọi M>0 lớn tuỳ ý luôn tìm được một phương án khả thi y của (D) sao cho : b T y ≤ − M Nếu (P) có phương án khả thi là x thì theo định lý 1 ta có : z(x) = c T x ≤ w(y) = b T y < − M Điều này dẫn đến mâu thuẩn e- Định lý 5 (tính bổ sung ) Xét hai bài toán đối ngẫu T ⎧max z(x) = c T x ⎧min w(y) = b y ⎪ ⎪ ⎪ ⎪ T (P) ⎨Ax = b (D) ⎨A y ≥ c ⎪ ⎪ ⎪x ≥ 0 ⎪y tùy ý ⎩ ⎩ x , y là phương án khả thi tương ứng của (P) và (D). Điều kiện cần và đủ để x , y cũng là phương án tối ưu là : T x (A T y − c T ) = 0 Chứng minh - Do x là phương án khả thi của (P) nên : 78
  75. BÀI TOÁN ĐỐI NGẪU Ax = b ⇒ (Ax) T = b T T ⇒ x A T = b T T ⇒ x A T y = b T y T T ⇒ x A T y − x c = b T y - c T x ( x T c = c T x) T ⇒ x (A T y − c) = b T y - c T x (*) - Theo kết quả (*) : . Nếu x , y là phương án tối ưu của (P) và (D) thì theo định lý 4 c T x = b T y ⇒ c T x − b T y = 0 T ⇒ x (A T y − c) = 0 T . Nếu x (A T y − c) = 0 ⇒ b T y − c T x = 0 ⇒ b T y = c T x Theo định lý 2 thì x , y là phương án tối ưu . II- GIẢI THUẬT ĐỐI NGẪU Xét hai bài toán đối ngẫu : max z(x) = c T x min w(y) = b T y (P) ⎧Ax = b và (D) ⎧A T y ≥ c ⎨ ⎨ ⎩x ≥ 0 ⎩y tuy y Chúng ta sẽ xét xem giải thuật đơn hình cơ bản đã biết trong chương trước được áp dụng như thế nào đối với bài toán đối ngẫu. Giả sử rằng B là một cơ sở của bài toán (P) thoả : T −1 T y = cB B và N y ≥ cN Nếu B cũng là một cơ sở khả thi của bài toán gốc, tức là ⎡x = B −1b = b ≥ 0⎤ x = ⎢ B ⎥ , thì (theo định lý đối ngẫu) y, x lần lượt là phương án tối ⎣⎢x N = 0 ⎦⎥ ⎡x B ⎤ ưu của bài toán đối ngẫu và bài toán gốc. Nếu không thì x = ⎢ ⎥ không là phương ⎣x N ⎦ −1 án của bài toán gốc vì xB = b = B b không thể ≥ 0. Để tiện việc trình bày ta xét (m=3 , n=5) : 79
  76. BÀI TOÁN ĐỐI NGẪU max z(x) = c1 x1 + c 2 x 2 + c 3 x 3 + c 4 x 4 + c 5 x 5 ⎧a11 x1 + a12 x 2 + a13 x 3 + a14 x 4 + a15 x 5 = b1 ⎪ (P) ⎨a21 x1 + a22 x 2 + a23 x 3 + a24 x 4 + a25 x 5 = b2 ⎪ ⎩a31 x1 + a32 x 2 + a33 x 3 + a34 x 4 + a35 x 5 = b3 x1 , x 2 , x 3 , x 4 , x 5 ≥ 0 Các dữ liệu của (P) đuợc trình bày trong bảng sau : x1 x2 x3 x4 x5 c1 c2 c3 c4 c5 a11 a12 a13 a14 a15 b1 a21 a22 a23 a24 a25 b2 a31 a32 a33 a34 a35 b3 và bài toán đối ngẫu min w(y) = b1 y1 + b2 y 2 + b3 y 3 ⎧a11 y1 + a21 y 2 + a31 y 3 ≥ c1 ⎪ ⎪a12 y1 + a22 y 2 + a32 y 3 ≥ c 2 ⎪ ⎪ (D) ⎨a13 y1 + a23 y 2 + a33 y 3 ≥ c 3 ⎪ ⎪a14 y1 + a24 y 2 + a34 y 4 ≥ c 4 ⎪ ⎪ ⎩a15 y1 + a25 y 2 + a35 y 3 ≥ c 5 y1 , y 2 , y 3 tuy y Người ta đưa (D) về dạng chính tắc bằng cách thêm các biến phụ y4 y5, y6, y7, y8 ≥ 0. Chúng không ảnh hưởng đến hàm mục tiêu. min w(y) = b1 y1 + b2 y 2 + b3 y 3 + 0.y 4 + 0.y 5 + 0.y 6 + 0.y 7 + 0.y 8 ⎧a11 y1 + a21 y 2 + a31 y 3 − y 4 = c1 ⎪ ⎪a12 y1 + a22 y 2 + a32 y 3 − y 5 = c 2 ⎪ ⎪ ⎨a13 y1 + a23 y 2 + a33 y 3 − y 6 = c 3 ⎪ ⎪a14 y1 + a24 y 2 + a34 y 4 − y 7 = c 4 ⎪ ⎪ ⎩a15 y1 + a25 y 2 + a35 y 3 − y 8 = c 5 y1 , y 2 , y 3 tuy y - y 4 , y 5 , y 6 , y 7 , y 8 ≥ 0 Các dữ liệu của (D) được trình bày trong bảng sau : 80
  77. BÀI TOÁN ĐỐI NGẪU y1 y2 y3 y4 y5 y6 y7 y8 b1 b2 b3 0 0 0 0 0 a11 a21 a31 -1 0 0 0 0 c1 a12 a22 a32 0 -1 0 0 0 c2 a13 a23 a33 0 0 -1 0 0 c3 a14 a24 a34 0 0 0 -1 0 c4 a15 a25 a35 0 0 0 0 -1 c5 Giả sử rằng m cột đầu tiên của A là một cơ sở B của (P) thì hai bảng trên được trình bày rút gọn như sau : T T xB xN T T cB cN B N b Bảng (P) T y y4 y8 bT 0 T B -Im 0 cB T N 0 -In-m cN Bảng (D) Để đưa bài toán đối ngẫu về dạng chuẩn người ta nhân (bên trái) bảng (D) với bảng sau đây : T ( B −1 ) 0 −1 T ( B N) -In-m Khi đó người ta được bảng kết quả có dạng : 81
  78. BÀI TOÁN ĐỐI NGẪU m m n-m T y y4y5y6 y7y8 0 b = B −1b 0 −1 T T −1 T m Im − () B 0 (cB B ) T n-m 0 −1 T I T T −1 T − ()N = −(B N) n-m − cN = −(cN − cB B N) Bảng này cho ta một quy hoạch tuyến tính dạng chuẩn với ma trận đơn vị (cơ sở) tương ứng với các cột y1 y2 y3 y7 y8 . Áp dụng giải thuật đơn hình cơ bản vào kết quả này cho ta quy tắc đổi cơ sở như sau : Tính : b = B −1b ≥ 0 a- Nếu b ≥ 0 thì giải thuật kết thúc, khi đó : T −1 y = cB B là phương án tối ưu của bài toán đối ngẫu . ⎡x B ⎤ ⎡b⎤ x = ⎢ ⎥ = ⎢ ⎥ là phương án tối ưu của bài toán gốc . ⎣x N ⎦ ⎣0⎦ b- Nếu tồn tại r sao cho br ∈ b , br 0 thì phương án tối ưu của bài toán đối ngẫu là không giới nội, điều này (theo định lý đối ngẫu) dẫn đến bài toán gốc không có phương án. Ví dụ : Xét bài toán 82
  79. BÀI TOÁN ĐỐI NGẪU min w(x) = x1 − x 3 ⎧x1 − 2x 2 + x 3 = 1 ⎨ (D) ⎩x1 + 3x 2 + x 4 = 2 x j ≥ 0 (j = 1,2,3,4) Bài toán đối ngẫu của (D) là : max z(y) = y1 + 2y 2 ⎧y1 + y 2 ≤ 1 ⎪ ⎪− 2y1 + 3y 2 ≤ 0 (P) ⎨ ⎪y1 ≤ −1 ⎪ ⎩y 2 ≤ 0 y1, y2 là tùy ý Ta có thể chọn bài toán (D) hoặc (P) để giải tìm phương án tối ưu bằng phương pháp đơn hình, từ đó suy ra phương án tối ưu của bài toán còn lại theo kết quả trên. Trong ví dụ này ta chọn bài toán (D) để giải vì có chứa sẵn ma trận đơn vị. Giải bài toán (D) bằng phương pháp đơn hình cải tiến ta được : c i x B0 B0 x1 x 2 3 x 4 b0 -1 3 1 -2 1 0 1 0 4 1 3 0 1 2 c T 1 0 -1 0 w(x0) T c 0 2 -2 0 0 -1 c i x B1 B1 x1 x 2 3 x 4 b1 5 2 7 -1 3 0 1 3 3 3 1 1 2 0 2 1 0 3 3 3 c T 1 0 -1 0 w(x1) T 8 2 7 c1 0 0 − 3 3 3 Giải thuật dừng vì thoả dấu hiệu tối ưu của bài toán min. Phương án tối ưu của bài toán (D) là : ⎧ 2 7 x = 0 x = x = x = 0 ⎪ 1 2 3 3 3 4 ⎨ 7 ⎪w(x) = w(x1 ) = − ⎩⎪ 3 83
  80. BÀI TOÁN ĐỐI NGẪU Suy ra phương án tối ưu của (P) là : ⎧ ⎡ 2⎤ ⎪ ⎢1 ⎥ T T −1 3 ⎡ 2⎤ ⎪y = []y1 y 2 = c B B = [− 1 0] ⎢ ⎥ = ⎢− 1 − ⎥ ⎪ 1 ⎣ 3⎦ ⎪ ⎢0 ⎥ ⎨ ⎣ 3⎦ ⎪ ⎡ − 1⎤ ⎪ T 7 ⎪z(y) = b y = []1 2 ⎢ 2⎥ = − ⎢− ⎥ 3 ⎩⎪ ⎣ 3⎦ 84
  81. BÀI TOÁN ĐỐI NGẪU CÂU HỎI CHƯƠNG 3 1- Bạn hiểu như thế nào về khái niệm đối ngẫu ? 2- Quy hoạch tuyến tính đối ngẫu của một quy hoach tuyến tính chính tắc có dạng như thế nào ? 3- Bạn hãy nêu ra các quy tắc đối ngẫu. Cho ví dụ . 4- Giá trị hàm mục tiêu của hai quy hoạch tuyến tính đối ngẫu thì như thế nào ? . Chứng minh 85
  82. BÀI TOÁN ĐỐI NGẪU BÀI TẬP CHƯƠNG 3 1- Xét bài toán quy hoạch tuyến tính max z = 7x1 + 5x2 2x1 + 3x2 ≤ 19 (P) 2x1 + x2 ≤ 13 3x2 ≤ 15 3x1 ≤ 18 x1 , x2 ≥ 0 a- Tìm bài toán đối ngẫu (D) từ bài toán (P) b- Tìm phương án tối ưu cho bài toán (P) c- Từ bảng đơn hình tối ưu của (P). Hãy tìm phương án tối ưu cho bài toán (D) 2- Xét bài toán quy hoạch tuyến tính min w= x1 + x2 x1 - 2x3 + x4 = 2 (D) x2 - x3 + 2x4 = 1 x3 - x4 + x5 = 5 xi ≥ 0, ∀i = 1→5 a- Tìm bài toán đối ngẫu của bài toán (D) b- Tìm phương án tối ưu của bài toán (D) c- Từ bảng đơn hình tối ưu của bài toán (D). Hãy tìm phương án tối ưu cho bài toán đối ngẫu ở câu a. 3- Xét bài toán quy hoạch tuyến tính min w = -2x1 - x4 x1 + x2 + 5x3 = 20 (D) x2 + 2x4 ≥ 5 x1 + x2 - x3 ≥ 8 xi tùy ý (i=1→ 4) Tìm bài toán đối ngẫu (P) của bài toán (D). Từ bài toán (P) hãy chỉ ra rằng (P) không tồn tại phương án tối ưu do đó (D) cũng tồn tại phương án tối ưu. 4- Cho bài toán quy hoạch tuyến tính 86
  83. BÀI TOÁN ĐỐI NGẪU max z = 2x1 + 4x 2 + x 3 + x 4 ⎧x1 + 3x 2 + x 4 ≤ 1 ⎪ ⎪− 5x − 2x ≤ 3 (D) ⎪ 2 4 ⎨ ⎪4x 2 + 4x 3 + x 4 ≤ 3 ⎪ ⎩⎪x j ≥ 0 (j = 1 → 4) 1- Tìm bài toán đối ngẫu của bài toán đã cho. 2- Giải bài toán đã cho rồi suy ra kết quả của bài toán đối ngẫu. 5- Cho bài toán quy hoạch tuyến tính max z = 27x1 + 50x 2 + 18x 3 ⎧x1 + 2x 2 + x 3 ≤ 2 ⎪ (D) ⎪ 2x x 2x 4 ⎪− 1 + 2 − 3 ≤ ⎨ ⎪x1 + 2x 2 − 4x 3 ≤ −2 ⎪ ⎩⎪x1, x 2 tuú ý, x 3 ≤ 0 a- Tìm bài toán đối ngẫu của bài toán đã cho. b- Giải bài toán đối ngẫu rồi suy ra kết quả của bài toán đã cho. 87
  84. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH CHƯƠNG IV ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH Chương này trình bày các bài toán để thấy khả năng ứng dụng rộng rãi của quy hoạch tuyến tính. Bài toán trò chơi được trình bày một cách chi tiết, các bày toán còn lại chỉ trình bày mô hình. Việc giải các bài toán này được nghiên cứu thêm trong các môn tiếp theo. Nội dung chi tiết của chương này bao gồm : I- MỞ ĐẦU II- BÀI TOÁN TRÒ CHƠI 1- Trò chơi có nghiệm ổn định 2- Trò chơi không có nghiệm ổn định III- BÀI TOÁN VẬN TẢI 1- Mở đầu 2- Các khái niệm cơ bản 3- Bài toán vận tải cân bằng thu phát 4- Các bài toán được đưa về bài toán vận tải IV- BÀI TOÁN DÒNG TRÊN MẠNG 1- Mở đầu 2- Phát biểu bài toán dòng trên mạng V- QUY HOẠCH NGUYÊN 1- Mở đầu 2- Bài toán quy hoạch nguyên trong thực tế CHƯƠNG IV 88
  85. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH Trong chương này, chúng ta sẽ tìm hiểu sơ lược một số khái niệm và phương pháp cơ bản trong lý thuyết trò và một số bài toán thực tế mà người ta sẽ đưa về bài toán quy hoạch tuyến tính để giải . I- MỞ ĐẦU Trong thực tế hay gặp tình huống là phải chọn một quyết định (bấp bênh) do phải đối mặt với một đối thủ thông minh và có quyền lợi đối lập với ta : ví dụ trong các trò chơi tranh chấp, trong quân sự, trong vận động tranh cử Nghiên cứu việc chọn quyết định trong những trường hợp đối kháng này có tên gọi là lý thuyết trò chơi. Ở đây người chọn quyết định và đối thủ đều được gọi là người chơi. Mỗi người chơi có một tập hợp các hành động để lựa chọn được gọi là chiến lược. Chúng ta xét một trường hợp đơn giản là trò chơi hai người : phần thưởng sẽ là cái được của một người và chính là cái mất của người kia. Giải một trò chơi nghĩa là tìm chiến lược tốt nhất cho mỗi người chơi. Hai người chơi thường được ký hiệu là A và B, chiến lược tương ứng của mỗi người được ký hiệu là : A : i (i=1→m) B : j (j=1→n) Giải thưởng ứng với chiến lược (i,j) của hai người được ký hiệu là aij và được viết thành một bảng như sau : B 1 2 n A 1 a11 a12 a1n 2 a21 a22 a2n m am1 am2 amn Ví dụ : ← 1234 B 89
  86. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH 1 1 0 -2 1 A 2 2 2 1 0 → 3 -1 -1 0 3 Ðối với A : - Nếu A đi nước 1 (dòng 1) thì A sẽ : . Thắng 1 điểm nếu B đi nước 1 (thắng) . Thắng 0 điểm nếu B đi nước 2 (hoà) . Thắng -2 điểm nếu B đi nước 3 (thua) . Thắng 1 điểm nếu B đi nước 4 (thắng) Những trường hợp còn lại là tương tự . Ðối với B : - Nếu B đi nước 2 (cột 2) thì B sẽ : . Thua 0 điểm nếu A đi nước 1 . Thua 2 điểm nếu A đi nước 2 . Thua -1 điểm nếu A đi nước 3 Những trường hợp còn lại là tương tự . Nghiệm tối ưu của trò chơi, có khi gọi tắt là nghiệm, là bộ chiến lược (i*,j*) có tính chất là nếu một người lấy chiến lược khác còn người kia vẫn giữ nguyên thì phần thưởng cho người đi khác sẽ bị thiệt hại. Giải trò chơi có nghĩa là tìm nghiệm tối ưu. II- BÀI TOÁN TRÒ CHƠI 1- Trò chơi có nghiệm ổn định Hai nhà chính trị A và B vận động tranh cử 1 ghế ở nghị viện trong 2 ngày cuối quan trọng nhất ở hai thành phố P và Q. Mỗi người phải đặt kế hoạch vận động mà không biết được kế hoạch của đối phương. Các cố vấn đưa ra 3 chiến lược : - Ở mỗi thành phố một ngày - Ở cả 2 ngày ở thành phố P - Ở cả 2 ngày ở thành phố Q và đánh giá kết quả vận động tương ứng như sau : 123← 90
  87. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH B 1 1 2 4 A 2 1 0 5 → 3 0 1 -1 Dữ liệu là tổng số phiếu, tính theo đơn vị là ngàn, mà A sẽ dành được từ B hay ngược lại . Đây là một trường hợp đơn giản mà người ta có thể giải được bằng khái niệm chiến lược bị trội hơn như sau : - Đối với A thì chiến lược 3 bị trội hơn bởi chiến lược 1 và 2 vì nó mang đến cho A số điểm thắng ít, nên dù B có chọn chiến lược nào thì A cũng vẫn chọn chiến luợc 1 hoặc 2 mà bỏ chiến lược 3 . Ta có : ← 123 B 1 1 2 4 A 2 1 0 5 → 3 0 1 -1 - Đối với B thì chiến lược 3 bị trội hơn bởi chiến lược 1 và 2 vì nó mang đến cho B số điểm thua nhiều nên B bỏ chiến lược 3. Ta có : ← 123 B 11 2 4 A 21 0 5 → 3 0 1 -1 - Đối với A thì chiến lược 2 bị trội hơn bởi chiến lược 1 vì vậy A bỏ chiến lược 2. Ta có : ← 123 B 91
  88. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH 11 2 4 A 2 1 0 5 → 3 0 1 -1 - Đối với B thì chiến lược 2 bị trội hơn bởi chiến lược 1 vì vậy B bỏ chiến lược 2. Ta có : ← 1 2 3 B 11 2 4 A 2 1 0 5 → 3 0 1 -1 Cuối cùng thì bộ chiến lược (1,1) là nghiệm tối ưu của trò chơi với kết quả là người A thu thêm được 1 (ngàn) phiếu từ người B. Trong nhiều trường hợp, khi dùng chiến lược bị trội hơn chỉ mới giảm được cở của bài toán mà chưa giải quyết xong vấn đề đặt ra. Chiến lược MaxiMin và MiniMax Xét ví dụ tương tự như ví dụ trên nhưng bảng kết quả vận động được các cố vấn đánh giá như sau : ← 123 B 1 -3 -2 6 A 2 1 0 2 → 3 5 -2 -4 Đây là trường hợp người chọn quyết định nghĩ là đối phương thông minh và cố ý chọn quyết định chống lại mình nên họ luôn nghĩ đến chiến lượt “ăn chắc” , đó là MaxiMin(A) và MiniMax(B) như sau : a- MaxiMin(A) A luôn xem B là đối thủ thông minh. Khi A đi nước i0 (dòng i0) thì B sẽ chọn nước đi j0 (cột j0) sao cho A thắng điểm ít nhất . Nghĩa là B đi vào ô : ai j = Min {ai j } 0 0 ∀j 0 92
  89. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH Trong tình huống đó A sẽ chọn nước đi sao cho A thắng nhiều điểm nhất. Chiến thuật của A là đi vào ô : g = a = MaxiMin (A) = max min { a } A iA jA { ij } i j A đi nước 1 thì B sẽ đi nước 1 : a11=-3 A đi nước 2 thì B sẽ đi nước 2 : a22=0 A đi nước 3 thì B sẽ đi nước 3 : a33=-4 ← 123 B 1 -3 -2 6 A 21 0 2 → 35 -2 -4 Vậy MaxiMin(A) = a22 = 0 b- MiniMax(B) B luôn xem A là đối thủ thông minh. Khi B đi nước j0 (cột j0) thì A sẽ chọn nước đi i0 (dòng i0) sao cho B thua điểm nhiều nhất . Nghĩa là A đi vào ô ai j = max { aij } 0 0 ∀i 0 Trong tình huống đó B sẽ chọn nước đi sao cho B thua ít điểm nhất. Chiến thuật của B là đi vào ô : gB = ai j = MiniMax (B) = min { max {aij} } B B j i ← 123 B 1 -3 -2 6 A 21 0 2 → 3 5 -2 -4 B đi nước 1 thì A sẽ đi nước 3 : a31=5 B đi nước 2 thì A sẽ đi nước 2 : a22=0 B đi nước 3 thì B sẽ đi nước 1 : a13=6 Vậy MiniMax(B) = a22= 0 Lần này ta thấy rằng : MaxiMin(A) = MiniMax(B) = a22= 0 93
  90. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH Bộ chiến lược (2,2) có giá trị là 0 là nghiệm tối ưu của trò chơi vì nếu người nào đi lệch và người kia đi đúng thì người đi đúng thu lợi nhiều hơn giá trị của trò chơi. Nghiệm tối ưu trong trường hợp này còn được gọi là nghiệm ổn định. 2- Trò chơi không có nghiệm không ổn định Xét ví dụ tương tự như trên với bảng kết quả được các chuyên gia đánh giá như sau : ← 123 B 10 -2 2 A 2 5 4 -3 → 3 2 3 -4 Khi A và B dùng chiến lược MaxiMin và MiniMax của mình thì cho kết quả như sau : MaxiMin(A) = a12 = -2 MiniMax(B) = a13 = 2 Vì MaxiMin(A) và MiniMax(B) là khác nhau nên trò chơi không có nghiệm ổn định. Ta xem điều gì có thể xảy ra ? - A tính rằng nếu B thực hiện đúng chiến lược của mình là chọn cột 3 thì A sẽ chọn chiến lược 1 để thắng 2 từ B (thay vì thắng -2) ← 123B 1 0 -2 2 A 2 5 4 -3 → 3 2 3 -4 - Lúc này B sẽ suy tính và thấy rằng phải chọn chiến lược 2 để thua -2 từ A (thay vì thua 2). 123← 94
  91. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH B 10 -2 2 A 25 4 -3 → 32 3 -4 - Đến lượt A cũng đủ thông minh để tính liền được 2 nước, biết được B sẽ chọn chiến lược 2 nên A sẽ dùng chiến lược 2 để thắng 4 từ B . ← 123 B 10 -2 2 A 2 5 4 -3 → 3 2 3 -4 - Nhưng B cũng tính được điều này nên sẽ quay lại chọn chiến lược 3 để thua - 3 từ A . ← 123 B 10 -2 2 A 25 4 -3 → 32 3 -4 - Cũng như B , A cũng sẽ tính được điều này nên sẽ quay lại chọn chiến lược 1 để thắng 2 từ B. ← 123 B 1 0 -2 2 A 2 5 4 -3 → 3 2 3 -4 Như vậy ta đã xoay đúng một vòng, và nếu cứ lập luận như vậy thì ta sẽ xoay vòng mãi. Những bộ chiến lược nhận được trong khi xoay vòng là những nghiệm không ổ định. Chiến lược hỗn hợp 95
  92. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH Để có được lời giải của trò chơi không có nghiệm ổn định người ta đưa ra khái niệm chiến lược hỗn hợp. Mỗi người chơi không chọn một chiến lược thuần túy như trước đây mà chọn một phân bố xác suất sử dụng tất cả các chiến lược. Xét trò chơi giữa A và B có ma trận điểm dương có dạng tổng quát : 1 2 n ← B 1 a11 a12 a1n A 2 a 21 a22 a2n → m am1 am2 amn Giả sử rằng : MaxiMin (A) = a = g iA jA A MiniMax (B) = a = g iB jB B a ≠ a iA jA iB jB Gọi : . pi > 0 (i=1→ m ) là tần suất nước đi thứ i của A với p1 + p2 + + pm = 1 . qj > 0 (j=1→ n ) là tần suất nước đi thứ j của B với q1 + q2 + + qn = 1 q1 q2 qn 1 2 n ← B p1 1 a11 a12 a1n A p2 2 a 21 a22 a2n → pm m am1 am2 a mn Vấn đề đặt ra là : 96
  93. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH -Tìm tần suất pi > 0 của nước đi thứ i (i =1→ m) của A sao cho đối với mỗi nước đi thứ j của B số điểm thắng trung bình của A không nhỏ thua gA : p1a1j + p2a2j + + pmamj (∀j = 1→ n) Cũng có nghĩa là tìm pi sao cho : p1a1j + p2a2j + + pmamj ≥ g1 ≥ gA (∀j = 1→ n) g1 → max - Tìm tần suất qj > 0 của nước đi thứ j (j =1→ n) của B sao cho đối với mỗi nước đi thứ i của A số điểm thua trung bình của B không lớn hơn gB : q1ai1 + q2ai2 + + qnain (∀i = 1→ m) Cũng có nghĩa là tìm các qj sao cho : q1ai1 + q2ai2 + + qnain ≤ g2 ≤ gB (∀i = 1→ m) g2 → min Khi đó hai bài toán quy hoạch tuyến tính thu được là : ⎧ ⎛ 1 ⎞ ⎜ ⎟ ⎪max g1 ⎜min ⎟ ⎪ ⎝ g1 ⎠ ⎪ ⎨p1 + p2 + + pm = 1 ⎪ ⎪p1a1j + p2a2 j + + pmamj ≥ g1 (j = 1 → n) ⎪ ⎩⎪pi > 0 (i = 1 → n) ⎧ ⎛ 1 ⎞ ⎜ ⎟ ⎪min g2 ⎜max ⎟ ⎪ ⎝ g2 ⎠ ⎪ ⎨q1 + q2 + + qn = 1 ⎪ ⎪q1 ai1 + q2 ai2 + + qn ain ≤ g2 (i = 1 → m) ⎪ ⎩⎪q j > 0 (j = 1 → m) Chia các ràng buộc của bài toán thứ nhất cho g1>0 và đặt : pi x i = (i = 1 → m) g1 Chia các ràng buộc của bài toán thứ hai cho g2>0 và đặt : 97
  94. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH q j y j = (j = 1 → n) g2 Khi đó hai bài toán quy hoạch tuyến tính trên trở thành : ⎧ 1 ⎪min = x1 + x 2 + + x m g1 ⎪ (D) ⎨a1j x1 + a2j x 2 + + amj x m ≥ 1 (j = 1 → n) ⎪ x 0 (i 1 m) ⎪ i > = → ⎩⎪ ⎧ 1 ⎪max = y1 + y 2 + + y 3 g2 ⎪ (P) ⎨ai1 y1 + ai2 y 2 + + ain y n ≤ 1 (i = 1 → m) ⎪y > 0 (j = 1 → m) ⎪ j ⎩⎪ Ðây là hai bài toán đối ngẫu . Chọn một trong hai để giải Ví dụ : Xét trò chơi giữa A và B có bảng điểm như sau : 123 ← B 1 -1 2 1 A 2 1 -2 2 → 3 3 4 -3 Theo chiến thuật của A và của B ta có : MaxiMin(A) = a11 MiniMax(B) = a23 Tăng đồng loạt các ô của bảng điểm lên 4 ta được : 123 ← B 1 3 6 5 A → 2 5 2 6 3 7 8 1 98
  95. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH Gọi pi ≥ 0 là tần suất nước đi thứ i của A (i=1→ 3) p1 + p2 + p3 = 1 qj ≥ 0 là tần suất nước đi thứ j của B (j=1→ 3) q1 + q2 + q3 =1 Thực hiện tương tự như trên ta được hai bài toán đối ngẫu như sau : q1 q2 q3 ← B p1 3 6 5 A p2 5 2 6 → p3 7 8 1 ⎧ 1 ⎧ 1 min w = = x + x + x max z = = y + y + y ⎪ g 1 2 3 ⎪ g 1 2 3 ⎪ 1 ⎪ 2 ⎪ ⎪ 3x 5x 7x 1 3y 6y 5y 1 ⎪ 1 + 2 + 3 ≥ ⎪ 1 + 2 + 3 ≤ ⎪ ⎪ (D) ⎨ 6x1 + 2x 2 + 8x 3 ≥ 1 (P) ⎨5y1 + 2y2 + 6y3 ≤ 1 ⎪ ⎪ ⎪ 5x1 + 6x 2 + x 3 ≥ 1 ⎪7y1 + 8y2 + y3 ≤ 1 ⎪ ⎪ ⎪ x > 0 , x > 0 , x > 0 ⎪y > 0 , y > 0 , y > 0 ⎪ 1 2 3 ⎪ 1 2 3 ⎩ ⎩ Ta chọn bài toán (P) để giải. Ðưa bài toán (P) về dạng chuẩn : ⎧ 1 max z = = y + y + y + 0.y + 0.y + 0.y ⎪ g 1 2 3 4 5 6 ⎪ 2 ⎪ 3y 6y 5y y 1 ⎪ 1 + 2 + 3 + 4 = ⎪ (P) ⎨5y1 + 2y 2 + 6y 3 + y 5 = 1 ⎪ ⎪7y1 + 8y 2 + y 3 + y 6 = 1 ⎪ ⎪y > 0 , y > 0 , y > 0, y > 0 , y > 0 , y > 0 ⎪ 1 2 3 4 5 6 ⎩ Dùng giải thuật đơn hình cải tiến : c i y y y y y y B0 B0 1 2 3 4 5 6 b 0 99
  96. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH 0 4 3 6 5 1 0 0 1 0 5 5 2 6 0 1 0 1 0 6 7 8 1 0 0 1 1 T c 1 1 1 0 0 0 z0 T 1 1 1 0 0 0 0 c 0 c i y y y y y y B1 B1 1 2 3 4 5 6 b1 18 32 3 4 0 4 0 1 0 − 7 7 7 7 26 37 5 2 0 5 0 − 0 1 − 7 7 7 7 8 1 1 1 1 1 1 0 0 7 7 7 7 T c 1 1 1 0 0 0 z1 T 1 6 1 1 c1 0 − 0 0 − 7 7 7 7 c i y y y y y y B2 B2 1 2 3 4 5 6 b2 214 32 7 12 0 4 0 0 1 − 37 37 37 37 26 7 5 2 1 3 0 − 1 0 − 37 37 37 37 46 1 6 5 1 1 1 0 0 − 37 37 37 37 T c 1 1 1 0 0 0 z2 T 17 6 1 7 c 2 0 0 0 − − 37 37 37 37 c i y y y y y y B3 B3 1 2 3 4 5 6 b 3 37 16 7 6 1 2 0 1 0 − 214 107 214 107 13 9 12 10 1 3 0 0 1 − 107 107 107 107 23 17 13 7 1 1 1 0 0 − 107 107 107 107 T c 1 1 1 0 0 0 z3 100
  97. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH T 17 10 9 23 c 3 0 0 0 − − − 214 107 214 107 Phương án tối ưu của bài toán (P) là : ⎧ 1 23 ⎪ = ⎧ 107 g 107 g2 = ⎪ 2 ⎪ 23 ⎪ ⎪ q ⎪ ⎪ 1 7 7 y1 = = ⎪q = ⎪ g 107 1 ⎪ 2 ⎪ 23 ⎨ suy ra ⎨ ⎪ q 6 ⎪ 6 y = 2 = q = ⎪ 2 g 107 ⎪ 2 23 ⎪ 2 ⎪ ⎪ ⎪ 10 q3 10 ⎪y = = ⎪q3 = 3 ⎩ 23 ⎩⎪ g2 107 Phương án tối ưu của bài toán đối ngẫu (D) được tính bằng công thức sau : ⎡ 37 16 7 ⎤ − ⎢ 214 107 214 ⎥ ⎢ ⎥ T T −1 13 9 12 x = []x1 x 2 x 3 = cB B = [ 1 1 1] ⎢ − ⎥ ⎢ 107 107 107⎥ ⎢ 23 17 13 ⎥ ⎢− ⎥ ⎣ 107 107 107 ⎦ ⎡ 17 10 9 ⎤ = ⎢ ⎥ ⎣214 107 214⎦ ⎡ 17 ⎤ ⎢214⎥ 1 ⎢ 10 ⎥ 23 w = = b T x = []1 1 1 ⎢ ⎥ = g1 ⎢107 ⎥ 107 ⎢ 9 ⎥ ⎢ ⎥ ⎣214⎦ Ta có : 101
  98. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH ⎧ 1 23 ⎪w = = ⎧ 107 g 107 g1 = ⎪ 1 ⎪ 23 ⎪ ⎪ p ⎪ ⎪ 1 17 17 x1 = = ⎪p = ⎪ g 214 1 ⎪ 1 ⎪ 46 ⎨ suy ra ⎨ ⎪ p 10 ⎪ 10 x = 2 = p = ⎪ 2 g 107 ⎪ 2 23 ⎪ 1 ⎪ ⎪ ⎪ 9 p3 9 ⎪x = = ⎪p3 = 3 ⎩ 46 ⎩⎪ g1 214 III- BÀI TOÁN VẬN TẢI 1- Mở đầu Bài toán vận tải là bài toán quan trọng nhất trong các bài toán quy hoạch tuyến tính. Người ta tổng kết rằng 85% các bài toán quy hoạch tuyến tính gặp trong ứng dụng là bài toán vận tải hoặc mở rộng của nó. Thuật ngữ bài toán vận tải thường được hiểu là bài toán vận chuyển sao cho cước phí nhỏ nhất. 2- Các khái niệm cơ bản Bài toán vận tải được mô tả như là một bài toán về dòng dữ liệu gồm tập hợp các nút N được chia thành hai phần rời nhau : các nút nguồn S và các nút đích D, tức là : ⎧N = S ∪ D ⎨ ⎩S ∩ D = ∅ và mỗi cung (i,j) trong tập các cung A đều có gốc trong S và có ngọn trong D. S:Các nút nguồn D:Các nút đích Các nút thuộc S được gọi là các nút nguồn (cung), các nút thuộc D được gọi là các nút đích (cầu). Một cách tổng quát, bài toán vận tải trình bày được bằng đồ thị. Ở bài toán vận tải đôi khi còn có thêm giả thiết nữa là mỗi nút nguồn đều có cung nối với mọi nút đích. Ở đây ta chỉ đề cập đến bài toán vận tải có thêm giả thiết này và sẽ gọi tắt là bài toán vận tải. 102
  99. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH Đối với bài toán vận tải người ta thường ký hiệu si ∈ S là nguồn phát ở nút i(i=1→m) dj ∈ D là nhu cầu thu của nút j (j=1→n) Trong trường hợp các nguồn phát không chuyển hết sang các nút cầu vì đã đủ nhu cầu thì bài toán vận tải được gọi là bài toán vận tải mở. Có thể đưa một bài toán vận tải mở về một bài toán vận tải (đóng) bằng cách thêm vào một nút cầu giả thứ (n+1) với nhu cầu được xác định như sau : m n dn+1 = ∑ s i − ∑ d j i=1 j=1 3- Bài toán vận tải cân bằng thu phát a- Thiết lập bài toán Có m nơi A1, A2, ,Am cung cấp một loại hàng với khối lượng tương ứng là a1, a2, ,am. Hàng được cung cấp cho n nơi B1, B2, , Bn với khối lượng tiêu thụ tương ứng là b1, b2, ,bn. Cước phí chuyên chở một đơn vị hàng từ điểm phát Ai đến điểm thu Bj là cij . Hãy lập kế hoạch vận chuyển từ mỗi điểm phát đến mỗi điểm thu bao nhiêu hàng để : - Các điểm phát đều phát hết hàng - Các điểm thu đều nhận đủ hàng - Tổng cước phí phải trả là ít nhất Gọi xij là lượng hàng chuyển từ điểm phát Ai đến điểm thu Bj , xij ≥ 0 . Vì tổng lượng hàng phát đi từ mỗi điểm phát Ai đến mọi điểm thu Bj bằng lượng hàng phát từ Ai nên : x i1 + x i2 + + x in = ai (i = 1,2, ,m) Vì tổng lượng hàng thu được tại mỗi điểm thu Bj từ mọi điểm phát Ai bằng lượng hàng cần thu tại Bj nên : x1j + x 2j + + x mj = b ji (j = 1,2, , n) Để tổng cước phí là ít nhất cần phải có : min z(x) = ∑∑c ij x ij ij Với các phân tích trên ta có mô hình của bài toán như sau : 103
  100. ỨNG DỤNG QUY HOẠCH TUYẾN TÍNH n n min z(x) = ∑∑c ij x ij (1) i==1 j 1 ⎧ n ⎪∑ x ij = ai (i = 1,2, ,m) ⎪ j=1 (2) ⎨ m ⎪ x = b (j = 1,2, ,n) ⎪∑ ij j ⎩ i=1 x ij ≥ 0 (3) Phương án - Phương án tối ưu Một ma trận X=[xij]m.n thỏa (2) và (3) được gọi là phương án, thỏa thêm (1) được gọi là phương án tối ưu. b- Dạng bảng của bài toán vận tải Có thể giải bài toán vận tải theo cách của quy hoạch tuyến tính. Tuy nhiên do tính chất đặc biệt của bài toán vận tải nên người ta nghĩ ra một thuật toán hiệu quả hơn. Trước tiên người ta trình bày bài toán vận tải dưới dạng bảng như sau : Thu b1 b2 bj bn Cước Phát a1 c11 c12 c1j c1n x11 x12 x1j x1n a2 c21 c22 c2j c2n x21 x22 x2j x2n ai ci1 ci2 cij cin xi1 xi2 xij xin am cm1 cm2 cmj cmn xm1 xm2 xmj xmn Trong bảng mỗi hàng mô tả một điểm phát, mỗi cột mô tả một điểm thu, mỗi ô mô tả một tuyến đường đi từ một điểm phát tới một điểm thu. Dây chuyền - Chu trình Một dãy các ô của bảng mà hai ô liên tiếp nằm trong cùng một hàng hoặc một cột, ba ô liên tiếp không cùng nằm trên một hàng hoặc một cột được gọi là một dây chuyền. Ta thấy rằng hai ô liền nhau trong một dây chuyền có chỉ số hàng hoặc chỉ số cột bằng nhau 104