2.2.1. Bài toán và hướng giải quyết
Xét bài toán tối ưu lồi với hàm mục tiêu tuyến tính
f(x) = cTx →min, (CTD)
x ∈ D ={x∈ Rn : gi(x) ≤0,i =1, 2, ...,m}.
vớiDlà một tập lồi compac, khác rỗng vàgi(x)với(i=1,m)là các hàm lồi khả vi trên không gian vectorRn.
Sau đây là hướng giải quyết của phương pháp tuyến tính hóa ràng buộc giải bài toán (CTD) do Kelley đề xuất năm 1960 (còn được gọi là phương pháp siêu phẳng cắt Kelley).
Tại mỗi bước lặp (k =1, 2, ...), ta sẽ thực hiên lần lượt các thao tác sau:
• Tập lồi compacDđược thay bằng đa diện lồiDk sao cho D1 ⊃D2⊃...Dk ⊃ Dk+1 ⊃...D.
với
f(x) = cTx →min, (CTDk)
x ∈ Dk.
• Dãy nghiệm tối ưu
xk của(CTDk)hội tụ tới nghiệm của bài toán(CTD)
lim
k→∞cTxk =minncTx: x∈ Do
2.2.2. Thuật toán siêu phẳng cắt Kelley
Nói chung là hướng giải quyết sẽ làm hạn chế dần (thu nhỏ)Dkkhikcàng tăng. Nhờ đó, mà tậpDkdần về tậpD. Khi đó ta sẽ tìm được nghiệm xấp xỉx∗k ∈ Dkmà thỏa mãn các bất đẳng thứcgi(x) ≤0,i =1,m. Từ hướng giải quyết đó ta đi phân tích tiến trình thuật toán dựa trên sơ đồ khối được trình bày sau đây.
Sơ đồ khối của thuật toán
Chọn p điểm ban đầu:x1... xp. p:=1,2,... xp+k∈Dkđạt: min {cTx: x∈Dk} Dừng Đ k:=k+1 Tính: hk,i= gi(xk)(x-xk)+gi(xk) Với:k=1,…,p,i=1,…,m D1={x∈Rn: hk,i≤0}. Đặt: k=1 xp+k∈D Ik={i: gi(xp+k)>0} S Dk+1=Dk ∩ {x∈Rn: gi(xk+p)(x-xk+p)+gi(xk+p)≤ 0}
Hình 2.1: Sơ đồ khối phương pháp siêu phẳng cắt Kelley.
Tiến trình của thuật toán
Bước 1. (Xây dựng đa diện lồi ban đầu D1 ∈ D). Chọn tùy ý p điểmx1,x2, ...,xp với p ≥1và dựng tại mỗi điểmxkđã chọn(k=1, 2, ..,p)các siêu phẳng sao cho mỗi siêu phẳng tiếp xúc với một mặty= gi(x)vớii =1, 2, ...,mtức là ta đi lập các hàm tuyến tính (afin)
Do hàmgi(x)lồi nên
hjk(x) =gi(x(k)) +∇gi(x(k))x−x(k)+gi(x(k)) ≤gi(x), (2.1) ∀x ∈Rn,k =1,p;i=1,m.
ĐặtD1 =
x∈ Rn : hik ≤0,k =1,p;i=1,m .Với mỗi x ∈ Dthì fi(x) ≤ 0
với∀i, suy rahik ≤0nên D1⊇ D.
Bước 2. (Bước lặp k=1,2,...)
(a) Ở bước lặpk, tìm điểmxk+p ∈ Dknghiệm tối ưu của bài toán quy hoạch tuyến tính
cTxk+p =minncTx: x∈ Dko.
(b) Nếuxk+p ∈ Dthìxp+klà nghiệm tối ưu của bài toánCTDvà dừng thuật toán vìD ⊂Dk và
cTxk+p =minncTx: x∈ Dko≤minncTx: x∈ Do ≤minnDc,x(p+k)Eo.
(c) Nếu x(p+k) ∈/ D thìx(p+k) vi phạm ít nhất một ràng buộc gi(x) ≤ 0nào đó. Ký hiệu
Ik =ni∈ {1, 2, ...,m} : gi(x(p+k))>0o.
Đặt
Dk+1= Dk∩nx ∈ Rn : ∇gi(x(p+k))(x−x(k)) +gi(x(p+k)) ≤0,i ∈ Iko.
(2.6)
(d) Đặtk ←k+1, quay lại bước k.
1. Xét bài toán quy hoạch lồi
min{f(x) : gi(x)≤0,i =1, 2, ...,m}, (CP) với các hàm f, gi lồi có thể đưa về bài toán với hàm mục tiêu tuyến tính nhờ thêm vào bài toán một biến mớixn+1và một ràng buộc mới f(x)≤ xn+1. Xét bài toán mới
min
xn+1 : gi(x)≤0,i=1,m,gm+1(x) ≤ , (CP1) vớigm+1(x) = f(x)−xn+1. Rõ ràng, hai bài toán(CP)và(CP1)tương đương với nhau theo nghĩawlà nghiệm tối ưu của(CP)khi và chỉ khi(w, f(w))là nghiệm tối ưu của(CP1).
2. Cũng có thể xây dựng đa diện ban đầu D1 ⊃ D theo một cách khác. Tìm p =n+1sốα1,α2, ...,αn vàβ(bằng trực quan hay bằng một cách nào đó) sao cho
αj ≤minxj : x∈ D ,j =1,n, β ≥max{x1+x2+...+xn : x∈ D}.
Chẳng hạn, đặtαj = −Mvới mọi jvàβ= n.Mvới M>0đủ lớn. Xây dựng đa diện
D1 =x ∈ Rn : x1+x2+...+xn ≤β,xj ≥αj,j=1,n .
Dễ thấy rằng D1 là một đơn hìnhn− chiều chứaD vàD1 cón+1đỉnh là xn+1 = (α1,α2, ...,αn), đỉnhxjnhận từxn+1bằng cách thayαjbởiβ, j=1,n.
3. Thay vào(2.6)ta có thể đặt
Dk+1= Dk∩nx ∈ Rn : ∇gi∗(xp+k)(x−xp+k) +gi∗(xp+k) ≤0o, trong đó gi∗(xp+k) = max
gi(xp+k) : 1≤i≤m , nghĩa là đưa vào Dk bất đẳng thức tương ứng ràng buộc bị vi phạm nhiều nhất.
4. Bài toánCPk+1nhận đượcCPkbằng cách thêm vào một hay một số ràng buộc bất đẳng thức tuyến tính, vì thế để giảiCPk+1ta có thể dùng thuật toán đơn hình đối ngẫu, xuất phát từ nghiệm tối ưu đã cóxp+k củaCPk. Tuy vậy, tổng số ràng buộc thêm vào tăng dần là điểm hạn chế chủ yếu của phương pháp này.
5. Các bất đẳng thức thêm vàoDk sẽ cắt bỏ một phần củaDk chứa điểmxp+k, bởi vì
∇gi(xp+k)(xp+k−xp+k) +gi(xp+k) = gi(xp+k) >0,∀i∈ Ik. Vì thế, các siêu phẳng
Hki(x) =nx ∈ Rn : gi(xp+k)(x−xp+k) +gi(xp+k) =0o,i ∈ Ik,
được gọi là các siêu phẳng cắt và tách đa diện lồiDk+1với điểmxp+k ∈/ Dk+1. Tên gọi phương pháp siêu phẳng cắt bắt nguồn từ đó.
6. Ở mọi bước k, ta luôn có ∇gi(xp+k) 6= 0, với mọi i ∈ Ik, bởi vì nếu có một i ∈ Ik sao cho∇gi(xp+k) =0thì dogilà hàm lồi nên vớiiđó ta có
gi(x)≥ gi(xp+k) +∇gi(xp+k)(xp+k−xp+k) = gi(xp+k)>0,∀x∈ Rn,
và điều này cho thấy miền chấp nhận đượcDcủa bài toán(LCP)bằng rỗng.
Chú ý. Nếu g1,g2, ...,gm là các hàm lồi khả vi trên Rn và miền chấp nhận được D của bài toán (LCP) là tập lồi compac khác rỗng thì dãy
xk nhận được trong thuật toán trên có một dãy connxkqohội tụ tới nghiệm tối ưu của bài toán, theo nghĩa
lim
2.2.3. Sự hội tụ của thuật toán
Theo giả thiết của hàm lồi, phương pháp siêu phẳng cắt lồi toàn cục hội tụ có thể áp dụng các định lý hội tụ dùng để chứng minh điều này, nhưng để dễ dàng hơn trong trường hợp này ta đi chứng minh trực tiếp.
Định lý 2.1. [10]Cho các hàm lồi gi; vớii = 1, 2, ...,p. khả vi liên tục và giả sử thuật toán siêu phẳng cắt tập lồi tạo ra chuỗi các điểm{wk}, bất kỳ điểm giới hạn nào của chuỗi đều là nghiệm của bài toán tối ưu.
Chứng minh. Giả sử{wk} vớik ∈ K là một dãy con hội tụ của w, lấy thêm một dãy con nếu cần thiết chúng ta giả sử rằng chỉ số itương ứng ở bước 2của thuật toán được cố định trong suốt quá trình của thuật toán. Nếuk ∈ K,k0 ∈ K,k0 > k thì ta có
gi(wk) +∇gi(wk)(wk0−wk) ≤0, điều này có nghĩa rằng
gi(wk)≤ |∇gi(wk)| |(wk0 −wk)|. (***) Từ đó|∇gi(wk)|là giới hạn vớik ∈ K vế phải của(∗ ∗ ∗) dần về0khik,k0 dần về
∞. Vế trái cảu(∗ ∗ ∗)dần đến gi(w). Như vậygi(w) ≤ 0và chúng ta thấy rằngw là nghiệm của bài toán tối ưu.
Nếu f∗ là giá trị tối ưu cảu bài toán thì ta cócTwk ≤ f∗ với∀k. Từ đó wk thu được bằng cách giảm tối thiểu trên một tập có chứaS. Do đó, bằng ánh xạ liên tục cTw≤ f∗suy rawlà cực tiểu cần tìm.
2.2.4. Ví dụ minh họa
Tìm cực tiểu của hàm số
vớix ∈ D =nx ∈ R2 : (x1−3)2+ (x2−2)2−9≤0,−x1+ (x2−2)2+1≤0o. Bài toán này cón=2biến,m=2ràng buộc và
g1(x)≡ g1(x1,x2) = (x1−3)2+ (x2−2)2 ≥0, g2(x)≡ g2(x1,x2) = −x1+ (x2−2)2+1 ≤0.
Ta thấy rằng đây là bài toán quy hoạch lồi với hàm mục tiêu tuyến tính. Ta giải bài toán theo phương pháp đã trình bày ở trên. Trước tiên tính
∇g1(x) = (2x1−6; 2x2−4)T,∇g2(x) = (−1; 2x2−4)T.
Bước 1. Xây dựng đa diện ban đầuD1 ⊃D. Chọn ba điểm(p=3) :
x1= (2; 0)T,x2 = (2; 4)T vàx3= (6; 2)T. Ta xét lần lượt từng điểm 1. Vớix1 = (2; 0)T. Tính • ∇g1(x1) = (−2;−4)T,∇g2(x1) = (−1;−4)T. • g1(x1) =−4,g2(x1) =3. • h11 =∇g1(x1)(x−x1) +g1(x1) =2(−x1−2x2) ≤g1(x)≤0. • h12 =∇g2(x1)(x−x1) +g2(x1) =−x1−4x2+5 ≤g2(x) ≤0. 2. Vớix2 = (2; 4)T. Tính • ∇g1(x2) = (−2; 4)T,∇g2(x2) = (−1; 4)T. • g1(x2) =−4,g2(x2) =3. • h21 =∇g1(x2)(x−x2) +g1(x2) =2(−x1+2x2−8) ≤g1(x)≤0. • h22 =∇g2(x2)(x−x2) +g2(x2) =−x1+4x2−11 ≤g2(x) ≤0. 3. Vớix3 = (6; 2)T. Tính • ∇g1(x3) = (6; 0)T,∇g2(x3) = (−1; 0)T. • g1(x3) =0,g2(x3) = −5.
• h31 =∇g1(x3)(x−x3) +g1(x3) =6(x1−6) ≤g1(x)≤0.
• h32 =∇g2(x3)(x−x3) +g2(x3) =−x1+1 ≤g2(x) ≤0.
Đa diện lồiD1⊃ Dđược xác định bởi
D1≡nx ∈ R2 : hk,i(x) ≤0,k =1, 2, 3;i=1, 2o.
Hai ràng buộch11(x)vàh21là thừa. Do đó đa diệnD1được xác định D1 ≡nx ∈ R2 : x1+4x2≥5,−x1+4x2 ≤11, 1≤x1≤6o.
Bước 2. Bước lặpk=1, 2, ...
Bước lặp 1. Lần lượt theo trình tự sau 1. Giải quy hoạch tuyến tính(CTD1)
f(x) = x1+2x2→min,
với điều kiện
x1+4x2 ≥5, x1+4x2 ≤11, x1 ≤6, x1 ≥1.
nghiệm tối ưu của bài toánCTD1là x4 = (1, 1)T và f(x4) =3.
2. Do g1(x4) = −4vàg2(x4) = 1 > 0nên I1 = {2} và ta thực hiên bước tiếp theo.
3. Ta có∇g2(x4) = (−1,−2)T,
∇g2(x4)(x−x4) +g2(x4) = −(x1−1)−2(x2−1) +1 =−x1−2x2+4.
Đặt
D2 =D1∩nx∈ R2: ∇g2(x4)(x−x4) +g2(x4)≤0o =D1∩nx∈ R2: x1+x2≥4o.
Bước lặp 2. Tương tự như bước lặp1
1. Giải bài toán quy hoạch tuyến tính(CTD2)
min{f(x) =x1+2x2: x∈ D2}.
Nghiệm tối ưu bài toán(LP2)vàx5= (3;1 2)
T, f(x5) = 4.
2. Do g1(x5) = −6, 75vàg2(x5) = 0, 25 > 0 nên I2 = {2} và ta thực hiện bước tiếp theo.
3. Ta có∇g2(x5) = (−1,−4)T,
∇g2(x5)(x−x5) +g2(x5) = −x1−4x2+6, 75.
4. Đặt
D3 =D2∩nx∈ R2: ∇g2(x5)(x−x5) +g2(x5)≤0o
=D2∩nx∈ R2: x1+4x2≥6, 75o.
Đặt lại giá trịk:=k+1=3và chuyển sang bước lặpk=3.
Bước lặp 3. Lặp lại tính toán như bước2ta có 1. Giải bài toán quy hoạch tuyến tính(CTD3)
min{f(x) =x1+2x2: x∈ D3}.
Nghiệm tối ưu bài toán(LP3)vàx6= (2, 5; 0, 75)T, f(x6) =4.
2. Do g1(x6) = −7, 1875vàg2(x6) = 0, 0625 > 0nên I2 = {2} và ta thực hiện bước tiếp theo.
3. Ta có∇g2(x6) = (−1,−2, 5)T,
∇g2(x6)(x−x5) +g2(x6) = −(x1−2, 5)−2, 5(x2−0, 75) +0, 0625
4. Đặt
D4 =D3∩nx∈ R2: ∇g2(x6)(x−x6) +g2(x6)≤0o
=D2∩nx∈ R2: x1+x2≥4, 4375o.
Đặt lại giá trịk:=k+1=4và chuyển sang bước lặpk=4.
Lời giải của bài toán ở ví dụ trên là điểm (2, 1)T và fmin = 4. Thực tế, ta có thể dừng ở bước lặp thứ 2 bởi vì thuật toán đã tìm được giá trị tối ưu là bằng
4, nhưng phải qua rất nhiều bước nữa ta mới có điểm tối ưu xấp xỉ(2, 1)T (ta sẽ theo dõi ở bảng kết quả sau khi chạy thuật toán trên máy để rõ hơn).
2.2.5. Chương trình giải ví dụ thuật toán Kelley
Maple 16 là một công cụ hỗ trợ rất tốt trong quá trình chạy kiểm thử thuật toán dùng trong tìm hiểu, nghiên cứu khoa học. Sau đây là chương trình chạy ví dụ vừa được giải như trên.
Đầu vào: f(x) = f(x1,x2) = x1+2x2với
x ∈ D=nx ∈ R2 : (x1−3)2+ (x2−2)2−9≤0,−x1+ (x2−2)2+1≤0o. Đầu ra: Nghiệm tối ưu xấp xỉ của bài toán và giá trị tối ưu tại đó.
> restart;
> with(linalg); with(LinearAlgebra); with(student); with(geometry); with(simplex); with(combinat); # Nhập hàm hai biến
> f := proc (x, y) options operator, arrow; x+2*y end proc; > Digits := 4;
> gi := array(1 .. 2); gr := array(1 .. 2); D := array(0 .. 30); > for i to 2 do gr[i] := array(1 .. 2) end do;
> gi[1] := proc (x, y) options operator, arrow; (x-3)^2+(y-2)^2-9 end proc; > gi[2] := proc (x, y) options operator, arrow; -x+(y-2)^2+1 end proc; > D[0] := {gi[1](x, y) <= 0, gi[2](x, y) <= 0};
# Tạo thủ tục tính đạo hàm riêng của f > dhr1x := proc (a)
local x, y, g; g := diff(gi[1](x, y), x); x := a; eval(g) end proc;
> dhr2x := proc (b)
local x, y, g; g := diff(gi[2](x, y), x); x := b; eval(g) end proc;
> dhr1y := proc (c)
local x, y, g; g := diff(gi[1](x, y), y); y := c; eval(g) end proc;
> dhr2y := proc (d)
local x, y, g; g := diff(gi[2](x, y), y); y := d; eval(g) end proc;
# Buoc dau. Chon 3 diem (p:=3)
> p := 3; ng := array(1 .. 30); h := array(1 .. 30); dk := array(1 .. 30); Ik := array(1 .. 30);
for i to 30 do
ng[i] := array(1 .. 2); h[i] := array(1 .. 2) end do;
> ng[1][1] := 2; ng[1][2] := 0; eval(ng[1]); ng[2][1] := 2; ng[2][2] := 4; eval(ng[2]); ng[3][1] := 6; ng[3][2] := 2; eval(ng[3]);
# xet diem x[1]=2,0 > v := array(1 .. 2); > for i to 3 do
v[1] := x-ng[i][1]; v[2] := y-ng[i][2];
gi[1](ng[i][1], ng[i][2]); gr[1][1] := dhr1x(ng[i][1]); gr[1][2] := dhr1y(ng[i][2]);
h[i][1] := gr[1][1]*v[1]+gr[1][2]*v[2]+gi[1](ng[i][1], ng[i][2]); gi[2](ng[i][1], ng[i][2]);
gr[2][1] := dhr2x(ng[i][1]); gr[2][2] := dhr2y(ng[i][2]);
h[i][2] := gr[2][1]*v[1]+gr[2][2]*v[2]+gi[2](ng[i][1], ng[i][2]) end do; > D[1] := {h[1][1] <= 0, h[1][2] <= 0, h[2][1] <= 0, h[2][2] <= 0, h[3][1] <= 0, h[3][2] <= 0}; #D[1] := {x >= 1, x+4*y >= 5, x <= 6, -x+4*y <= 11}; # Buoc lap. k=1; x^(p+k) > k := 1; > minimize(f(x, y), D[1]); > tntg := minimize(f(x, y), D[1]); > assign(tntg); > ng[k+p][1] := x; > ng[k+p][2] := y; > dk[k] := max(gi[1](ng[k+p][1], ng[k+p][2]), gi[2](ng[k+p][1], ng[k+p][2])); > unassign(’x’); unassign(’y’);
# Dieu kien dk[k] khong thuoc D[0] tuong duong voi dk dc viet duoi day > Digits := 4;
minimize(f(x, y), D[k]); tntg := minimize(f(x, y), D[k]); assign(tntg); ng[k+p][1] := x; ng[k+p][2] := y; unassign(’x’); unassign(’y’); f(ng[k+p][1], ng[k+p][2]); dktg := max(gi[1](ng[k+p][1], ng[k+p][2]), gi[2](ng[k+p][1], ng[k+p][2])); if gi[1](ng[k+p][1], ng[k+p][2]) > 0 then Ik[k] := {1}; gr[1][1] := dhr1x(ng[k+p][1]); gr[1][2] := dhr1y(ng[k+p][2]); v[1] := x-ng[k+p][1]; v[2] := y-ng[k+p][2]; htg := gr[1][1]*v[1]+gr[1][2]*v[2] +gi[1](ng[k+p][1], ng[k+p][2]); D[k+1]:={htg <= 0};D[k+1]:=‘union‘(D[k],D[k+1]) else if gi[2](ng[k+p][1], ng[k+p][2]) > 0 then Ik[k] := {2}; gr[2][1] := dhr2x(ng[k+p][1]); gr[2][2] := dhr2y(ng[k+p][2]); v[1] := x-ng[k+p][1]; v[2] := y-ng[k+p][2]; htg := gr[2][1]*v[1]+gr[2][2]*v[2]+ gi[2](ng[k+p][1], ng[k+p][2]); D[k+1]:={htg <= 0}; D[k+1]:=‘union‘(D[k],D[k+1]) end if end if; k := k+1; dk[k] := dktg end do;
Ta có kết quả của chương trình được đưa vào bảng tóm tắt dưới đây Bước k Xấp xỉ mớix3+k Tập Ik f(x3+k) 1 x4= (1; 1)T {1, 2} 3 2 x5 = (3; 0, 5)T {2} 4 3 x6= (2, 5; 0, 75)T {2} 4 4 x7= (2, 25; 0, 875)T {2} 4 4 x8= (2, 125; 0, 9375)T {2} 4 5 x9= (2, 0625; 0, 96875)T {2} 4 6 x10 = (2, 03165; 0, 984375)T {2} 4 7 x11 = (2, 015625; 0, 9921875)T {2} 4 9 x12 = (2, 0078125; 0, 99609375)T {2} 4 10 x13 = (2, 00390625; 0, 998046875)T {2} 4 11 x14 = (2, 001953125; 0, 9990234375)T {2} 4 12 x15 = (2, 0009765625; 0, 99951171875)T {2} 4 13 x16 = (2, 00048828125; 0, 999755859375)T {2} 4 14 x17 = (2, 000244140625; 0, 9998779296875)T {2} 4 15 x18 = (2, 0001220703125; 0, 99993896484375)T {2} 4 16 x19 = (2, 00006103515625; 0, 999969482421875)T {2} 4
Bảng 2.1: Kết quả tính toán trong các bước lặp
Từ bảng kết quả, nếu kcàng tăng thì gía trị xk càng tiến gần tới giá trị nghiệm đúng(2, 1)T. Nên nghiệmxkcủa bài toán trên sẽ hội tụ tới(2, 1)Tkhik→∞. Chính vì lý do đó để dừng lại số bước lặpk(nếu không sẽ vô hạn) trong chương trình lập trình ta thay thế điều kiện dừng(dk[k]>0)bằng(dk[k]>10(−10)).
2.3. Tuyến tính hóa mục tiêu2.3.1. Bài toán và hướng giải quyết 2.3.1. Bài toán và hướng giải quyết
Xét bài toán qui hoạch lồi với ràng buộc tuyến tính
µ =min{f(x): Ax≤b,x≥0}, (2.7) trong đó f(x) = f(x1,x2, ...,xn)là hàm lồi, A= aijm×n,b ∈ Rm,x ∈ Rn là vector biến cần tìm. Ký hiệuD ={x∈ Rn : Ax ≤b,x ≥0}.Ta giả thiết:
1. Hàm mục tiêu f(x)khả vi liên tục.
2. Với bất kỳa∈ Dhàm tuyến tínhh∇f(a),xibị chặn dưới trong miềnD(điều này chắc chắn xảy ra nếuDlà một đa diện lồi).
Để giải quyết bài toán trên ta dùng tới thuật toán Frank- Wolfe, hướng giải quyết đó là xây dựng dãy điểm x1,x2, ...,xk, ...với∀xk ∈ D f(xk) giảm dần theo k và
f(xk) &µ =min{f(x): x∈ D}.
2.3.2. Thuật toán Frank- Wolfe
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 đó,