MathLabs

Toán ứng dụng và Tính toán

Quy hoạch tuyến tính

Tối ưu một hàm mục tiêu tuyến tính chịu ràng buộc tuyến tính, giải hiệu quả bằng phương pháp đơn hình.

Trực giácVắt ra lợi nhuận lớn nhất từ nguồn lực có hạn

Hãy tưởng tượng một nhà máy nhỏ sản xuất hai sản phẩm dùng chung thời gian máy và nguyên liệu thô. Mỗi sản phẩm mang lại lợi nhuận khác nhau trên mỗi đơn vị, và mỗi ràng buộc — giờ máy, nguyên liệu, không gian lưu kho — giới hạn số lượng có thể sản xuất. Quy hoạch tuyến tính đặt câu hỏi: nên sản xuất bao nhiêu mỗi sản phẩm để tối đa hóa tổng lợi nhuận mà không phá vỡ ràng buộc nào? Vì hàm lợi nhuận và mọi ràng buộc đều là đường thẳng (hay siêu phẳng phẳng trong không gian nhiều chiều), tập các phương án sản xuất khả thi tạo thành một khối đa diện lồi, và phương án tốt nhất luôn nằm ở một trong các đỉnh của nó.

Khối đa diện 3D tương tác có thể bung ra để lộ các đỉnh, cạnh và mặt, tượng trưng cho miền khả thi của một bài toán quy hoạch tuyến tính.
Bung một khối đa diện ra thành các đỉnh của nó: với một bài toán quy hoạch tuyến tính, miền khả thi chính là một khối đa diện như vậy, và định lý cơ bản của quy hoạch tuyến tính đảm bảo nghiệm tối ưu nằm ở một trong các đỉnh này.

Phổ thôngDạng chuẩn

Định nghĩa: Dạng chuẩn của bài toán quy hoạch tuyến tính

Một bài toán quy hoạch tuyến tính ở dạng chuẩn chọn một vectơ biến quyết định xx để tối đa hóa một hàm mục tiêu tuyến tính cTxc^{\mathsf{T}}x, chịu các ràng buộc bất đẳng thức tuyến tính Ax≤bAx\le b và điều kiện không âm x≥0x\ge 0. Ở đây cc là vectơ lợi nhuận trên mỗi đơn vị, AA là ma trận hệ số sử dụng nguồn lực, và bb là vectơ giới hạn nguồn lực.

max⁡x  cTxsubject toAx≤b,  x≥0\max_{x} \; c^{\mathsf{T}} x \quad \text{subject to} \quad Ax \le b, \; x \ge 0

Mỗi dòng của Ax≤bAx\le b tượng trưng cho một nguồn lực có hạn: vế trái là lượng nguồn lực đó mà một phương án sản xuất xx tiêu thụ, còn vế phải bb là lượng sẵn có. Thêm một biến bù s≥0s\ge 0 cho mỗi dòng biến mọi bất đẳng thức thành đẳng thức, Ax+s=bAx+s=b, đây chính là dạng mà phương pháp đơn hình thực sự làm việc.

Ax+s=b,s≥0Ax + s = b, \qquad s \ge 0
So sánh các phương pháp giải bài toán quy hoạch tuyến tính
Phương phápCách tìm kiếmMở rộng tới bao nhiêu biến?Độ phức tạp trường hợp xấu nhất
Phương pháp đồ thịVẽ đa giác khả thi và trượt đường mục tiêu qua nóChỉ 2 biến (3 biến nếu vẽ 3D)Không áp dụng (phương pháp trực quan)
Phương pháp đơn hìnhDi chuyển từ đỉnh sang đỉnh kề, luôn cải thiện hàm mục tiêuHàng trăm đến hàng nghìn biến trong thực tếVề lý thuyết là mũ, nhưng nhanh trong thực tế
Phương pháp điểm trongDi chuyển qua phần trong của khối đa diện tiến về điểm tối ưuBài toán rất lớn (hàng triệu biến)Thời gian đa thức

Đại họcĐịnh lý cơ bản và phương pháp đơn hình

Cho miền khả thi P={x:Ax≤b,x≥0}P=\{x : Ax\le b, x\ge 0\} khác rỗng và bị chặn. Nếu bài toán quy hoạch tuyến tính max⁡x∈PcTx\max_{x\in P} c^{\mathsf{T}}x có giá trị tối ưu, thì giá trị tối ưu đó đạt được tại một đỉnh (điểm cực biên) của PP.

Vì sao đúng?

