Notes for Optimization Chapter 1 and 2

15
Optimization Vietnamese Notes PHAM Hoai Vu [email protected] Ngày 10 tháng 10 năm 2011

description

My own private notes on Optimization. It is in Vietnamese.

Transcript of Notes for Optimization Chapter 1 and 2

Page 1: Notes for Optimization Chapter 1 and 2

OptimizationVietnamese Notes

PHAM Hoai [email protected]

Ngày 10 tháng 10 năm 2011

Page 2: Notes for Optimization Chapter 1 and 2

1 Introduction

1.1 Mathematical Programming, Optimization và OperationalResearch

George Dantzig (1914 - 2005), cùng với Leonid Kantorovich và John von Neumann, đượccoi là cha đẻ của các chương trình tuyến tính (Linear Programming). Bản thân Dantzig cũngcó vài "truyền kì" hay ho, nhưng thôi từ từ để sau hẵng kể.Trở lại với Linear Programming, chữ programming ở đây không nên nhầm lẫn với chương

trình máy tính ngày nay. Linear Programming nói một cách đơn giản, là lĩnh vực nghiêncứu các phương pháp toán học để tìm kết quả tốt nhất trong một mô hình toán học chotrước, trong đó mô hình và các ràng buộc được biểu diễn bằng các hàm tuyến tính. Trongtrường hợp tổng quát với hàm mục tiêu và các ràng buộc bất kì, lĩnh vực này được gọichung là Mathematical Programming (vào thời của Dantzig, chương trình máy tính đượcgọi là codes).Bắt đầu từ những năm 1930, đến thế chiến thứ 2 thì những nghiên cứu này chỉ phục vụ

chủ yếu trong quân đội. Sau khi chiến tranh kết thúc, các ngành công nghiệp cũng bất đầuquan tâm và ứng dụng rộng rãi các kĩ thuật này.Ngày nay, ta gọi nó là Optimization. Nói rộng hơn, lĩnh vực nghiên cứu cấu hình tối ưu

cho các hệ thống phức tạp, trong điều kiện tài nguyên hạn chế, được gọi là OperationalResearch. Như vậy Mathematical Programming (hay ngày nay gọi là Optimization) là mộtlĩnh vực nhỏ trong Operational Research. Operational Research được ứng dụng rộng rãi trongkinh tế, quốc phòng... chứ không chỉ gói gọn trong khoa học máy tính. Chẳng hạn bài toántối ưu lịch trình giao hàng đến đại lí là một ví dụ tiêu biểu cho Operational Research.Nói chung các vấn đề trong Operational Research đều có chung "vòng đời" gồm các bước

như sau:Rất nhiều phương pháp optimization khác nhau đã được phát triển để áp dụng trong bước

2 và 3 của vòng đời này. Ta sẽ lần lượt nghiên cứu chúng.

Algorithm 1.1 Vòng đời của các vấn đề trong Operational Research

1. Định nghĩa bài toán2. Mô hình hóa bằng toán học, định nghĩa các biến, hàm mục tiêu và các ràng buộc, thôngthường bài toán sẽ có dạng min f (x) s.t. x ∈ X.3. Tối ưu mô hình, sử dụng phương pháp thích hợp.4. Kiểm tra (validate) mô hình, xem lời giải của bước 3 có đúng không. Nếu sai thì sửa môhình và giải lại.5. Cài đặt, ứng dụng mô hình

2

Page 3: Notes for Optimization Chapter 1 and 2

1.2 Dạng tổng quát của bài toán tối ưu

Có rất nhiều cách phát biểu dạng chung của một bài toán tối ưu, tuy nhiên ta sẽ sử dụngdạng sau:

(P )

minx∈Rn

f (x) Objective function

subject to: h (x) = 0 Equality contraints

g (x) ≤ 0 Inequality contraints

x ∈ X Variable domain

