Quy hoạch tuyến tính

Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm

Trong toán học, quy hoạch tuyến tính (QHTT) (tiếng Anh: linear programming - LP) là bài toán tối ưu hóa, trong đó hàm mục tiêu (objective function) và các điều kiện ràng buộc đều là tuyến tính.

Trong bài toán này, cho một đa tạp (polytope) (chẳng hạn một đa giác hoặc một đa diện), và một hàm tuyến tính (affine) nhận giá trị thực

f(x_1, x_2, \dots, x_n)=a_1x_1+a_2x_2+\cdots +a_nx_n+b\,

xác định trên đa tạp đó, mục đích là tìm một điểm trên đa tạp tại đó hàm có giá trị nhỏ nhất (hoặc lớn nhất). Các điểm như vậy có thể không tồn tại, nhưng nếu chúng tồn tại phải tìm được ít nhất một điểm.

Dạng chuẩn tắc[sửa | sửa mã nguồn]

Một bài toán quy hoạch tuyến tính thường được phát biểu dưới dạng sau:

Tìm cực tiểu của c x trên \{x \in \mathbb R^n | Ax \le b\}, trong đó A \in \mathbb R^{m \times n}, b \in \mathbb R^m, c \in \mathbb R^n.

Như vậy, một bài toán quy hoạch tuyến tính được cho bởi:

1. Một hàm tuyến tính cần tìm cực tiểu: c x = c_1 x_1 + \ldots + c_n x_n.

Thí dụ: 5 x_1 + 3 x_2 - x_3.

2. Các điều kiện (hay ràng buộc) dưới dạng các bất đẳng thức tuyến tính.

Thí dụ:
  • x \ge 0 (ứng với A = - Id, b = 0).
  • \begin{cases} x_1 + x_2 \le 1 \\
x_1 \ge 0 \\
x_2 \ge 0 
\end{cases}\quad (ứng với A = \begin{bmatrix} 1 & 1\\
-1 & 0\\
0 & -1\end{bmatrix}, b = \begin{bmatrix} 1 \\ 0 \\ 0\\\end{bmatrix}).

Ghi chú: Các tài liệu khác nhau có thể có định nghĩa khác nhau về dạng chuẩn tắc của bài toán. Tuy nhiên, các dạng này là tương đương (xem [1]).

Ví dụ[sửa | sửa mã nguồn]

Chẳng hạn một nông dân có A sào đất để canh tác, ông ta dự định trồng khoai tây và lúa. Ông ta cũng có một lượng phân bón là F và một số tiền vốn để mua giống là P. Chi phí tương ứng cho hai loại cây trông trên là (F1, P1) cho khoai tây và (F2, P2) cho lúa. Giả sử thu hoạch quy ra tiền cho mỗi sào khoai tây là S1, cho mỗi sào lúa là S2. Nếu dành để trồng khoai tây x1 sào và lúa x2 sào, thì bài toán chọn số sào trồng khoai tây và trồng lúa là bài toán QHTT sau đây:

Cực đại hóa hàm  S_1 x_1 + S_2 x_2 \, (hàm mục tiêu cực đại)
với các ràng buộc
 x_1 + x_2 \le A (giới hạn đất trồng)
 F_1 x_1 + F_2 x_2 \le F (giới hạn phân bón)
 P_1 x_1 + P_2 x_2 \le P (giới hạn tiền vốn mua giống)
 x_1 \ge 0,\, x_2 \ge 0 (giá trị không âm)

Còn dưới dạng ma trận:

maximize \begin{bmatrix} S_1 & S_2 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix}
ràng buộc \begin{bmatrix} 1 & 1 \\ F_1 & F_2 \\ P_1 & P_2 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \le \begin{bmatrix} A \\ F \\ P \end{bmatrix}, \, \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \ge 0

Dạng gia tố (Augmented form)[sửa | sửa mã nguồn]

(Các tài liệu trong nước gọi là đưa về dạng chính tắc)

Bài toán QHTT được biến đổi về dạng gia tố trước khi trước khi giải bằng thuật toán đơn hình (simplex algorithm). Trong dạng này có bổ sung một số "biến bù" không âm để biến các bất đẳng thức thành các đẳng thức. Khi đó bài toán viết dưới dạng:

Cực đại hóa Z trong:

  \begin{bmatrix}
    1 & -\mathbf{c}^T & 0 \\
    0 & \mathbf{A} & \mathbf{I}
  \end{bmatrix}
  \begin{bmatrix}
    Z \\ \mathbf{x} \\ \mathbf{x}_s
  \end{bmatrix} = 
  \begin{bmatrix}
    0 \\ \mathbf{b}
  \end{bmatrix}
 \mathbf{x}, \, \mathbf{x}_s \ge 0

trong đó xs là các biến bù, còn Z là biến cần cực đại.

Ví dụ[sửa | sửa mã nguồn]

Bài toán trong ví dụ trên sau khi biến đổi có dạng:

Cực đại hóa  S_1 x_1 + S_2 x_2\,=Z (hàm mục tiêu)
với các ràng buộc
 x_1 + x_2 + x_3 = A\, (ràng buộc gia tố)
 F_1 x_1 + F_2 x_2 + x_4 = F\, (ràng buộc gia tố)
 P_1 x_1 + P_2 x_2 + x_5 = P\, (ràng buộc gia tố)
 x_1,x_2,x_3,x_4,x_5 \ge 0

trong đó x_3,x_4,x_5\, là các "biến bù" không âm.

Nó có thể viết dưới dạng ma trận:

Cực đại hóa Z trong:

  \begin{bmatrix}
    1 & -S_1 & -S_2 & 0 & 0 & 0 \\
    0 &   1    &   1    & 1 & 0 & 0 \\
    0 &  F_1  &  F_2  & 0 & 1 & 0 \\
    0 &  P_1    & P_2 & 0 & 0 & 1 \\
  \end{bmatrix}
  \begin{bmatrix}
    Z \\ x_1 \\ x_2 \\ x_3 \\ x_4 \\ x_5
  \end{bmatrix} = 
  \begin{bmatrix}
    0 \\ A \\ F \\ P
  \end{bmatrix}, \,
  \begin{bmatrix}
    x_1 \\ x_2 \\ x_3 \\ x_4 \\ x_5
  \end{bmatrix} \ge 0

Các dạng đặc biệt[sửa | sửa mã nguồn]

Chú thích[sửa | sửa mã nguồn]

  1. ^ Allaire 2005, chương 11.

Tham khảo[sửa | sửa mã nguồn]

Allaire, Grégoire (2005). Analyse numérique et optimisation (bằng tiếng Pháp). Ellipses. ISBN 9782730212557.