Hàm mục tiêu là tuyến tính nên các tập mức của nó là các siêu phẳng song song; khi trượt một siêu phẳng như vậy qua một khối đa diện lồi, điểm cuối cùng nó chạm vào trước khi rời khỏi miền luôn là một đỉnh, không bao giờ là một điểm trong phần trong của một mặt, vì các điểm trong luôn có thể được đẩy xa hơn theo hướng cải thiện hàm mục tiêu.

Chứng minh

Vì PP là một khối đa diện bị chặn được xác định bởi hữu hạn bất đẳng thức tuyến tính, nó có hữu hạn đỉnh v1,…,vkv_1,\ldots,v_k, và một sự kiện cổ điển về khối đa diện (định lý Minkowski) khẳng định rằng mọi điểm của PP đều là tổ hợp lồi của các đỉnh này: x=∑i=1kλivix=\sum_{i=1}^{k}\lambda_i v_i, trong đó λi≥0\lambda_i\ge 0 và ∑iλi=1\sum_i \lambda_i=1.

Vì hàm mục tiêu cTxc^{\mathsf{T}}x tuyến tính, tính giá trị của nó trên một tổ hợp lồi như vậy cho cTx=∑iλi(cTvi)≤(max⁡icTvi)∑iλi=max⁡icTvic^{\mathsf{T}}x=\sum_i \lambda_i\left(c^{\mathsf{T}}v_i\right)\le \left(\max_i c^{\mathsf{T}}v_i\right)\sum_i\lambda_i=\max_i c^{\mathsf{T}}v_i, vì mỗi λi≥0\lambda_i\ge 0 và chúng có tổng bằng 11.

Điều này cho thấy mọi xx khả thi đều có giá trị mục tiêu không vượt quá giá trị đỉnh tốt nhất max⁡icTvi\max_i c^{\mathsf{T}}v_i. Nhưng đỉnh tốt nhất đó, gọi là vi∗v_{i^*}, tự nó là một điểm khả thi của PP, nên nó thực sự đạt được cận trên này: cTvi∗=max⁡x∈PcTxc^{\mathsf{T}}v_{i^*}=\max_{x\in P} c^{\mathsf{T}}x. Do đó giá trị tối ưu của bài toán quy hoạch tuyến tính đạt được tại đỉnh vi∗v_{i^*}, chứng minh khẳng định.

Định lý cơ bản cho phép giới hạn việc tìm giá trị tối ưu vào hữu hạn đỉnh của PP, nhưng kiểm tra trực tiếp từng đỉnh sẽ quá chậm khi có nhiều ràng buộc. Thay vào đó, phương pháp đơn hình bắt đầu tại một đỉnh và liên tục di chuyển sang đỉnh kề dọc theo một cạnh làm tăng chặt hàm mục tiêu, chỉ dừng lại khi không còn đỉnh lân cận nào tốt hơn — lúc đó, mọi chi phí rút gọn đều không âm và đỉnh hiện tại được chứng minh là tối ưu.

Với bài toán gốc max⁡{cTx:Ax≤b,x≥0}\max\{c^{\mathsf{T}}x : Ax\le b, x\ge 0\}, định nghĩa bài toán đối ngẫu min⁡{bTy:ATy≥c,y≥0}\min\{b^{\mathsf{T}}y : A^{\mathsf{T}}y\ge c, y\ge 0\}. Khi đó (đối ngẫu yếu) cTx≤bTyc^{\mathsf{T}}x\le b^{\mathsf{T}}y với mọi xx khả thi của bài toán gốc và yy khả thi của bài toán đối ngẫu, và (đối ngẫu mạnh) nếu bài toán gốc có nghiệm tối ưu x∗x^{*}, thì bài toán đối ngẫu có nghiệm tối ưu y∗y^{*} với cTx∗=bTy∗c^{\mathsf{T}}x^{*}=b^{\mathsf{T}}y^{*}.

Vì sao đúng?

Đối ngẫu nói rằng bài toán gốc tối đa hóa và bài toán đối ngẫu tối thiểu hóa là hai cách nhìn về cùng một con số: các biến đối ngẫu yy đóng vai trò như giá của các nguồn lực, và đối ngẫu yếu nói rằng không phương án sản xuất khả thi nào có thể kiếm được nhiều hơn giá trị của các nguồn lực nó dùng theo bất kỳ cách định giá hợp lệ nào, còn đối ngẫu mạnh nói rằng tại điểm tối ưu, phương án sản xuất tốt nhất và cách định giá hợp lệ rẻ nhất trùng khớp chính xác với nhau.

Chứng minh