Trong đó:x ∈ Rn là biến cần tối ưu, f : Rn → R, h : Rn → Rm, g : Rn → Rl, X ⊆ Rn.Thông thường các hàm f , g và h phải khả vi và "mượt" (theo tiêu chuẩn Lipschitz chẳng

hạn) để đảm bảo các tính chất tốt của các thuật toán tối ưu.Ngoài ra, đương nhiên

maxx∈Rn

f (x) = − minx∈Rn

−f (x)

nghĩa là tìm x sao cho f(x) cực đại cũng chính là tìm x để −f(x) cực tiểu. Do đó trongdạng chuẩn của bài toán tối ưu, ta sẽ chỉ xét bài toán tìm cực tiểu.Ta còn có thể biểu diễn tương đương dạng chung của bài toán tối ưu theo cách sau:

(P ) minxf (x) |x ∈ Ω

với Ω = x ∈ X |h (x) = 0, g (x) ≤ 0 gọi là feasible set.Các cách biểu diễn này là tương đương nhau, và ta sẽ sử dụng dạng thứ 2 trong suốt bài

này.

1.3 Phân loại các bài toán tối ưu

Tùy theo dạng hàm mục tiêu và các ràng buộc, và tùy theo tiêu chí, có rất nhiều cách phânloại các bài toán tối ưu. Sở dĩ phải phân loại bài toán tối ưu là vì các phương pháp tối ưuhiện có chỉ làm việc tốt trên một dạng bài toán nhất định. Do đó việc phân loại là cần thiết

để chọn phương pháp giải thích hợp cho mỗi bài toán. Ở đây ta sẽ phân loại theo 2 tiêu chílà dựa vào tính chất của đáp án và dựa vào cách mô hình hóa bài toán.Dựa vào đáp án của bài toán tối ưu, ta có thể chia làm 4 loại như sau:

1. Bài toán có lời giải tối ưu: đó là khi tập giá trị của f(x) với x thuộc feasible setf (x) |x ∈ Ωbị chặn dưới.Ví dụ xét bài toán minx

f (x) = x2

1 + x22|x ≥ 0

. Với x ≥ 0 thì f (x) = x2

1 +x22 ≥ 0

nên bài toán có lời giải tối ưu là f (x) = 0 khi x1 = x2 = 0.

2. Bài toán bất khả thi (infeasible problem): khi feasible set Ω là tập rỗng.Xét bài toán minx

f (x) = x2

1 + x22|x1 + x2 ≤ −1,x ≥ 0

, rõ ràng khi x ≥ 0 thì

3

Page 4: Notes for Optimization Chapter 1 and 2

x1 + x2 luôn lớn hơn 0, do đó feasible set trong trường hợp này là tập rỗng, bài toánkhông có lời giải.

3. Unbounded problem: khi tập f (x) |x ∈ Ω không bị chặn dưới.Xét bài toán minx

f (x) = −x2

1 − x22|x ≥ 0

. Rõ ràng vì x ≥ 0 nên x càng lớn thì

f (x) = −x21 − x2

2 càng nhỏ, tập giá trị của f (x) vì thế không bị chặn dưới, do đómặc dù feasible set không rỗng nhưng bài toán này không có lời giải hữu hạn.

4. Tồn tại ít nhất một điểm tối ưu toàn cục : điều này được đảm bảo nếu f là hàm liêntục và Ω là tập compact.

Tuy nhiên một cách phân loại phổ biến hơn là dựa vào cách mô hình hóa bài toán, vì theođó ta có thể chọn phương pháp tối ưu phù hợp. Theo đó có thể chia thành các dạng bàitoán tối ưu sau:

1. Linear programming(P ) min

x

cTx|x ∈ Ω

Ω = x ∈ Rn|Ax = b, l ≤ x ≤ u

Trong dạng này, cả hàm f(x) và ràng buộc Ax = b đều có dạng tuyến tính, do đó mớicó tên là chương trình tuyến tính. Đây chính là dạng đầu tiên mà Dantzig đã công bốnhững năm 1930, 1940.

2. Linear Network Flow Problem

(P ) minx

cTx|x ∈ Ω

