Thuật toán giãn affine (1) – Ý tưởng thiết kế và thuật toán
Posted by Trần Quốc Long trên 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.
Bình luận về bài viết này