Giả thiết cho một bài toán dạng chính tắc, có một phương án cực biên x0
với cơ sở J0 = {A1, A2, …. Am}. Ta lập một bảng đơn hình từ các hệ số phân tích của vector b và hệ số phân tích của các các vector điều kiện Ak (k = 1 .. n) qua cơ sở J0 theo quy tắc sau:
Trên hàng thứ nhất, ghi các hệ số {c1, c2 …. cn} và tương ứng ngay ở bên dưới ghi các thành phần của vector nghiệm x {x1, x2, ….. xn}
Cột thứ nhất là hệ số {c1, c2 ….. cm}
Cột thứ hai ghi các các thành phần trong cơ sở J0
{x1, x2 …. xm} Cột thứ 3 ghi các thành phần dương của phương án x0
{x01, x02, …. m0 m}
Phần giao nhau của các cột và hàng trong bảng ghi các hệ số phân tích của các vector Ak qua cơ sở {A1, A2 … Am}. Ta nhớ là các cột tương ứng với các thành phần dương của phương án chính là m vector đơn vị vì đó chính là phân tích của các vector trong cơ sở. Còn các cột còn lại có có được từ việc tính toán các xjk
Hàng cuối cùng ta đặt trị số hàm mục tiêu tại xo
và các giá trị của ∆k. Nhớ là các ∆k với k € J0 thì bằng 0. Các ∆k khác được tính theo công thức ∆k = ∑ cj xjk – ck (j € J0)
Sau đây là cấu trúc tổng quát của một bảng đơn hình. Trong bảng này, các thành phần dương được dồn lên đầu, tuy nhiên trong thực tế các thành phần này có thể nằm xen kẽ với các thành phần phi cơ sở. Và thực tế là sau khi thực hiện các phép biến đổi trên bảng đơn hình, trật tự của các thành phần cơ sở cũng sẽ bị thay đổi vì sẽ có một thành phần được đưa ra khỏi cơ sở và một thành phần phi cơ sở được đưa vào. Hệ số cj Cơ sở J0 P/á x0j c1 x1 c2 x2 …. cr xr cm xm cm+1 xm+1 cs xs cn xn c1 x1 x01 1 0 …. 0 …. 0 x1 m+1 … x1s … x1n c2 x2 x02 0 1 …. 0 …. 0 x2 m+1 … x2s … x2n … …. … … … … cr xr x0r 0 0 … 1 … 0 xr m+1 … xr s … xrn
… … … … cm xm x0m 0 0 … 0 … 1 xm m+1 … xm s … xm s
f(x) f(x0) 0 0 0 0 0 0 ∆m+1 … ∆s … ∆n
Như vậy để lập được bảng đơn hình chúng ta cần 2 giả thiết: (1)- bài toán phải chính tắc và (2) – bài toán phải có một phương án cực biên x0. Ngoài ra trong bảng đơn hình vừa thành lập, có 2 yếu tố mà chúng ta chưa xác định được ngay từ các giả thiết trên đó là các hệ số phân tích của các vector phi cơ sở xjk và các ∆k. Dưới đây sẽ trình bày phương pháp xác định các thành phần xjk cùng với ∆k đối với 3 loại bài toán: Bài toán chính tắc dạng chuẩn và bài toán chính tắc không chuẩn và bài toán tổng quát (bất kỳ):
a. Đối với bài toán dạng chuẩn:
Bài toán dạng chuẩn có dạng như sau: f(x) = (c, x) min
Ax = b x ≥ 0 b ≥ 0
Và ma trận A có chứa m vector đơn vị như sau: 1 0 …… 0 a1m+1 a1m+2 ….. a1n
0 1 …… 0 a2m+1 a2m+1 ….. a2n
……….
0 0 …… 1 amm+1 amm+2 ….amn
Từ định nghĩa về bài toán dạng chuẩn ta có 3 nhận xét: Bài toán dạng chuẩn có ngay một phương án cực biên x0
đó là phương án có các thành phần phi cơ sở thì bằng 0 còn các thành phần cơ sở thì bằng thành phần tương ứng của vector b: x0
= {b1 b2 … bm 0 0 ….0}
Các thành phần dương của phương án x0
(cột thứ 3 trong bảng đơn hình) chính là hệ số phân tích của vector b qua cơ sở J0
và cũng chính là vector b.
Vì các vector trong cơ sở là vector đơn vị nên hệ số phân tích của các phi cơ sở Ak (k không thuộc J0) sẽ là chính nó nghĩa là xjk = ajk
Như vậy với bài toán dạng chính tắc chúng ta thành lập ngay được bảng đơn hình, lấy các giá trị bj điền vào vị trí x0
j tương ứng ( j € J0 ) và lấy các thành phần trong ma trận hệ số phân tích để điền vào các vị trí xjk tương ứng ( j = 1 .. m, k = 1 .. n)
b. Đối với bài toán dạng chính tắc
Đối với bài toán dạng chính tắc thì chúng ta phải có giả thiết là đầu bài đã cho một phương án cực biên x0. (Nếu bài toán không cho trước phương án cực biên thì chúng ta phải đi tìm một phương án cực biên, thuật toán tìm phương án cực biên sẽ đề đến trong phần sau).
Ngoài ra, vì bài toán không phải là chuẩn nên chúng ta không có điều kiện là các thành phần của vector b ≥ 0 và trong ma trận hệ ràng buộc cũng không có chứa các vector đơn vị. Do vậy để tìm các hệ số phân tích của các vector Ak với k không thuộc J0 chúng ta phải áp dụng một thuật toán biến đổi ma trận như sau:
Viết ma trận điều kiện mở rộng Ā = | A|b |. (Nghĩa là viết vector b bên cạnh ma trận ràng buộc A. Đánh dấu các cột tương ứng với các thành phần dương của phương án x0
(nghĩa là đánh dấu các vector Aj trong cơ sở J0)
Thực hiện các phép biến đổi trên hàng của ma trận Ā sao cho các vector cơ sở Aj biến thành các vector đơn vị. Khi đó các vector Ak với k không thuộc cơ sở sẽ bị biến thành vector hệ số phân tích của Ak qua cơ sở J0. Lưu ý là trong quá trình biến đổi đó, vector b cũng bị biến đổi theo, trở thành vector hệ số phân tích của b qua cơ sở J0
nghĩa là bằng x0. Do đó chúng ta có thể dùng điều này để kiểm tra tính đúng đắn của của trình biến đổi
Viết ma trận Ā cuối cùng (sau khi biến đổi như trên) vào trong bảng đơn hình (đối với các vị trí xjk
tương ứng).
Nhận xét: Thực chất của quá trình biến đổi trên đây là thực hiện các phép biến đổi sơ cấp trên các phương trình của hệ ràng buộc để chính tắc về dạng chuẩn.
c. Đối với bài toán quy hoạch tuyến tính dạng tổng quát.
Trước đây chúng ta đã có một mệnh đề là mọi bài toán quy hoạch tuyến tính đều có thể đưa về bài toán dạng chính tắc và từ phương án cực biên của bài toán này có thể suy ra phương án cực biên của bài toán kia. Như vậy đối với một bài toán quy hoạch tổng quát để có thể giải được bằng phương pháp đơn hình chúng ta thêm vào các ẩn phụ để đưa bài toán về dạng chính tắc. Sau khi đã có bài toán chính tắc tương đương, từ phương án cực biên x0
của bài toán tổng quát ban đầu, chúng ta suy ra phương án cực biên x01 của bài toán chính tắc hệ quả (bằng cách giải các phương trình ràng buộc mới để tìm ra giá trị các ẩn phụ) và xây dựng bảng đơn hình theo cách của bài toán chính tắc đã trình bày ở trên.
Tính toán ∆k và đánh giá phương án x0:
Sau khi đã có đầy đủ nội dung bên trong của bảng đơn hình theo chúng ta điền nốt giá trị ∆k theo công thức tính toán sau:
∆j = 0 (j € J0)
∆k = ∑ cj xjk – ck (j € J0, k không thuộc J0
)
Nghĩa là tại các cột ứng với các thành phần cơ sở, chúng ta viết ∆j = 0. Tại các cột ứng với các thành phần phi cơ sở, chúng ta viết ∆k bằng tích vô hướng của vector cột thứ nhất (vector hệ số cj với j thuộc cơ sở) trong bảng đơn hình, với vector cột hệ số phân tích Ak tương ứng.
Đến lúc này chúng ta đã hoàn thiện bảng đơn hình với đầy đủ các thành phần. Phần việc còn lại là đánh giá phương án x0
xuất phát này và biến đổi bảng đơn hình để đi đến một phương án tốt hơn hoặc kết luận là bài toán không giải được. Các bước tiếp theo được thực hiện như sau:
Bƣớc 1: Đánh giá phương án xuất phát x0
.
Chúng ta đã có mệnh đề rằng nếu ∆k ≤ thì phương ∆k là phương tăng hoặc không đổi (tất nhiên là chúng ta đang xét bài toán f(x) min còn với bài toán f(x) max thì sẽ thảo luận sau).
Như vậy, sau khi xây dựng bảng đơn hình nếu thấy ∆k ≤ 0 với mọi k không thuộc J0 thì có thể kết luận là x0 là phương án tối ưu. Chấm dứt thuật toán.
Ngược lại nếu tồn tài một ∆k dương thì chúng ta chuyển sang bước 2 sau:
Nếu tồn tại một ∆k dương thì rõ ràng là phương án cực biên x0 chưa tối ưu và nó còn có phương giảm ∆k. Theo lý thuyết, đi theo một phương giảm thì sẽ cải tiến được phương án x0. Tuy nhiên ở đây chúng ta cần khảo sát hai tình huống:
Trong các phương giảm (∆k dương) chúng ta kiểm tra xem có dấu hiệu giảm vô hạn hay không. Theo định lý cơ bản của phương pháp đơn hình, phương ∆k mà có tất các hệ số xjk ≤ 0 với mọi j thì có nghĩa là phương ∆k sẽ giảm vô hạn. Như vậy nếu chúng ta thấy trong bảng đơn hình nếu có một phương ∆k nào đó mà tương ứng với nó, vector hệ số phân tích Ak không chứa thành phần dương thì chúng ta có thể kết luận là hàm mục tiêu sẽ giảm vô hạn và bài toán không giải được. Chấm dứt thuật toán.
Nếu khảo sát mọi cột có ∆k dương đều hữu hạn (nghĩa là trong các thành phần của vector hệ số phân tích Ak tương ứng có ít nhất một xjk dương) thì nếu đi theo một trong các phương ∆k giảm hữu hạn đó chúng ta sẽ cải tiến được x0
để thu được phương án tốt hơn.
Bƣớc 3: Chọn phương ∆k để cải tiến phương án x0.
Về lý thuyết, mỗi một lần cải tiến phương án x0
là biến đổi nó theo phương ∆k với một bước đi tối đa θ0
thì sẽ tìm được phương án cực biên mới x1. Mà trị số hàm mục tiêu giảm tỉ lệ thuận với bước đi tối đa θ0 này. Và chúng ta biết rằng
θ0 = min (x0j / xjk )
Như vậy nếu chúng trong các phương ∆k, chúng ta tìm được một phương ∆s nào đó mà có bước đi tối đa là lớn nhất so với các phương khác thì chắc chắn khi đi theo phương này chúng ta sẽ thu được một phương án cực biên mới với trị hàm mục tiêu giảm nhiều nhất. Tuy nhiên trong thực tế tính toán, để tìm được phương có bước đi lớn nhất chúng ta phải tính các giá trị θ0 ứng với các phương ∆k và sau đó so sánh các θ0 đó để chọn phương ∆k. Cách làm này sẽ làm mất nhiều thời gian vì vậy chúng ta chọn phương ∆k một cách ước lệ là lấy ∆k có giá trị lớn nhất với hy vọng là đi theo phương này thì hàm mục tiêu sẽ giảm nhiều nhất.
Giả sử chúng ta chọn được ∆s là max (∆k), khi đó chúng ta đồng thời cũng đi tìm xem bước đi tối đa θ0 ứng với phần tử xjs nào. Nghĩa là chúng ta sẽ lấy các xjs chia cho x0j tương ứng xem tỉ số nào là nhỏ nhất ( vì θ0 = min (x0j / xjs ) )
Giả sử phần tử đó là xrs, ta gọi phần tử này là phần tử trục vì nó sẽ đóng vai trò then chốt trong bước biến đổi bảng đơn hình tiếp sau. Trên bảng đơn hình, ta khoanh vuông phần tử này.
Nội dung của bước 3 này là chúng ta đã xác định một phương di chuyển, và khi di chuyển như vậy thì một vector Ak ngoài cơ sở sẽ được đưa vào trong cơ sở và một vector Aj trong cơ sở sẽ bị đưa ra ngoài cơ sở. Ở đây, vector As sẽ được đưa vào cơ sở và vector Ar sẽ bị đưa ra khỏi cơ sở. Cũng vậy, thành phần xs sẽ được đưa vào cơ sở và thành phần xr sẽ bị loại ra khỏi cơ sở. Chính vì vậy bước biến đổi bảng đơn hình sau đây còn được gọi là bước đổi cơ sở.
Bƣớc 4: Biến đổi cơ sở
Để biến đổi cơ sở, chúng ta áp dụng công thực biến đổi cơ sở tổng quát theo từng hàng của bảng đơn hình (kể cả hàng ước lượng ∆k và cột phương án x0) như sau:
Trước hết biến đổi hàng có chứa phần tử trục (hàng r) sao cho phần tử trục trở thành 1. Nghĩa là chia toàn bộ hàng này cho xrs
x’rs = xrk / xrs
Các hàng còn lại được biến đổi sao cho các phần tử trên cột s thì bằng 0 (trừ phần tử xrs) như vậy chúng ta phải nhân mọi phần tử của hàng r kể trên với số đối của xjs của hàng j và cộng vào tương ứng vào các phần tử hàng j (đây chính là phép biển đổi để cô lập theo cột trong công thức biến đổi ma trận để tìm hạng)
xjk = xjk + xrk. (-xjs)
Kết quả sau bước 4 chúng ta sẽ thu được bảng đơn hình mới ứng với một phương án cực biên x1
mới. Quay trở lại với bước một của thuật toán và lặp lại quá trình trên, sau một số hữu hạn bước, chúng ta sẽ: hoặc có thể kết luận được bài toán không giải được; hoặc tìm được một phương án cực biên tối ưu.
<<Các ví dụ>>
§5. Tìm phương án cực biên xuất phát cho bài toán quy hoạch tuyến tính