Ω = x ∈ Rn|Ax = b, l ≤ x ≤ u,A is the arc-node matrix of a graph

Giống trường hợp ở trên, nhưng khi A là ma trận biểu diễn một đồ thị nào đó, thì nhờmột số tính chất của đồ thị, ta có thể có những phương pháp giải tốt hơn nhiều. Cácbài toán đường đi ngắn nhất, lát cắt cực tiểu v.v... trong đồ thị thuộc loại này, và đãđược nghiên cứu nhiều trong Lí thuyết đồ thị.

3. Linear Mixed Integer Programming

(P ) minx

cTx+ dT y|

[xy

]∈ Ω

Ω =

x ∈ Rnx , y ∈ Zny |Ax+ Ty = b, l ≤

[xy

]≤ u

Trong trường hợp này, tập xác định của x và y khác nhau nên ta gọi là mixed, ngoàira do y thuộc không gian Zn nên gọi là integer. Cuối cùng, hàm mục tiêu và điều kiệncủa bài toán đều là hàm tuyến tính nên gọi linear.

4

Page 5: Notes for Optimization Chapter 1 and 2

4. Nonlinear unconstrainted(P ) min

x∈Rnf (x)

Trường hợp tổng quát, hàm mục tiêu f(x) không phải là tuyến tính thì ta gọi lànonlinear programming. Trong trường hợp này không có cả điều kiện ràng buộc nêngọi là unconstrainted.

5. Nonlinear with Simple Bounds

(P ) minxf (x) |l ≤ x ≤ u

Hàm mục tiêu tổng quát, biến bị chặn trên và chặn dưới.

6. Nonlinear with linear constraints

(P ) minxf (x) |x ∈ X ;X = x ∈ Rn|Ax = b, l ≤ x ≤ u

Hàm mục tiêu tổng quát, biến bị chặn và ràng buộc bằng hệ phương trình tuyến tính.

7. Nonlinear with general constraints

(P ) minxf (x) |x ∈ X ;X = x ∈ Rn|h (x) = 0, g (x) ≤ 0

Đây chính là trường hợp tổng quát, cả hàm mục tiêu và ràng buộc đều không tuyếntính.

1.4 Một số kĩ thuật biến đổi

Bài toán tối ưu trong thực tế thường không có dạng chuẩn mực như đã nói ở phần trên,tuy nhiên bằng một số biến đổi khéo léo, ta có thể đưa chúng về dạng chuẩn mực. Sau đâylà một số kĩ thuật như vậy.

1.4.1 Đẳng thức -> Bất đẳng thức

Ta có thể chuyển một ràng buộc ở dạng đẳng thức thành 2 ràng buộc bất đẳng thức, và bàitoán tối ưu mới vẫn tương đương với bài toán ban đầu.Ví dụ ràng buộc

2x1 + 3x2 − x3 = 5

là tương đương với:

2x1 + 3x2 − x3 ≤ 5

2x1 + 3x2 − x3 ≥ 5

5

Page 6: Notes for Optimization Chapter 1 and 2

1.4.2 Bất đẳng thức -> đẳng thức

Cũng có thể thực hiện theo chiều ngược lại bằng cách sử dụng thêm biến phụ.Ví dụ ràng buộc

2x1 + 3x2 − x3 ≤ 5

là tương đương với

2x1 + 3x2 − x3 + w1 = 5

w1 ≥ 0

Mỗi w1 như thế gọi là một biến lỏng (slack variable), với mỗi đẳng thức ta sẽ thêm mộtbiến như thế, và bài toán mới sẽ vẫn tương đương với bài toán ban đầu.

1.4.3 Biến tự do -> biến ràng buộc

Giả sử trong bài toán tối ưu có một biến tự do (không bị ràng buộc bởi bất kì đẳng thức/bấtđẳng thức nào), ta vẫn có thể viết ràng buộc cho chúng bằng cách thêm biến phụ.Giả sử y1 là biến tự do (giá trị của nó biến thiên trong khoảng −∞ đến ∞), ta có thể

