Thuật toán giãn affine (1) – Ý tưởng thiết kế và thuật toán
Đăng bởi tqlong on Tháng Ba 1, 2008
Thuật toán giãn affine (affine scaling algorithm) là một trong các thuật toán điểm trong giải bài toán QHTT. Ý tưởng chính của các phương pháp này là xuất phát từ một nghiệm bên trong đa diện lồi, ta lần lượt tìm các nghiệm khác có giá trị hàm mục tiêu tốt hơn và đi dần tới nghiệm tối ưu (có thể nghiệm này ở trên biên).
Ý tưởng thiết kế: Do rất khó đưa ra lời giải tối ưu của bài toán QHTT dưới dạng công thức (nếu có, công thức này sẽ phải tính từ ), tại mỗi bước lặp, người ta bao nghiệm đang xét
bằng một hình ellipse trong
. Hình ellipse này được chọn sao cho các điểm
vẫn thỏa mãn
, đồng thời bài toán QHTT giới hạn trong hình ellipse này có lời giải
dưới dạng công thức (phụ thuộc vào
và công thức của
). Sau đó ta lại bao
bằng một hình ellipse khác và cứ tiếp tục như vậy đến khi khoảng cách đối ngẫu nhỏ hơn một ngưỡng
nào đó.
Code trong Matlab của thuật toán giãn affine, cùng với code chạy thuật toán trên ví dụ ta đã xét ở loạt bài về Phương pháp đơn hình, download ở đây :-)
Quá trình chạy thuật toán giãn affine trong ví dụ trên
Bây giờ ta xét chi tiết từng bước của thuật toán:
Định lý (hình ellipse dương bao lấy một điểm): Giả sử thuộc
và
. Khi đó tập
là ellipse trong mà
. Trong đó
là ma trận đường chéo tạo bởi véctơ
.
Chứng minh: Dễ thấy
do . Suy ra
.
Quay lại bài toán QHTT dạng chuẩn tắc
Bây giờ ta bao bằng hình ellipse
và tìm điểm
sao cho
. Tức là ta phải tìm nghiệm tối ưu của bài toán
Lưu ý, ta có thể bỏ ràng buộc do
.
Nếu ta đổi biến thì ta có bài toán tương đương
Có thể hiểu đây là bài toán tìm hướng tốt nhất để biến đổi thành nghiệm tối ưu
.
Đây là bài toán quy hoạch lồi, hàm Lagrange tương ứng là
Ta có thể viết điều kiện Karush-Kuhn-Tucker (KKT) cho nghiệm tối ưu của bài toán này như sau:
Giải hệ này ta được
Để thấy là nghiệm tối ưu, ta có
Hơn nữa nếu xét một nghiệm bất kì của bài toán, do
ta có
trong khi đó
Như vậy là nghiệm tối ưu. Ta tổng kết lại bằng định lý sau:
Định lý (hướng tốt nhất trong hình ellipse): Nếu là một điểm nằm trong đa diện lồi dạng chuẩn tắc
và
, đồng thời các hàng của
độc lập tuyến tính và
không phải là tổ hợp tuyến tính các hàng của
, đặt
với . Khi đó
là hướng tốt nhất sao cho
là nghiệm tối ưu trong tập
.
Nhận xét:
- Ta phải đưa thêm các điều kiện “các hàng của
độc lập tuyến tính” và “
không phải tổ hợp tuyến tính các hành của
” để ma trận
khả nghịch và véctơ
.
- Nếu các hàng của
không độc lập tuyến tính, ta có thể loại đi một số hàng phụ thuộc tuyến tính vào các hàng khác.
- Nếu
thì
, suy ra
. Hơn nữa
không phụ thuộc vào
, nghĩa là mọi nghiệm chấp nhận được đều là nghiệm tối ưu.
- Nếu
là một nghiệm cơ sở chấp nhận được
,
và
ta có
và
trong đó
. Nghĩa là
chính là nghiệm cơ sở đối ngẫu của
. Trong trường hợp
không phải là nghiệm cơ sở chấp nhận được ta gọi
là ước lượng đối ngẫu của
. Hơn nữa, véctơ
chính là véctơ chứa giá trị thay đổi ở các hướng trong thuật toán đơn hình.
- Nếu
là nghiệm cơ sở bị suy biến, ma trận
không khả nghịch, do đó ta giả sử mọi nghiệm cơ sở đều không suy biến.
- Nếu
hay
thì bài toán không bị chặn và không có nghiệm tối ưu.
- Hướng
là hướng cực đại hóa hàm mục tiêu (vì hệ phương trình của điều kiện KKT thật ra có 2 nghiệm
).
- Nếu
, ta có
là nghiệm chấp nhận được của bài toán đối ngẫu, khi đó khoảng cách đối ngẫu (duality gap) là
Định lý (khoảng cách đối ngẫu): Nếu và
là hai nghiệm chấp nhận được của bài toán gốc
và bài toán đối ngẫu
và khoảng cách đối ngẫu
thì
trong đó là giá trị tối ưu của hai bài toán.
Chứng minh: Theo định lý về tính đối ngẫu của hai bài toán, ta có
.
Suy ra hay
Chứng minh tương tự cho .
Nhận xét: Định lý cho ta điều kiện để kiểm tra một nghiệm có gần với nghiệm tối ưu hay không bằng cách kiểm tra khoảng cách đối ngẫu.
Tổng kết lại, ta có thuật toán giãn affine sau
Đầu vào (input):
- Các ràng buộc và hàm mục tiêu
.
- Một nghiệm chấp nhận được
.
- Ngưỡng kiểm tra điều kiện tối ưu
.
- Tham số
.
Thuật toán giãn affine:
- Tính các đại lượng
.
- Kiểm tra điều kiện tối ưu: Nếu
và
thì dừng và đưa ra nghiệm
.
- Nếu
thì dừng và kết luận bài toán không bị chặn và không có nghiệm.
- Cập nhật nghiệm
và quay lại bước 1.
Nhận xét:
- Sau mỗi vòng lặp, giá trị hàm mục tiêu thay đổi một lượng bằng
- Ta có thể viết
với
. Như vậy
, với
là chuẩn
, tức là khi
(
tiến đến một điểm cực biên) thì
, tức là thay đổi của
so với
sẽ không lớn. Có thể hiểu là khi
gần chạm đến biên thì bán kính của hình ellipse
nằm gọn trong
sẽ không lớn, nên
nhỏ.
- Trong thực hành, người ta thấy khi
gần đến biên thì thuật toán sẽ biến đổi
chạy dọc theo biên của đa diện lồi (gần giống với phương pháp đơn hình). Vì vậy, người ta tin là độ phức tạp của thuật toán affine cũng giống với độ phức tạp của thuật toán đơn hình (mặc dù chưa có chứng minh).
- Đây cũng là xuất phát điểm của các phương pháp điểm trong khác, các phương pháp này ngoài việc làm giảm giá trị hàm mục tiêu còn luôn giữ
cách xa biên của đa diện lồi, đảm bảo thay đổi
đủ lớn. Các phương pháp này được chứng minh là có thời gian đa thức phụ thuộc vào số biến
, số ràng buộc
và số bít để mô tả độ chính xác của nghiệm
(để ý rằng
là độ chính xác của nghiệm).
- Làm thế nào để khởi tạo nghiệm
, ta có thể thêm vào một biến
và giải bài toán QHTT sau
trong đó
bất kì còn
là một số rất lớn so với các giá trị trong
. Khi đó
là nghiệm chấp nhận được ban đầu để ta khởi tạo thuật toán giãn affine. Để ý rằng, nếu bài toán gốc có nghiệm tối ưu
thì
là nghiệm tối ưu của bài toán trên do
là số rất lớn.




