Dựa trên hướng giải quyết được nêu ở phần trên ta thấy rằng thuật toán sẽ có hai điều kiện dừng đó là∇f(xk)(x∗k−xk) và hướngdk. Để phân tích từng bước tiến trình của thuật toán, ta dựa trên sơ đồ khối sau đây:
Sơ đồ khối của thuật toán Tìm x1∈Rnđạt min{l=x1+…+xn}, k=1 Tìm t’đạt min{φ(t)=f(xk+tdk)} Dừng Đ k:=k+1 Tìm x*kđạt min{ f(xk)x: x∈D} dk= x*k–xk =0 Tìm tkđạt min{1,t’} S xk+1=xk+tkdk f(xk)(x*k– xk) ≥ 0 Dừng S Đ
Hình 2.2: Sơ đồ khối phương pháp Frank- Wolfe.
Các bước của thuật toán gồm:
Bước 1. (Bước chuẩn bị) Tìm điểm chấp nhận được ban đầux1 ∈ D.Có hai cách chọn:
Cách 1. do các bất phương trình là tuyến tính nên ta có thể tìmx1bằng các giải bài toán phụP(x,xg)khi đóx1là phương án cực biên (PACB)
Cách 2. có thể tìm bằng cách mò ngẫu nhiênx1 ∈ D, không nhất thiết phải là đỉnh củaD. Khi đóx1không là PACB.
Bước 2. (Bước tổng quátk=1, 2, ...)Giả sử ở bước lặpk, ta đã có điểmx1∈ D. 1. Tìm hướng giảmdk từ điểmxk. Giải qui hoạch tuyến tính
minn∇f(xk)(x−xk) : x ∈ Do.
Bài toán này tương đương với
minn∇f(xk)x: x∈ Do, (2.8) và theo giả thiết thứ hai của bài toán thì(2.8)có lời giải.
2. Tính độ dài bước tk > 0. Giả sử x∗k ∈ D là lời giải (phương án tối ưu) của(2.8). Có hai khả năng xảy ra
a. Trường hợp∇f(xk)(x∗k−xk)≥0. Khi đó, ta có ∇f(xk)(xk−xk) ≥0với mọix∈ D
. Do f lồi nên f(x)− f(xk) ≥ ∇f(xk)(x−xk)với mọix ∈ D. Vì vậy, xk là lời giải cần tìm của bài toán. Dừng thuật toán.
b. Trường hợp ∇f(xk)(x∗k−xk) < 0. Khi ấy, dk = x∗k−xk là hướng giảm của hàm f(x)tạixk. Tìm sốt0đạt cực tiểu của hàm
ϕ(t) = f(xk+tdk)vớit ≥0.
Cũng có thể tính xấp xỉt0nhờ giải phương trình ϕ0(t) = 0. Sau đó, để làm độ dài bước, ta đặttk =min{1,t0}.
3. Xác định xấp xỉ mớixk+1. Chọn điểm xấp xỉ mớixk+1 = xk+tkdk. Tiếp tục quá trình giải như đã nêu trên.
2.3.3. Sự hội tụ của thuật toán
Định lý 2.2. [10]Giả sử quá trình của thuật toán Frank- Wolfe diễn ra vô hạn. Khi đó ta có
a. Dãy
f(xk) giảm dần và tiến tới giá trị cực tiểuµcủa bài toán(2.7).
b. Với mọikthì0≤ f(xk)−µ ≤ ∇f(xk)xk−x∗k.
Như vậy, nếu dừng ở bước lặp kthì nhận được phương án xấp xỉ tối ưuxk với sai số (về giá trị hàm mục tiêu) không vượt quá∇f(xk)xk−x∗k.
Chứng minh. Ta gọi M là tập tất cả các đỉnh của D có mặt trong dãy
x∗k . Dãy x1,x2, ...,xk, ...nằm trong bao lồi cảux1 vàM. Bao lồi này là một tập hợp compac, nên dãy nói trên có một điểm tụ x˜ và do f(x1) > f(x2) > ... > f(xk) > ... nên f(xk) → f(x˜). Do tập hợp các đỉnh D là hữu hạn nên M cũng hữu hạn. Vì vậy trong dãy vô hạn
xk phải tìm được 1 dãy con nxkqovới xkq → x˜khiq → +∞và sao cho tất cả các đỉnhnx∗kqođều trùng nhau. Gọi đỉnh trùng nhau đó làx∗, ta có vớiλcố định(0<λ <1)
f(xkq+λ(x∗−xkq)) ≥ f(xkq+1) ≥ f(xkq+1),
từ đó qua giới hạn khiq→ +∞ta nhận được
f(x˜+λ(x∗−x˜)) ≥ f(x˜).
Và vì điều này đúng với∀λ ∈(0, 1)nên
lim
λ↓0+
f(x˜+λ(x∗−x˜))− f(x˜)
λ = f(x˜)(x∗−x˜) ≥0.
Mặt khác, theo cách xây dựngx∗kq, ta có với mọi x∈ D ∇f(xkq)(x−xkq)≥ ∇f(xkq)(x∗kq−xkq),
cho nên qua giới hạn ta được
∇f(x˜)(x−x˜)≥ ∇f(x˜)(x∗−x˜) ≥0.
Kết hợp với tính lồi của hàm f(x), ta có
f(x)− f(x˜) ≥ ∇f(x˜)(x−x˜)≥0,∀x∈ D.
Như vậy,x˜là điểm cực tiểu của hàm f(x)trênD, nghĩa là f(x˜) = µ =min{f(x): x ∈ D}.
ta lại có với mọix ∈ D
f(x)− f(xk) ≥ ∇f(xk)(x−xk) ≥ ∇f(xk)(x∗k−xk).
Do đó, vớix =x˜
f(xk)−µ ≤ ∇f(xk)(xk−x∗k).
Định lý đã được chứng minh đầy đủ.
2.3.4. Ví dụ minh họa
Tìm cực tiều của hàm f(x) = x21+2x22−16x1−20x2với điều kiện
−2x1−x2 ≤ −2, −x1+2x2 ≤8, x1+x2 ≤10, −x1+x2 ≤ −4, x1 ≥0,x2≥0.
Lời giải.Tính vector gradient của hàm mục tiêu
∇f(x) = ∂f(x) ∂x1 ∂f(x) ∂x2 = 2x1−16 4x2−20 .
Để làm xấp xỉ ban đầu ta chọn điểm x1 = (1; 0)T (x1 nhận được bằng cách giải bài toán tuyến tính minl(x) = x1+x2 với các ràng buộc tuyến tính nêu trên),
f(x1) = −15.
Bước lặpk=1. Tại điểmx1vector gradient∇f(x1) = (−14;−20)T.
1. Tìmd1.Để tìm hướng giảmd1 = d11;d12T ta giải quy hoạch tuyến tính: −14(x1−1)−20(x2−0)→min hay −0, 7x1−x2→min,
với các điều kiện đã cho. Giải bài toán này ta nhận đượcx∗1 = (4; 6)T,vì thếd1=x∗1−x1 = (3; 6)T.
2. Tínht1.Xét tiax= x1+td1vớit ≥0hay
x1 =1+3t;x2 =6tvớit ≥0.
Để xác đinh sốt0, ta tìm cực tiểu của hàm
ϕ(t) = (1+3t)2+2(6t)2−16(1+3t)−20(6t) = 81t2−162t−15.
Dễ dàng tính được cực tiểu của hàm trên bằng cách giải phương trình
ϕ0(t) =0ta nhận đượct0 =1là nghiệm, vì thết1 =min{1,t0}=1.
3. Tínhx2.Điểm xấp xỉ mới tính theo công thức
x2 =x1+t1d1 = (4; 6)T, f(x2) =−56.
Bước lặpk =2. Tính vector gradient tại x2bằng∇f(x2) = (−8; 4)T.
1. Tìm d2. Để tìm hướng giảm d2 == d21;d22T
ta giải quy hoạch tuyến tính:
−8(x1−4) +4(x2−6) →min hay −2x1+x2 →min,
với các điều kiện đã cho. Giải bài toán này ta nhận đượcx∗2 = (7; 3)T,vì thếd2=x∗2−x2 = (3;−3)T.
2. Tínht2.Xét tiax= x2+td2vớit ≥0hay
x2=4+3t;x2=6−3tvớit≥0.
Để xác đinh sốt0, ta tìm cực tiểu của hàm
ϕ(t) = (4+3t)2+2(6−3t)2−16(4+3t)−20(6−3t) =27t2−36t−96.
Dễ dàng tính được cực tiểu của hàm trên bằng cách giải phương trình
ϕ0(t) =0ta nhận đượct0 = 1
3 là nghiệm, vì thết2=min{1,t
0} = 1 3.
3. Tínhx3.Điểm xấp xỉ mới tính theo công thức
x3 =x2+t2d2 = (6; 4)T, f(x3) = −108.
Bước lặpk =3. Tính vector gradient tại x3bằng∇f(x3) = (−4; 4)T.
1. Tìm d3. Để tìm hướng giảm d3 == d31;d32T
ta giải quy hoạch tuyến tính:
−4(x1−6) +4(x2−4) →min(hay −x1−x2 →min).
với các điều kiện đã cho. Giải bài toán này ta nhận đượcx∗3 = (6; 4)T,vì thếd3 = x∗3−x3 = (0; 0)T.Điểmx3 = (6; 4)T là nghiệm tối ưu của bài toán, bởi vì từx3không có hướng, dọc theo hàm mục tiêu giảm.
Vậy fmin = f(6; 4) = −108đạt tại điểmx∗ =x3 = (6; 4)T.