Thuật toán. Tìm x0 ∈ D. Tại bước lặp k(k = 0,1, ...) có xk
Bước 1. Tính ∇f(xk). Nếu ∇f(xk) = 0 thì dừng thuật toán và xk là điểm
dừng. Trái lại, sử dụng phuơng pháp đơn hình để giải bài toán tối ưu tuyến tính
min{h∇f(xk), xi : x ∈ D}. (LPk) thu được nghiệm tối ưu cơ sở uk. Ta xét hai trường hợp:
(i) Nếu
h∇f(xk), uk −xki ≥ 0,
thì kết thúc: xk là điểm dừng. (ii) Nếu
h∇f(xk), uk−xki < 0,
lấy dk := uk −xk là một hướng giảm. Tìm độ dài bước lặp tk theo công thức:
tk = argmin{f(xk +tdk) : 0≤ t ≤1}.
Bước 2. Tính xk+1 := xk+tkdk. Thay k := k+ 1 và quay lại bước lặp k .
Định lí 3.5. (i) f(xk+1) < f(xk), ∀k.
(ii) Nếu thuật toán kết thúc ở bước lặp k, thì xk là điểm dừng. Nếu thuật
toán không kết thúc, thì mọi điểm tụ của dãy {xk} là điểm dừng.
(iii) Nếu thêm điều kiện, f là hàm lồi trên D, thì f(xk) hội tụ giảm về f∗ và ta có
0 ≤f(xk)−f∗ ≤ h∇f(xk), xk−uki, ∀k.
Chứng minh. (i) Vì theo thuật toán, dk là hướng giảm.
(ii) Theo tiêu chuẩn dừng, nếu thuật toán kết thúc ở bước lặp k, thì
h∇f(xk), uk −xki ≥ 0.
Do uk là một lời giải tối ưu của bài toán (LPk), nên ta có
h∇f(xk), x−xki ≥ h∇f(xk), uk−xki ≥ 0, ∀x ∈ D.
Vậy xk là một điểm dừng.
Tiếp theo, giả sử thuật toán không kết thúc. Lấy x∗ là một điểm tụ bất kỳ của dãy {xk} khi đó có một dãy con {xkj} dần đến x∗ khi j → ∞. Do D có hữu hạn các đỉnh, ta có thể giả sử rằng ukj = u∗ với mọi j. Từ
f(xk+1) < f(xk) với mọi k, theo định nghĩa xkj+1 và u∗, ta có
f(xkj+1) < f(xkj+1) ≤ f xkj +t(u∗ −xkj), ∀ 0≤ t ≤1.
Cho j →+∞, từ tính liên tục của hàm f ta được
f(x∗) ≤f (x∗ +t(u∗ −x∗)), ∀ 0 ≤ t≤ 1. Suy ra 0≤ lim t→0+ f (x∗ + t(u∗ −x∗))−f(x∗) t = h∇f(x∗), u∗ −x∗i.
Mặt khác, từ xkj là một lời giải tối ưu của bài toán (LPkj), ta có
h∇f(xkj), u∗ −xkji ≤ h∇f(xkj), x −xkji, ∀x ∈ D.
Lấy giới hạn khi j → +∞, ta được
h∇f(x∗), x−x∗i ≥ 0, ∀x ∈ D.
Vậy x∗ là một điểm dừng.
(iii) Giả sử rằng f là lồi trên D. Do tính lồi,
0≤ h∇f(x∗), x −x∗i ≤ f(x)−f(x∗), ∀x ∈ D.
Hay x∗ là lời giải tối ưu của bài toán (P). Hơn nữa, do uk là nghiệm tối ưu của bài toán (LPk) và f lồi nên tại mỗi bước lặp k ta có
h∇f(xk), uk−xki ≤ h∇f(xk), x∗ −xki ≤ f(x∗)−f(xk),
hay là
f(xk)−f(x∗) ≤ h∇f(xk), xk −uki, ∀k.