viết:

y1 = y2 − y3

y2, y3 ≥ 0

1.4.4 Cực đại (Mamimize) -> cực tiểu (minimize)

Dạng chuẩn mực chỉ quan tâm đến tìm cực tiểu, nhưng ta biết rằng max f (x) = −min−f (x),do đó có thể chuyển 1 bài toán tối ưu cực đại thành cực tiểu một cách dễ dàng.Chẳng hạn để tìm max 6x1 + 5x2 − 3x3, ta tìm y = min−6x1 − 5x2 + 3x3, sau đó giá

trị cực đại sẽ là −y.

1.5 Tối ưu toàn cục và tối ưu cục bộ

1.6 Modelling language: AMPL

1.7 Conclusion

6

Page 7: Notes for Optimization Chapter 1 and 2

2 Unconstrained Nonlinear Optimization -Thuật toán Line search

Cho một bài toán tối ưu phi tuyến không ràng buộc (Unconstrained Nonlinear OptimizationProblem - UNOP)

minx∈Rn

f (x)

tư tưởng chung là ta sẽ phát sinh dãyxk∞k=0

sao cho nó hội tụ về lời giải tối ưu x∗.

Theo đó, thuật toán tổng quát là:Như vậy có 3 vấn đề cần làm rõ trong thuật toán này là:

• Stopping criterium nào là phù hợp, nghĩa là phải nghĩ ra điều kiện để quyết định lúcnào thì nên dừng thuật toán,

• Tìm descent direction như thế nào, và cuối cùng

• Tìm steplength như thế nào.

Bước khởi tạo cũng rất quan trọng, vì nó có thể quyết định kết quả cuối cùng của thuậttoán. Tuy nhiên thông thường không có cách nào để biết khởi tạo như thế nào là tốt, dođó người ta sẽ thực hiện thuật toán nhiều lần với các điểm khởi tạo khác nhau, và chọn kếtquả tốt nhất.Ba phần còn lại của bài sẽ tương ứng với 3 vấn đề đã nêu trên.

Algorithm 2.1 Thuật toán tổng quát cho UNOP

1. Khởi tạo xk ∈ X = Rn, k = 0.

2. Nếu xk thoả điều kiện dừng (stopping criterium) nào đó thì gán x∗ = xk và dừng.

3. Nếu xk không thỏa điều kiện trên thì tịnh tiến xk đến một điểm mới tốt hơn (thỏamãn hàm mục tiêu tốt hơn điểm hiện tại). Cụ thể ta sẽ:

a) Tìm hướng giảm (descent direction) dk.

b) Tìm độ dài bước (steplength) αk.

c) Cập nhật xk+1 := xk + αkdk, k := k + 1. Quay lại bước 2.

7

Page 8: Notes for Optimization Chapter 1 and 2

2.1 Stopping criterium

Có 3 điều kiện sau:

• Điều kiện cần của đạo hàm bậc nhất:Nếu x∗ là điểm tối ưu cục bộ và f (x) khả vi liên tục trên một lân cận mở của x∗ thì∇f (x∗) = 0.

• Điều kiện cần của đạo hàm bậc 2:Nếu x∗ là điểm tối ưu cục bộ, f (x) và ∇2f (x) khả vi liên tục trên một lân cận mởcủa x∗ thì ∇f (x∗) = 0 và ma trận Hessian ∇2f (x∗) là ma trận positive semidefinite.

• Điều kiện đủ của đạo hàm bậc 2:Giả sử ∇2f (x) liên tục trên một lân cận mở của x∗ và ∇f (x∗) = 0 và ma trận Hessian∇2f (x∗) là positive definite. Khi đó x∗ là điểm tối ưu chặt (strict local minimizer)của f (x).

Nói một cách ngắn gọn (bỏ qua các điều kiện):

• Nếu ∇f (x∗) = 0 thì x∗ là tối ưu cục bộ.

• Nếu ∇f (x∗) = 0 và ∇2f (x∗) là positive semidefinite thì x∗ là tối ưu cục bộ.

