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
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.
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 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:
trong đó xs là các biến bù, còn Z là biến cần cực đại.