2 Một số thuật toán giải bài toán cực đại hàm lồi
2.3 Thuật toán xấp xỉ ngoài
Ta vẫn xét bài toán
f(C) := max{f(x) :x∈C} (P)
trong đó C := {x : aTi x ≤ bi, (i = 1,2, ..., m)} với ai ∈ Rn \ {0}, bi ∈ R,
(i= 1,2, ..., m) là tập lồi đa diện bị chặn với intC 6=∅ và f :A→R là hàm lồi liên tục trên tập A thỏa mãn C⊂A⊆Rn.
Ý tưởng
Dựa trên tính chất quan trọng của bài toán cực đại hàm lồi trên một tập lồi là nghiệm tối ưu (toàn cục) luôn đạt trên một điểm cực biên.
Ban đầu ta thay tập ràng buộc C bằng một tập D0⊃C, sao cho tập đỉnh của D0 dễ tính. Khi đó ta giải bài toán
max x∈D0 f(x) = max x∈V(D0) f(x) được nghiệm x0 ∈D0
• Nếu x0 ∈C thì dừng: x0 là nghiệm tối ưu của Bài toán (P).
• Nếu x0 ∈/ C ta dùng siêu phẳng l(x) cắt x0, nhưng không cắt đi bất kỳ điểm nào của C. Tức là l(x0)>0 và l(x)≤0, ∀x∈C.
Thuật toán Khởi tạo
Xây dựng một đa diện D0⊃C. Tính tập hợp đỉnh V(D0). Bước lặp k (k = 0,1, ...)
Tại thời điểm bắt đầu bước lặp k (k = 0,1, ...), ta có một đa diện Dk với tập đỉnh V(Dk).
Giải bài toán max{f(x) :x∈V(Dk)} được nghiệm xk.
Nếu xk ∈C thì dừng: xk là nghiệm tối ưu của Bài toán (P). Nếu xk ∈/ C. Chọn k sao cho aTkxk > bk.
Đặt Dk+1:=Dk∩ {x:aTkx≤bk}.
Tính V(Dk+1) và chuyển sang bước k+ 1.
Hình 2.4: Minh họa thuật toán xấp xỉ ngoài
Định lý 2.4. Thuật toán trên kết thúc sau tối đa m bước lặp.
Chứng minh. Nếu thuật toán trên không dừng tại bước lặp k, tức là tại
bước lặp k có một ràng buộc bị vi phạm, ta giả sử ràng buộc bị vi phạm đó là aTkx > bk. Khi đó, theo thuật toán trên ta xây dựng đa diện mới
Dk+1 :=Dk∩ {x:aTkx≤bk}.
Vậy trong mỗi lần lặp có một ràng buộc của tập ràng buộc C được thêm vào đa diện tiếp theo. Do tập C có m ràng buộc nên suy ra thuật toán phải dừng sau tối đa m bước lặp.
Ta có sơ đồ khối sau Bắt đầu k = 0 D0 ⊃ C, V(D0) dễ tính max{f(x) : x ∈ V(Dk)} được nghiệm xk xk ∈C kết thúc Chọn k sao cho aTkxk > bk Dk+1 := Dk ∩ {x : aTkx ≤ bk} k + 1 → k đúng sai Ví dụ 2.3.1 Xét bài toán f(x) = x2+y2+ 3x+ 2y−5 6xy→max (P2)
với các ràng buộc x+ 2y−1≤0 2x−y−1≤0 x≥0 y≥0
Ta giải bài toán trên bằng phương pháp xấp xỉ ngoài. Ta có miền chấp nhận được
C ={x∈R2:x+ 2y−1≤0, 2x−y−1≤0, x≥0, y ≥0}.
Hình 2.5: Hình vẽ minh họa
LấyD0 =co{(0,0),(0,12)(1,0)} ⊃C.Tập đỉnh củaD0làV(D0) ={(0,0),(0,12),(1,0)}. Giá trị hàm mục tiêu tại các đỉnh này là f(0,0) = 0, f(0,21) = 54, f(1,0) = 4.
Ta có f(x0) = max{f(x, y) : (x, y)∈V(D0)}=f(1,0) = 4.
Vìx0 = (1,0)∈/C nên dùng siêu phẳng2x−y−1≤0 cắt đi điểmx0 = (1,0)
Lấy D1 =co{(0,0),(0,12),(35,15),(21,0)} ⊃C. Tập đỉnh của D1 là
V(D1) = {(0,0),(0,12),(35,15),(12,0)}. Giá trị hàm mục tiêu tại các đỉnh này là f(0,0) = 0, f(0,12) = 54, f(53,15) = 52, f(12,0) = 74.
Ta có f(x1) = max{f(x, y) : (x, y)∈V(D1)}=f(35,15) = 52.
Vì x1 = (35,15) ∈ C nên x1 = (35,15) là nghiệm tối ưu của bài toán và f(35,15) = 52 là giá trị cực đại của bài toán.