(Đối ngẫu yếu.) Cho xx là điểm khả thi bất kỳ của bài toán gốc (Ax≤bAx\le b, x≥0x\ge 0) và yy là điểm khả thi bất kỳ của bài toán đối ngẫu (ATy≥cA^{\mathsf{T}}y\ge c, y≥0y\ge 0). Vì x≥0x\ge 0 và ATy≥cA^{\mathsf{T}}y\ge c, nhân bất đẳng thức với vectơ không âm xx vẫn giữ nguyên chiều: cTx≤(ATy)Tx=yTAxc^{\mathsf{T}}x\le \left(A^{\mathsf{T}}y\right)^{\mathsf{T}}x=y^{\mathsf{T}}Ax. Vì y≥0y\ge 0 và Ax≤bAx\le b, lập luận tương tự cho yTAx≤yTb=bTyy^{\mathsf{T}}Ax\le y^{\mathsf{T}}b=b^{\mathsf{T}}y. Kết hợp hai bất đẳng thức, cTx≤bTyc^{\mathsf{T}}x\le b^{\mathsf{T}}y đúng với mọi cặp khả thi, đó chính là đối ngẫu yếu.

(Đối ngẫu mạnh.) Chạy phương pháp đơn hình trên bài toán gốc cho tới khi nó dừng tại một nghiệm cơ sở khả thi tối ưu x∗x^{*} với ma trận cơ sở tối ưu BB, sao cho xB∗=B−1bx^{*}_B=B^{-1}b và chi phí rút gọn của mọi biến phi cơ sở đều không âm — điều kiện dừng này tương đương với việc định nghĩa y∗T=cBTB−1y^{*\mathsf{T}}=c_B^{\mathsf{T}}B^{-1}, và có thể kiểm tra rằng nó thỏa ATy∗≥cA^{\mathsf{T}}y^{*}\ge c và y∗≥0y^{*}\ge 0, tức y∗y^{*} khả thi cho bài toán đối ngẫu.

Thay vào, giá trị tối ưu của bài toán gốc là cTx∗=cBTxB∗=cBTB−1b=y∗Tb=bTy∗c^{\mathsf{T}}x^{*}=c_B^{\mathsf{T}}x^{*}_B=c_B^{\mathsf{T}}B^{-1}b=y^{*\mathsf{T}}b=b^{\mathsf{T}}y^{*}. Kết hợp với đối ngẫu yếu (luôn có cTx∗≤bTy∗c^{\mathsf{T}}x^{*}\le b^{\mathsf{T}}y^{*}), đẳng thức ở đây buộc y∗y^{*} cũng phải là nghiệm tối ưu của bài toán đối ngẫu, do đó cTx∗=bTy∗c^{\mathsf{T}}x^{*}=b^{\mathsf{T}}y^{*}, chứng minh đối ngẫu mạnh.

Đại họcỨng dụng thực tiễn và Ví dụ minh họa

Quy hoạch tuyến tính là nền tảng của phần mềm ra quyết định trong nhiều ngành: các hãng hàng không giải các bài toán xếp lịch tổ bay và phân bổ đội tàu bay với hàng triệu biến, các nhà máy lọc dầu pha trộn dầu thô để đạt tiêu chuẩn sản phẩm với chi phí thấp nhất, các công ty viễn thông định tuyến lưu lượng mạng để tối đa hóa thông lượng, và các nhà quản lý danh mục đầu tư phân bổ vốn giữa các tài sản chịu giới hạn rủi ro — tất cả đều là các trường hợp của việc tối đa hóa hoặc tối thiểu hóa một hàm mục tiêu tuyến tính dưới các ràng buộc tuyến tính.

Ví dụ: Tối đa hóa lợi nhuận với hai sản phẩm

Một nhà máy sản xuất hai sản phẩm, xx và yy đơn vị mỗi tuần, thu lợi nhuận z=3x+5yz=3x+5y. Sản xuất bị giới hạn bởi x≤4x\le 4, 2y≤122y\le 12, và 3x+2y≤183x+2y\le 18, với x,y≥0x,y\ge 0. Tìm giá trị xx và yy để tối đa hóa zz.

Lời giải

Ràng buộc x≤4x\le 4 chặn trực tiếp xx, 2y≤122y\le 12 nghĩa là y≤6y\le 6, và 3x+2y≤183x+2y\le 18 là ràng buộc nguồn lực chặt; cùng với x,y≥0x,y\ge 0, bốn đường này cắt ra một ngũ giác với các đỉnh (0,0)(0,0), (4,0)(4,0), (4,3)(4,3), (2,6)(2,6), và (0,6)(0,6).

