Thuật toán đơn hình là một trong 10 thuật toán quan trọng nhất của thế kỉ XX.
Nó giải bài toán quy hoạch tuyến tính ở dạng chính tắc.
Nội dung của thuật toán đơn hình 1 pha như sau:
Bước 1: Đưa LP về dạng chính tắc.
Bước 2: Tìm một cơ sở chấp nhận được để xuất phát, hoặc chỉ ra bài toán không có nghiệm chấp nhận được.
Bước 3: Thực hiện các phép xoay (pivoting) cho đến khi tìm được nghiệm tối ưu, hoặc chỉ ra bài toán không bị chặn.
Quy tắc chọn cột xoay, hàng xoay: Chọn một biến ngoài cơ sở, sau đó
Chọn cột xoay: Chọn cột xoay có hệ số dương và có chỉ số cột nhỏ nhất.
Chọn hàng xoay: Chọn hàng xoay có tỉ số xoay nhỏ nhất và có chỉ số biến cơ sở nhỏ nhất.
Thuật toán sẽ dừng lại khi tất cả các hệ số ở hàng z (hàm mục tiêu) đều âm (Đối với bài toán cực đại hóa). Khi đó ta thu được
nghiệm tối ưu là giá trị đối của giá trị ở vế phải của hàng z.
▸ ⚠️ LƯU Ý
Thuật toán đơn hình 1 pha chỉ thực hiện được đối với bài toán LP có thể dễ dàng tìm được một cơ sở chấp nhận được để xuất phát.
Thông thường, ta áp dụng ở bài toán LP dạng chuẩn tắc (cực đại hóa) có vế phải lớn hơn 0 (bi≥0,∀i=1,...,n).
▸ VÍ DỤ
Để đơn giản, đầu tiên ta xét một LP ở dạng chuẩn tắc
với vế phải không âm.
Áp dụng tiêu chí chọn cột xoay pivcol là cột có hệ số hàm mục tiêu dương lớn nhất, sau đó chọn hàng xoay pivrow là hàng có ratio (tỉ lệ bi/ai,pivcol) dương nhỏ nhất.
Đến đây hệ số ở hàm mục tiêu đã hoàn toàn ≤0, ta thu được nghiệm tối ưu.
Có thể tham khảo kết quả ở dưới đây.
Bước0
Cơ sở
x1
x2
x3
s1
s2
s3
b
Ratio
s1
2
3
1
1
0
0
5
2.50
s2
4
1
2
0
1
0
11
2.75
s3
3
4
2
0
0
1
8
2.67
-z
5
4
3
0
0
0
0
Cột xoay (biến vào cơ sở)
Hàng xoay (biến rời cơ sở)
Phần tử xoay (pivot)
Biến cơ sở
Cột vào (biến vào cơ sở)
x1
Hệ số dương lớn nhất trong hàng z
Hàng ra (biến rời cơ sở)
s1
Ratio dương nhỏ nhất
Bấm vào ô trong bảng để chọn phần tử xoay thủ công, hoặc nhấn Tiếp để thuật toán tự chọn.
Khi đọc nghiệm:
Các biến trong cơ sở thì giá trị là giá trị tương ứng ở cột b.
Các biến ngoài cơ sở thì giá trị là 0.
Như trong bài toán trên thì nghiệm tối ưu là:
(x1,x2,x3,s1,s2,s3)⊤=(2,0,1,0,1,0)⊤
hay ta viết gọn lại (bỏ các biến bù) là:
(x1,x2,x3)⊤=(2,0,1)⊤
và giá trị tối ưu của hàm mục tiêu là z=13.
▸ ⚠️ LƯU Ý
Đối với bài toán dạng chuẩn tắc cực đại hóa, nếu tồn tại một biến ngoài cơ sở có hệ số
hàm mục tiêu dương, và các hệ số điều kiện không dương thì bài toán là không bị chặn.
▸ VÍ DỤ
s1s2−zx1215x20−14s1100s2010b780
Bài toán này không bị chặn, do biến x2 ngoài cơ sở có hệ số hàm mục tiêu dương và
các hệ số điều kiện không dương.