• Nếu ∇f (x∗) = 0 và ∇2f (x∗) là positive definite thì x∗ là tối ưu cục bộ chặt.

Trong các điều kiện dừng ta chỉ xét đến tối ưu cục bộ. Trong trường hợp đặc biệt nếuf (x) là hàm lồi (convex) thì mọi điểm tối uu cục bộ đều là tối ưu toàn cục. Hơn nữa nếumf(x) vừa lồi vừa khả vi thì mọi điểm x∗ làm đạo hàm bậc nhất bằng 0 đều là điểm tối ưutoàn cục.Về lí thuyết, để xét 1 hàm có lồi hay không, ta xét tính chất của ma trận Hessian (đạo

hàm bậc 2) trên toàn miền xác định. Theo đó f(x):

• là hàm lồi (convex) nếu ma trận Hessian là positive semidefinite tại mọi điểm trênmiền xác định.

• là hàm lồi chặt (strict convex) nếu ma trận Hessian là positive definite tại mọi điểmtrên miền xác định.

• là hàm lõm (concave) nếu −f(x) là hàm lồi.

• là hàm lõm chặt (strict concave) nếu −f(x) là hàm lồi chặt.

Rõ ràng việc kiểm tra trên toàn miền xác định là bất khả thi, trừ vài trường hợp đơn giảnnhư các hàm bậc 2 thì sẽ có Hessian là hằng v.v...Trong trường hợp tổng quát, khi việc tính đạo hàm bậc nhất và bậc 2 gặp khó khăn vì

không tìm được công thức đạo hàm tường minh, hoặc do giới hạn độ chính xác của máytính... thì các điều kiện trên trở nên khó kiểm tra. Khi đó ta phải dùng một số điều kiệnthực tế. Thuật toán sẽ dừng nếu:

8

Page 9: Notes for Optimization Chapter 1 and 2

Algorithm 2.2 Nhắc lại về trị riêng.

Nhắc lại rằng ma trận vuông M ∈ Rn×n gọi là:

• negative-semidefinite nếu zTMz ≤ 0 với mọi vector z ∈ Rn khác 0.

• negative-definite nếu zTMz < 0 với mọi vector z ∈ Rn khác 0.

• positive-definite nếu zTMz > 0 với mọi vector z ∈ Rn khác 0.

• positive-semidefinite nếu zTMz ≥ 0 với mọi vector z ∈ Rn khác 0.

• indefinite nếu nó không phải negative-semidefinite cũng không phải positive-semidefinite.

Nhân tiện cũng nhắc lại mối quan hệ giữa ma trận Hermitian (là các ma trận có chuyển vịliên hợp bằng chính nó M = M∗) và trị riêng. Ma trận Hermitian M là:

• negative-semidefinite khi và chỉ khi các trị riêng đều không dương λi ≤ 0.

• negative-definite khi và chỉ khi các trị riêng đều âm λi < 0.

• positive-definite khi và chỉ khi các trị riêng đều dương λi > 0.

• positive-semidefinite khi và chỉ khi các trị riêng đều không âm λi ≥ 0.

• độ lớn tương đối của đạo hàm bậc nhất tại xk đủ nhỏ

max1≤i≤n

∣∣∣∣∣ max∣∣xki ∣∣ , 1

max |f (xk)| , 1∇f

(xk)i

∣∣∣∣∣ ≤ ε 13

hoặc xk thay đổi một khoảng đủ nhỏ

max1≤i≤n

∣∣∣∣∣∣∣∣∣xk+1i − xki

∣∣∣max

xki , 1

∣∣∣∣∣∣ ≤ ε 2

3

với ε là độ chính xác của máy (hàm eps trong MATLAB).

2.2 Descent direction

Định nghĩa:dk ∈ Rn là một hướng giảm (descent direction) của một bài toán UNOP tại xk nếu:

∃α ∈ R+|∀α ∈ [0, α] : f(xk + αdk

)< f

(xk)