Theo định lý cơ bản, giá trị lớn nhất của hàm mục tiêu tuyến tính z=3x+5yz=3x+5y trên đa giác khả thi bị chặn này đạt được tại một trong năm đỉnh này, nên chỉ cần tính zz tại từng đỉnh: z(0,0)=0z(0,0)=0, z(4,0)=12z(4,0)=12, z(4,3)=3(4)+5(3)=27z(4,3)=3(4)+5(3)=27, z(2,6)=3(2)+5(6)=36z(2,6)=3(2)+5(6)=36, và z(0,6)=30z(0,6)=30.

Giá trị lớn nhất là z=36z=36, đạt được tại đỉnh (x,y)=(2,6)(x,y)=(2,6), chính là điểm mà các ràng buộc 2y≤122y\le 12 và 3x+2y≤183x+2y\le 18 gặp nhau, xác nhận cả hai nguồn lực đều được dùng hết tại điểm tối ưu.

Ví dụ: Đọc giá nguồn lực từ bài toán đối ngẫu

Với nhà máy ở ví dụ trước, giả sử ban quản lý muốn biết giá trị biên của thêm một đơn vị nguồn lực trong ràng buộc 3x+2y≤183x+2y\le 18 — tức là thêm một đơn vị nguồn lực đó đáng giá thêm bao nhiêu lợi nhuận. Dùng bài toán đối ngẫu, tìm giá trị biên này (giá bóng) mà không cần giải lại toàn bộ bài toán quy hoạch tuyến tính từ đầu.

Lời giải

Đối ngẫu của bài toán tối đa hóa z=3x+5yz=3x+5y chịu ràng buộc x≤4x\le 4, 2y≤122y\le 12, 3x+2y≤183x+2y\le 18, x,y≥0x,y\ge 0 là bài toán tối thiểu hóa min⁡ w=4y1+12y2+18y3\min\, w=4y_1+12y_2+18y_3 chịu ràng buộc y1+3y3≥3y_1+3y_3\ge 3, 2y2+2y3≥52y_2+2y_3\ge 5, và y1,y2,y3≥0y_1,y_2,y_3\ge 0, trong đó y1,y2,y3y_1,y_2,y_3 là các giá đối ngẫu gắn với các ràng buộc x≤4x\le 4, 2y≤122y\le 12, 3x+2y≤183x+2y\le 18 tương ứng.

Theo đối ngẫu mạnh, giá trị tối ưu của bài toán đối ngẫu bằng giá trị tối ưu của bài toán gốc đã tìm được trước đó, w∗=z∗=36w^{*}=z^{*}=36. Tại đỉnh tối ưu (x,y)=(2,6)(x,y)=(2,6), chỉ có các ràng buộc 2y≤122y\le 12 và 3x+2y≤183x+2y\le 18 là chặt (ràng buộc x≤4x\le 4 là lỏng vì x=2<4x=2<4), nên độ lệch bù buộc giá đối ngẫu của ràng buộc lỏng phải bằng không: y1=0y_1=0.

Với y1=0y_1=0, các ràng buộc đối ngẫu còn lại trở thành 3y3≥33y_3\ge 3 và 2y2+2y3≥52y_2+2y_3\ge 5, và giải hai đẳng thức đối ngẫu chặt 3y3=3 and 2y2+2y3=53y_3=3 \text{ and } 2y_2+2y_3=5 cho y3=1 and y2=1.5y_3=1 \text{ and } y_2=1.5: giá bóng của ràng buộc 3x+2y≤183x+2y\le 18 là y3=1y_3=1, nghĩa là thêm một đơn vị nguồn lực đó sẽ làm tăng lợi nhuận tối đa thêm khoảng 11.

Trong ví dụ nhà máy với hàm mục tiêu z=3x+5yz=3x+5y và các đỉnh khả thi (0,0)(0,0), (4,0)(4,0), (4,3)(4,3), (2,6)(2,6), (0,6)(0,6), đỉnh nào cho giá trị zz lớn nhất?

Theo định lý cơ bản của quy hoạch tuyến tính, nếu một bài toán quy hoạch tuyến tính có miền khả thi khác rỗng và bị chặn có nghiệm tối ưu, thì nghiệm tối ưu đó luôn có thể tìm thấy ở đâu?

Đối ngẫu yếu đảm bảo điều gì về một bài toán quy hoạch tuyến tính tối đa hóa gốc và bài toán đối ngẫu tối thiểu hóa của nó?

Một hãng hàng không cần xếp tổ bay với chi phí thấp nhất cho các chuyến bay trong khi vẫn thỏa các quy định nhân sự và giới hạn giờ làm việc. Bài toán này là ví dụ điển hình của kỹ thuật nào?

Tài liệu tham khảo

  1. George B. Dantzig (1963). Linear Programming and Extensions
  2. Dimitris Bertsimas, John N. Tsitsiklis (1997). Introduction to Linear Optimization