9

Page 10: Notes for Optimization Chapter 1 and 2

Hình 2.1: Descent direction

Ý tưởng của định nghĩa này được minh hoạ trong hình trên. Với hàm f(x) như trong hình,tại vị trí xk, khi đi theo hướng dk thì giá trị của f (x (α)) sẽ giảm dần. Mặc dù đến một lúcnào đó thì giá trị của f (x (α)) lại tăng, và còn có thể lớn hơn f(x), nhưng vì ta có thể tìmđược α theo như định nghĩa nên dk là hướng giảm của f(x) tại xk.Định nghĩa này rõ ràng rất khó áp dụng do có các toán tử tồn tại và với mọi. Trong thực

tế, ta dùng các điều kiện đơn giản hơn để xét dk có phải là descent direction hay không,theo đó nếu:

• ∇f (x) d < 0 thì d là hướng giảm (descent direction) của f(x) tại x,

• ∇f (x) d > 0 thì d là hướng tăng (ascent direction) của f(x) tại x,

• ∇f (x) d = 0 thì tùy thuộc vào ma trận Hessian của f(x) tại x.

Như vậy ta chỉ cần xét tích vô hướng của đạo hàm bậc nhất tại x với vector d để kiểm tra

điều kiện trên. Ý tưởng này được minh họa trong hình sau. Hàm f(x) với điểm tối ưu tạix∗ được khảo sát. Tại x = (0, 0)T, các mũi tên màu đỏ là các hướng tăng, màu xanh lálà hướng giảm. Tinh ý thì ta sẽ thấy rằng do ∇f (x) d là tích vô hướng nên nếu góc giữa∇f(x) và d lớn hơn π

2 thì tích vô hướng âm, d là hướng giảm. Đây là nhận xét quan trọng,sẽ có dịp ta trở lại với nó.Như vậy cho trước một vector d, ta đã có cách để kiểm tra nó có phải là descent direction

không. Nhưng vấn đề là tại điểm xk bất kì, làm sao để tìm hướng giảm dk? Ta có cácphương pháp sau:

• Sử dụng đạo hàm bậc nhất:

– Steepest descent (còn gọi là gradient method): dk = −∇f(xk).

– Conjugate Gradient: dk = −∇f(xk)

+ βkdk−1.

10

Page 11: Notes for Optimization Chapter 1 and 2

Hình 2.2: Descent direction: điều kiện đủ

– Quasi-Newton: dk = −Bk∇f(xk), trong đó các Bk là ma trận đối xứng, positive

definite.

• Sử dụng đạo hàm bậc 2:

– Phương pháp Newton: dk = −[∇2f

(xk)]−1∇f (xk)

Tính chất của mỗi phương pháp sẽ được trình bày chi tiết sau.

2.3 Steplength: Thuật toán line search

Như vậy tại điểm xk ta xác định được hướng giảm dk, do đó xk+1 phải nằm trên nửa đườngthẳng x (α) = xk + αdk, (α > 0). Vấn đề là ta phải xác định xem ta cần đi xa bao nhiêutrên nửa đường thẳng này, nghĩa là phải xác định độ dài bước tốt nhất α∗.Line search là thuật toán thực hiện việc này, và rõ ràng bản thân line search cũng là một

bài toán tối ưu:

α∗ = arg min f (x+ αd) |α ≤ 0

Sở dĩ ta cực tiểu f (x+ αd) là vì không những ta muốn tìm α tốt nhất, mà còn muốnthuật toán kết thúc nhanh nhất có thể.Ta có thể giải chính xác bài toán line search (gọi là exact line search) bằng cách lấy đạo

hàm của f (x (α)) để tìm giá trị của α tại điểm cực trị.Chẳng hạn xét lại ví dụ trong hình 2:

minx∈Rnf (x) = 0.875x21 + 0.8x22 − 350x1 − 300x2

11

Page 12: Notes for Optimization Chapter 1 and 2

Algorithm 2.3 Thuật toán backtracking line search

1. Định nghĩa tiêu chuẩn chấp nhận (acceptability) cho αk.

2. Đặt α := αmax, bước thử đầu cho α.

3. Lặp cho đến khi α thỏa tiêu chuẩn chấp nhận

a) Bằng cách nào đó (chia đôi, giảm dần, nội suy...) tìm bước thử mới cho α saocho α < αmax.

4. 4. Đặt αk := α.

Tại x = (0, 0)T, hướng giảm (tính theo steepest descent) là d = −∇f (x)′ = (350, 300)T.Ta có thể kiểm tra ∇f (x) d < 0 nên d là hướng giảm của f(x) tại x. Ta có:f (x (α)) = f (x+ αd) = 179187.5α2 − 212500α, và∂f(x(α))

∂α = 0⇔ α∗ = 0.5939

Như vậy ta đã chọn được αk và có thể tiếp tục bước 3.c trong 2.1.Tuy nhiên trong nhiều trường hợp, việc tính đạo hàm của f (x (α)) là bất khả thi nên ta

cần cách khác để tìm α∗, và đó chính là nội dung của thuật toán inexact line search. Mụctiêu của line search là xác định xấp xỉ αk ≈ arg min

f(xk + αdk

)|α ≥ 0

sao cho nó làm

giảm độ lớn của f(x), tiến gần hơn về cực tiểu, đồng thời không tốn quá nhiều chi phí tínhtoán.Trong bước 3, để tìm bước thử mới cho α, ta có thể:

• Chia α cho một hằng số k nào đó, như vậy các giá trị của α lần lượt là αmax,αmaxk , αmax

k2· · ·

Đến khi nào thỏa điều kiện thì ngừng.

• Trừ dần α cho một hằng số c nào đó, các giá trị của α lần lượt là αmax, αmax −c, αmax − 2c · · ·

• Dùng một hàm nào đó để nội suy giá trị của α. Thông thường ta sẽ dùng một hàmbậc 2 g (α) = aα2 + bα+ c. Nhận xét rằng

g (0) = f(xk)

g′ (0) = ∇f(xk)dk

g (αmax) = f(xk + αmaxd

k)

ta có 3 phương trình để tìm các hệ số a, b và c của g (α). Sau khi có công thức hàmg (α) thì có thể chọn α bất kì trong đoạn [0, αmax]. Một ví dụ ở cuối bài sẽ minh họacách làm này.

Mảnh ghép cuối cùng còn thiếu của thuật toán là tiêu chuẩn chấp nhận trong 2.3. Người tahay dùng tiêu chuẩn Wolfe, còn gọi là tiêu chuẩn Armijo-Goldstein. Tiêu chuẩn này gồm 2bất phương trình sau:

12

Page 13: Notes for Optimization Chapter 1 and 2

Hình 2.3: Minh họa tiêu chuẩn Armijo-Goldstein

f(xk + αdk

)≤ f

(xk)

+[c1∇f

(xk)dk].α

∇f(xk + αdk

)dk ≥ c2∇f

(xk)dk

với c1, c2 là các hằng số thỏa 0 < c1 < c2 < 1.Hình 3 minh họa các tiêu chuẩn này. Đồ thị của hàm Φ (α) = f

(xk + αdk

)(vế trái của

điều kiện thứ nhất) được vẽ trong hình. Gốc tọa độ là tại vị trí α = 0. Đường màu cam làđồ thị vế bên phải của điều kiện thứ nhất. Do đó ý nghĩa của tiêu chuẩn thứ nhất là chỉnhững α nằm trong đoạn màu cam được chọn. Tương tự chỉ những α nằm trong đoạn màuvàng mới được chọn theo tiêu chuẩn thứ 2. Cuối cùng phần giao sẽ là những α thỏa cả 2tiêu chuẩn trên.Ta sẽ làm rõ line search bằng một ví dụ.

2.4 Ví dụ

Cho hàm f (x) = x31 + x1x2 + 2x1x2

.

1. Tại điểm xk = [1 1]T, kiểm tra dk = [0 − 1]T có phải là hướng giảm của f(x)không. Nếu không hãy tìm một hướng giảm thỏa điều kiện.

Ta có ∇f (x) =[

3x21 + x2 + 2x2

x1 − 2x1x22

]⇒ ∇f

(xk)

=[

6 −1]

Vì ∇f(xk)dk =

[6 −1

] [ 0−1

]= 1 > 0 nên dk là hướng tăng của f (x) tại xk (chứ

không phải hướng giảm).

Có thể chọn hướng giảm của f (x) tại xk là dk =[−1 0

]Tvì∇f

(xk)dk =

[6 −1

].

[−10

]=

−6 < 0

13

Page 14: Notes for Optimization Chapter 1 and 2

2. Thực hiện bước đầu tiên của thuật toán line search tại xk theo hướng dk bằngphương pháp nội suy bậc 2, các tham số αmax = 1, c1 = 0.01, c2 = 0.5.

Line search tại xk =[

1 1]T

với dk =[−1 0

]T, αmax = 1, c1 = 0.01, c2 =

0.5.Ta có:f(xk)

= 4, ∇f(xk)

=[

6 −1],

∇f(xk)dk = −6, f

(xk + αmaxd

k)

= f

([01

])= 0.

Nội suy bậc 2: hàm bậc 2 của α có dạng g (α) = aα2 + bα+ c và thỏa:g (0) = f

(xk)

g′ (0) = ∇f(xk)dk

g (αmax) = f(xk + αmaxd

k) ⇔

c = 4

b = −6

a = 2

Vậy g (α) = 2α2 − 6α+ 4 và g′ (αg) = 4αg − 6 = 0⇔ αg = 32 .

Ta có thể chọn αg = min(32 , αmax

)= 1.

Kiểm tra tiêu chuẩn Armijo-Goldstein với αg bằng MATLAB:

f u n c t i o n [ f ] = prob6_func ( x )f = x (1)^3 + x (1)∗ x (2 ) + 2∗x (1)/ x ( 2 ) ;

end

f u n c t i o n [ g ] = prob6_grad ( x )g = z e r o s (1 , 2 ) ;g (1 , 1) = 3∗x (1)^2 + x (2) + 2/x ( 2 ) ;g (1 , 2) = x (1) − 2∗x ( 1 ) / ( x ( 2 )^2 ) ;

end

>> xk = [ 1 ; 1 ] ; dk = [−1; 0 ] ;>> alpha_g = 1 ;>> c1 = 0 . 0 1 ; c2 = 0 . 5 ;>> l 1 = prob6_func ( xk+alpha_g∗dk ) ;>> r1 = prob6_func ( xk)+alpha_g∗ c1 ∗( prob6_grad ( xk )∗ dk ) ;>> l 1 <= r1

ans =1

>> l 2 = prob6_grad ( xk+alpha_g∗dk )∗ dk ;>> r2 = c2 ∗( prob6_grad ( xk )∗ dk ) ;>> l 2 >= r2

ans =1

Vậy αg = 1 thỏa tiêu chuẩn A-G.

14

Page 15: Notes for Optimization Chapter 1 and 2

2.5 Kết luận

Bài này tổng quan về các bài toán tối ưu phi tuyến không ràng buộc, đồng thời làm rõ thuậttoán line search như một bước quan trọng trong thuật toán chung.Tuy nhiên bài này chưa trình bày rõ các phương pháp chọn hướng giảm như Steepest

Descent hay Conjugate Gradient. Để có thể đánh giá, lựa chọn giữa các phương pháp này,ta cần biết cách đánh giá mức độ hội tụ của một thuật toán tối ưu. Bài tiếp theo trongseries Optimization sẽ nói về hội tụ cục bộ, hội tụ toàn cục, định lí Zoutendijk, hội tụ tuyếntính, siêu tuyến tính... Đây sẽ là cơ sở để đánh giá các phương pháp chọn hướng giảm màta đã nhắc tới trong bài này.

15