1. Trang chủ
  2. » Luận Văn - Báo Cáo

Một Số Thuật Toán Giải Số Bài Toán Tối Ưu Phi Tuyến.pdf

60 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Một Số Thuật Toán Giải Số Bài Toán Tối Ưu Phi Tuyến
Tác giả Nguyễn Hữu Đạt
Người hướng dẫn TS. Vũ Vinh Quang
Trường học Đại học Thái Nguyên
Chuyên ngành Toán ứng dụng
Thể loại Luận văn thạc sĩ
Năm xuất bản 2019
Thành phố Thái Nguyên
Định dạng
Số trang 60
Dung lượng 391,73 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1.1. Mô hình tổng quát của bài toán tối ưu hóa (10)
  • 1.2. Phân loại bài toán tối ưu (11)
  • 1.3. Một số phương pháp giải cơ bản bài toán tuyến tính (12)
    • 1.3.1. Thuật toán hình học (12)
  • 1.4. Mô hình bài toán quy hoạch lồi tổng quát (13)
    • 1.4.1. Khái niệm tập lồi, hàm lồi (13)
    • 1.4.2. Khái niệm về Gradient và đạo hàm hướng (15)
    • 1.4.3. Bài toán quy hoạch lồi tổng quát, điều kiện tối ưu . 8 1.4.4. Cực tiểu hàm lồi một biến (15)
  • 1.5. Phương pháp giải bài toán quy hoạch tuyến tính tổng quát trên phần mềm MATLAB (22)
  • 2.1. Một số kiến thức cơ bản (23)
    • 2.1.1. Định nghĩa (23)
    • 2.1.2. Điều kiện tối ưu (24)
  • 2.2. Các thuật toán sử dụng đạo hàm (25)
    • 2.2.1. Thuật toán Gradient (25)
    • 2.2.2. Thuật toán đường dốc nhất (27)
    • 2.2.3. Thuật toán Newton (30)
  • 2.3. Các thuật toán không sử dụng đạo hàm (33)
    • 2.3.1. Phương pháp tìm trực tiếp (Direct search) (33)
    • 2.3.2. Phương pháp Powell (34)
    • 2.3.3. Phương pháp Nelder và Mead (35)
    • 3.1.1. Hàm Lagrange (39)
    • 3.1.2. Thiết lập điều kiện tối ưu Kuhn - Tucker (40)
  • 3.2. Một số thuật toán (42)
    • 3.2.1. Thuật toán Gradient . . . . . . . . . . . . . . . . . 35 3.2.2. Phương pháp hàm phạt (Penalty function method) 38 (42)

Nội dung

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC  NGUYỄN HỮU ĐẠT MỘT SỐ THUẬT TOÁN GIẢI SỐ BÀI TOÁN TỐI ƯU PHI TUYẾN LUẬN VĂN THẠC SĨ TOÁN HỌC THÁI NGUYÊN 2019 Tai ngay!!! Ban co the xoa dong chu nay!!![.]

Mô hình tổng quát của bài toán tối ưu hóa

Tối ưu hóa đóng vai trò quan trọng trong nhiều lĩnh vực như khoa học, công nghệ, kinh tế và xã hội Việc tìm kiếm giải pháp tối ưu cho các bài toán thực tiễn, chẳng hạn như lập kế hoạch sản xuất hay thiết kế hệ thống điều khiển, là rất cần thiết Sử dụng kiến thức toán học để giải quyết các bài toán cực trị giúp đạt được hiệu quả kinh tế cao, phù hợp với các mục tiêu thực tiễn hiện nay.

Mô hình bài toán tối ưu tổng quát được phát biểu như sau:

Cực đại hóa (cực tiểu hóa) hàm: f(X)→ max/min Với các điều kiện: gi(X) = bi, i ∈ J1 (1.1) gj(X) ≤ bj, j ∈ J2 (1.2) gk(X) ≥ bk, k ∈ J3 (1.3) x 1 , x 2 , , x n ≥ 0 (1.4)

Hàm mục tiêu f(X) là yếu tố chính trong bài toán tối ưu, trong khi các điều kiện (1.1) được xác định là ràng buộc đẳng thức Bên cạnh đó, các điều kiện (1.2) và (1.3) được phân loại là ràng buộc bất đẳng thức, và cuối cùng, các điều kiện (1.4) được gọi là ràng buộc về dấu.

Trong không gian R n, vectơ X = (x 1 , x 2 , , x n ) T đại diện cho các phương án Tập hợp các vectơ X thỏa mãn hệ ràng buộc tạo thành miền D, được gọi là miền phương án hay miền chấp nhận được Mỗi điểm X ∈ D được xem là một phương án, trong đó phương án X ∗ ∈ D tối ưu hóa hàm mục tiêu f(X) bằng cách đạt cực đại hoặc cực tiểu.

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

Dựa trên mô hình tổng quát, người ta thường phân loại lớp các bài toán tối ưu như sau:

- Quy hoạch tuyến tính: Là những bài toán mà hàm mục tiêu f(X) và tất cả các hàm ràng buộc g i (X), g j (X), g k (X) là tuyến tính.

- Quy hoạch phi tuyến: Là những bài toán một trong hàm mục tiêu f(X) hoặc các hàm ràng buộc g i (X), g j (X), g k (X) là phi tuyến.

- Quy hoạch lồi: Là các bài toán quy hoạch mà các hàm mục tiêu f(X) là lồi trên tập các ràng buộc D lồi.

- Quy hoạch lõm: Là các bài toán quy hoạch mà các hàm mục tiêu f(X) là lõm trên tập các ràng buộc D lõm.

Quy hoạch rời rạc là một bài toán tối ưu trong đó miền ràng buộc D được xác định là tập hợp rời rạc Khi các biến trong bài toán chỉ nhận giá trị nguyên, nó được gọi là quy hoạch nguyên.

- Quy hoạch đa mục tiêu: Nếu trên cùng một miền ràng buộc ta xét đồng thời các hàm mục tiêu khác nhau.

Trong các lĩnh vực kinh tế kỹ thuật thì quy hoạch phi tuyến, quy hoạch tuyến tính là những bài toán thường gặp.

Một số phương pháp giải cơ bản bài toán tuyến tính

Thuật toán hình học

1 Vì các ràng buộc của bài toán luôn luôn là các nửa mặt phẳng, do đó miền phương án luôn luôn là một đa giác lồi (là giao của các nửa mặt phẳng).

2 Xét đường thẳng f = m được gọi là đường mức Hiển nhiên khi đường mức chuyển động song song trong miền phương án thì điểm chạm cuối cùng của đường mức với miền luôn luôn là một trong các đỉnh của đa giác (hoặc một cạnh của đa giác) Đấy chính là phương án tối ưu cần tìm. Xuất phát từ nhận xét trên, chúng ta có thuật toán hình học gồm các bước như sau:

Bước 1: Vẽ miền phương án D là đa giác lồi bằng cách xác định miền giao của các nửa mặt phẳng trong hệ ràng buộc.

Bước 2 : Xác định tọa độ của các đỉnh đa giác: Giả sử là các điểm

Bước 3: Xác định phương án tối ưu fmax =max(f(A1), f(A2), , f(Ak)).

Khi miền phương án không phải là miền kín, phương án tối ưu của bài toán sẽ được xác định dựa vào hướng di chuyển của đường mức.

Mô hình bài toán quy hoạch lồi tổng quát

Khái niệm tập lồi, hàm lồi

Tập C ⊂ R n được gọi là tập lồi nếu x, y ∈ C ⇒ λx + (1 − λ)y ∈ C,

∀λ ∈ [0; 1] Nghĩa là nếu x, y ∈ C thì đoạn thẳng [x, y] ∈C b Hàm lồi Định nghĩa:

Hàm số f(x) được coi là lồi trên tập C nếu với mọi cặp điểm (x1, x2) thuộc C và mọi số λ trong khoảng [0,1], điều kiện sau được thỏa mãn: f[λx1 + (1−λ)x2] ≤ λf(x1) + (1−λ)f(x2) Điều này có nghĩa là điểm x = λx1 + (1−λ)x2 nằm trong đoạn [x1, x2] và mọi điểm trên đồ thị của hàm f đều nằm dưới đoạn thẳng nối hai điểm M1 và M2.

- Hàm f(x) là lồi, nếu đối với hai điểm x1, x2 thỏa mãn điều kiện f(x2) ≥ f(x 1 ) +5f 0 (x 1 ).(x 2 −x 1 )

- Hàm f(x) là hàm lồi, nếu ma trận Hesian H(x) = [∂ 2 f(x)/∂x2∂x2] là bán xác định dương Khi H(x) xác định dương thì hàm f(x) gọi là hàm lồi chặt.

Cực trị của hàm lồi

Bất cứ cực tiểu địa phương nào của hàm lồi trên tập lồi cũng là cực tiểu của hàm trên tập đó.

Ta sẽ chứng minh tính chất này bằng phản chứng:

Giả thiết hàm f(x) có hai điểm cực tiểu là x 1 và x 2 Vì f(x) là lồi nên: f(x2)−f(x1) ≥ 5f 0 (x2)(x2−x1)

Trong quy hoạch lồi, vectơ s = (x2 − x1) nối hai điểm x1 và x2 cho thấy hàm f(x) giảm khi di chuyển theo hướng s từ điểm x1 Điều này mâu thuẫn với giả thiết rằng x1 là điểm cực tiểu Do đó, hàm f(x) chỉ có một cực tiểu duy nhất, dẫn đến việc giá trị tối ưu địa phương cũng chính là giá trị tối ưu toàn cục.

Khái niệm về Gradient và đạo hàm hướng

+ Gradient của f(x) là một vectơ có các thành phần là đạo hàm riêng

+ Vectơ5f(x0)vuông góc với đường mức của f(x)tạix0, tốc độ hàmf(x) tăng nhanh nhất theo hướng của 5f(x 0 ) Nếu đi theo hướng − 5f(x 0 ) thì f(x) giảm nhanh nhất.

+ Đạo hàm theo hướng z của hàm f(x) tại điểm x0: f z 0 (x 0 ) =h5f(x 0 ), zi= | 5f(x 0 )|.|z|.cos(5f(x 0 ), z) Đó là hình chiếu của vectơ 5f(x0) lên hướng z.

+ Ma trận Hessian H(x) là ma trận có các thành phần là Gradient cấp hai của f(x)

Bài toán quy hoạch lồi tổng quát, điều kiện tối ưu 8 1.4.4 Cực tiểu hàm lồi một biến

Tìm x sao cho hàm mục tiêu f(x) →min Các ràng buộc: x∈ C : gi(x) ≤ 0;i = 1,2, , m. trong đó C là tập lồi, f, gi là các hàm lồi trên C. b Điều kiện tối ưu

+ Miền nghiệm chấp nhận được:

+ Khái niệm về điểm yên ngựa (saddle point)

P i=1 λigi(x) =f(x) +λ T g(x) Khi đó điểm yên ngựa của hàm L(x, λ) là điểm (x ∗ , λ ∗ ) với x ∗ ∈ D;λ ∗ ≥ 0 sao cho: L(x, λ ∗ ) ≤ L(x ∗ , λ ∗ ) ≤ L(x ∗ , λ) Các thành phần λi của vectơ λ = [λ 1 , , λ m ] T được gọi là các nhân tử Lagrange.

Khi λ = λ ∗ thì điểm (x ∗ , λ ∗ ) là điểm cao nhất của L(x, λ).

Khi x =x ∗ thì điểm (x ∗ , λ ∗ ) là điểm thấp nhất của L(x, λ).

Phương pháp xác định điểm yên ngựa: Điểm(x ∗ , λ ∗ ) là điểm yên ngựa của hàm L(x ∗ , λ ∗ ) khi và chỉ khi:

+OL(x, λ) = 0 +gi(x) ≤ 0;i= 1,2, , m +λ i g i (x) ≤ 0;i = 1,2, , m + Điều kiện cần và đủ của tối ưu Định lí 1.1 Điểm x ∗ là tối ưu khi và chỉ khi f z (x ∗ ) = h5f(x ∗ ), zi ≥ 0;∀z ∈ D(x ∗ )

Tức là nếu xuất phát từ x ∗ theo hướng bất kỳ z mà f(x) tăng thì f(x) đạt giá trị min tại x ∗ Định lí 1.2 (Định lý Kuhn - Tucker, phát biểu năm 1951)

Giả sử bài toán quy hoạch lồi thỏa mãn điều kiện Slater:

Để x ∗ trở thành nghiệm tối ưu, cần có một vectơ không âm λ ∗ = [λ ∗ 1 , λ ∗ 2 , , λ ∗ m ] T, sao cho cặp (x ∗ , λ ∗ ) là điểm yên ngựa của hàm Lagrange L(x, λ).

Chú ý Điều kiện Slater không được thỏa mãn thì có thể không tồn tại điểm yên ngựa của hàm L(x, λ) loại (x ∗ , λ ∗ ).

Tìm min của f(x) =−x với ràng buộc g = x 2 ε x1 = a+ L 4 , x2 = b− L 4 f(x 1 ) < f(x 2 ) thì b:=x 2 f(x 1 ) > f(x 2 ) thì a:= x 1 f(x1) = f(x2) thì a:= x1, b :=x2

Lặp lại cho đến khi L < ε

+ Thuật toán chắc chắn hội tụ sau hữu hạn bước lặp, tốc độ hội tụ phụ thuộc vào việc chọn vị trí của hai điểm x1, x2 sau từng bước lặp.

+ Phương pháp chia đôi dễ lập trình nhưng không tối ưu về tính toán vì việc chọn x1, x2 là tùy ý.

Thuật toán được mô phỏng dưới ngôn ngữ lập trình MATLAB. function cd=chia_doi(a, b, epxilon)

L=b-a; count = 0; while L > epxilon count=count + 1 x1=a + L/4; x2=b - L/4; if f(x1) < f(x2) b = x2; elseif f(x1) > f(x2) a = x1; elseif f(x1) == f(x2) a = x1; b = x2; end;

Sau đây là kết quả chạy thuật toán giải bài toán f(x) =x 2 + 54 x, x ∈ [−10,10].

Hiển nhiên hàm f(x) là hàm lồi trên đoạn [1, 10], cực tiểu đạt tại x=3. Kết quả chạy thuật toán chia đôi cho trong bảng 2.1

Bảng 2.1: Nghiệm xấp xỉ tối ưu sau các bước lặp

Số bước lặp Nghiệm tối ưu Số bước lặp Nghiệm tối ưu

Nhận xét Thuật toán hội tụ tốt sau 60 bước lặp đạt đến nghiệm tối ưu.

Thuật toán mặt cắt vàng

Phương pháp này sử dụng tính chất của dãy Fibonacci {Fn}.

Dãy số Fibonacci có tính chất đặc biệt đáng chú ý là: Tỷ số giữa hai số kế tiếp nhau của dãy tiến tới tỷ số vàng: n→∞lim

F n √5−1 2 + Tư tưởng phương pháp Đặt bk−ak = 1 và chia [ak, bk] theo tỷ lệ:

Phương trình p 2 +p−1 = 0 có nghiệm dương: p = −1+

2 ≈ 0,61803 Hai số p và (1-p)=0,38197 được gọi là hằng số Fibonacci

+ Trong đoạn [a k , b k ] lấy hai điểm α k , β k theo tỷ lệ: βk−ak b k −a k = bk−αk b k −a k =p (*)

Khi chia đoạn [a k , b k ] thành hai phần thỏa mãn điều kiện (*), mỗi phép lặp chỉ yêu cầu tính toán một giá trị của f(x) Điều này giúp việc tìm kiếm giá trị tối ưu x ∗ diễn ra nhanh chóng hơn so với việc chia đều đoạn [a k , b k ] thành các phần bằng nhau.

Các mặt cắt [α k , β k ] thỏa mãn (*) được gọi là mặt cắt vàng và p là số vàng.

Thuật toán lát cắt vàng

+ Chọn αk, βk theo tỷ lệ vàng (*).

+ Tính giá trị hàm f tại αk và βk và rút ngắn đoạn [ak, bk]

Nếu f(α k ) < f(β k ) thì lấy giá trị [a k+1 , b k+1 ] = [a k , b k ]

Nếu f(αk) > f(βk) thì lấy giá trị [ak+1, bk+1] = [ak, bk]

Nếu f(α k ) = f(β k ) thì lấy giá trị [a k+1 , b k+1 ] = [a k , b k ]

Giá trị tối ưu x ∗ đạt được khi độ dài đoạn còn lại nhỏ hơn sai số cho trước.

Nhận xét a/ Trong cả hai trường hợp ta đều có: bk+1−ak+1 := p(bk −ak); b/ Một trong hai điểm chia ở bước sau trùng với điểm chia ở bước trước.

Do đó thuật toán này cho phép giảm số phép tính.

Thuật toán mặt cắt vàng được mô phỏng bằng ngôn ngữ MATLAB function mc=mat_cat_vang_1(a, b, epxilon)

L=b-a; p=(-1 + sqrt(5))/2; count=0; while L > epxilon count=count +1 alpha=b - p*L; beta=a + p*L; if f(alpha) f(beta) a = alpha; end;

Sau đây là kết quả chạy thuật toán giải bài toán f(x) = x 2 + 54 x , x∈ [0,10].

Bảng 1.3: Nghiệm xấp xỉ tối ưu sau các bước lặp

Số bước lặp Nghiệm tối ưu Số bước lặp Nghiệm tối ưu

Thuật toán hội tụ tốt đã đạt được nghiệm tối ưu sau 30 bước lặp Đặc biệt, tốc độ hội tụ của thuật toán mặt cắt vàng nhanh hơn so với thuật toán chia đôi.

Phương pháp giải bài toán quy hoạch tuyến tính tổng quát trên phần mềm MATLAB

quát trên phần mềm MATLAB

Trong phần mềm MATLAB, bài toán Quy hoạch tuyến tính có dạng mặc định là:

Các giới hạn biên của nghiệm lb ≤ X ≤ ub (lb: lower bounds, ub: upper bounds)

Khi gặp bài toán f = C T X → max, chỉ cần đặt maxf = −min(−f)

Lệnh thường dùng để giải QHTT là:

[X, f val, exitf lag, output] = linprog(C, A, b, A ∈ q, beq, lb, ub)

[X, f val, exitf lag, output] = intprog(C, A, b, Aeq, beq)

Lệnh linprog để lấy các nghiệm không âm

Lệnh bintprog để lấy các nghiệm nguyên có giá trị 1 hoặc 0.

Trong dấu () là các vectơ và ma trận đã cho của hàm mục tiêu và các ràng buộc.

Trong dấu [ ] là các đại lượng cần tính:

X - giá trị tối ưu của nghiệm, f val - giá trị min của hàm mục tiêu.

Exitf lag là số nguyên thông báo kết thúc tính toán Khi exitf lag = 1, các kết quả tính được xem là thành công, cho thấy hàm số đã hội tụ về một nghiệm Ngược lại, nếu exitf lag ≤ 0, các kết quả tính sẽ bị coi là không thành công và cần có các giải thích tương ứng.

Output- cho các thông tin về phép tính đã thực hiện.

Một số thuật toán giải số bài toán tối ưu phi tuyến không ràng buộc

Chương 2 trình bày các thuật toán giải số cho bài toán tối ưu phi tuyến không ràng buộc, bao gồm mô hình tổng quát và điều kiện tối ưu Các thuật toán sử dụng đạo hàm như Gradient, đường dốc nhất, Newton và Gradient liên hợp được thảo luận, bên cạnh đó là các thuật toán không sử dụng đạo hàm như tìm trực tiếp, Powell, và Nelder-Mead Các kết quả tham khảo được lấy từ các tài liệu [2], [3], [6], [7], [8], [9].

Một số kiến thức cơ bản

Định nghĩa

Cho dãy {x k } hội tụ về dãy x ∗ , ta nói:

- Dãy {xk} hội tụ với tốc độ một cấp số nhân công bội q nếu tồn tại k0,

0 < q < 1, C < +∞ sao cho ∀k > k 0 : Khi đó ta có các đánh giá

- Dãy {x k } hội tụ với tốc độ trên cấp số nhân nếu ta có:

- Dãy {x k } hội tụ với tốc độ bậc hai nếu tồn tại C>0, tồn tại k 0 sao cho:

Điều kiện tối ưu

Xét bài toán: Tìmx ∗ đểf(x) → min, x ∈ E n trong đóx= [x1, x2, , xn] T + Điều kiện cần của tối ưu địa phương

2/ 5f(x ∗ ) = 0 nghĩa là x ∗ là điểm dừng

Chú ý Khi thỏa mãn điều kiện cần thì x ∗ có thể là cực tiểu địa phương, cực đại địa phương hoặc điểm yên ngựa.

+ Điều kiện đủ của cực tiểu địa phương

H(x) = 5 2 f(x) > 0, nghĩa là ma trận Hessian xác định dương.

Xác định các điểm dừng của hàm mục tiêu: f(x) =x 3 1 +x 3 2 + 2x 2 1 + 4x 2 2 + 6

Nghiệm của hệ phương trình là các điểm: (0, 0); (0, -8/3); (-4/3, 0); (-4/3, -8/3)

+ Xác định loại điểm dừng Tính 5 2 f(x) :

Giá trị D1, D2 và loại điểm dừng cho ở bảng sau: Điểm x ∗ D 1 D 2 H(x) Loại điểm dừng f(x) (0,0) 4 32 Xác định dương Min địa phương 6

(0, -8/3) 4 -32 Không xác định Điểm yên ngựa 418/27 (-4/3, 0) -4 -32 Không xác định Điểm yên ngựa 194/27 (-4/3, -8/3) -4 32 Xác định âm Max địa phương 50/3

Trong trường hợp tổng quát với hàm mục tiêu phi tuyến, việc xác định các điểm dừng trở nên không khả thi Vì vậy, cần nghiên cứu và phát triển các thuật toán để xác định nghiệm xấp xỉ hiệu quả.

Các thuật toán sử dụng đạo hàm

Thuật toán Gradient

Đây là phương pháp phổ biến nhất, luôn luôn hội tụ.

Thuật toán sử dụng sơ đồ lặp x (k+1) = x (k) −λk 5f(x (k) )

Hệ số λ k xác định độ dài bước đi theo hướng Gradient, có thể chọn hằng số cho toàn bộ quá trình hoặc tính giá trị tối ưu cho từng bước Điều kiện dừng lặp được thiết lập khi ||x (k+1) −x (k) || ≤ ε.

Quy tắc Armijo xác định bước đi tối ưu tổng quát

Bước 1: Chọn λ tùy ý như nhau với mọi bước lặp (chẳng hạn λ k = 1),Xác định điểm x =x (k) −λ5f(x (k) ) là một điểm trên hướng giảm.Bước 2: Tính f(x) = f(x (k) −λ5f(x (k) ))

Thì lấy λ k = λ, ngược lại lấy λ k = αλ, α ∈ (0,1)

Sử dụng quy tắc Armijo, thuật toán Gardient được mô tả bằng ngôn ngữ MATLAB như sau: function gd=gradient_amo(epxilon, k) clc;

Xluu=[1; 1]; count =0; ss; ep ∧ (-4); alpha=1/2; while and(ss > epxilon, count < k) count=count + 1; grad=[dh1x(X); dh1y(X)]; dk=grad;

%Quytac Armijo; lamda=1; while f(X)-f(X- lamda*grad) < ep*lamda * (grad.*dk) lamda=lamda*alpha; end; lamdak = lamda;

X= X - lamdak*dk; ss=chuan1(X - Xluu, 2);

Các kết quả thực hiện thuật toán được cho trong bảng dữ liệu sau đây.

Bảng 2.2: Nghiệm xấp xỉ tối ưu sau các bước lặp f(x, y) =x 2 +y 2 +x−y

Số bước lặp Sai số Nghiệm xấp xỉ

Nhận xét Thuật toán hội tụ tốt sau hai bước lặp đạt đến nghiệm tối ưu.

Thuật toán đường dốc nhất

Phương pháp đường dốc nhất là một trong những phương pháp cổ điển phổ biến để giải quyết bài toán quy hoạch phi tuyến không ràng buộc với nhiều biến.

Xét bài toán quy hoạch phi tuyến không ràng buộc tổng quát:

Ta gọi vectơ d là hướng giảm của hàm f : R n → R tại x nếu ∃δ > 0 sao cho f(x+λd)< f(x),∀x∈ (0, δ).

Giả sử hàm f khả vi tại x và 5f(x) 6= 0, ta có thể chứng minh rằng d¯= − 5f(x)/|| 5f(x)|| là hướng giảm nhanh nhất Điều này có nghĩa là d¯ là lời giải cho bài toán Minf 0 (x, d), trong đó f 0 (x, d) là đạo hàm theo hướng d tại x, với điều kiện ||d|| ≤1.

Thật vậy, do f khả vi tại x nên: f(x+λd) =f(x) +5f(x) T (λd) +||λd||α(x, λd) (2.1)

Với lim λ→0 − α(x, λd) = 0 Vậy đạo hàm theo hướng d tại x chính là f 0 (x, d) = lim λ→0 f(x+λd)−f(x) λ _(x) T d.

Do ||d|| ≤1 nên theo bất đẳng thức schwartz ta có

Dựa vào công thức d¯ = −5f(x)/||5f(x)||, ta nhận thấy rằng d¯ là hướng giảm nhanh nhất của hàm f tại điểm x Nếu giả sử biểu thức ||λd||α(x, λd) bằng 0, thì với λ > 0 và điều kiện ||d|| ≤ 1, hàm f(x+λd) sẽ đạt giá trị cực tiểu tại d¯ Tuy nhiên, vì ||λd||α(x, λd) không nhất thiết phải bằng 0, nên cần xác định giá trị λ ≥ 0 để tối ưu hóa hàm f(x+λd) sau khi đã chọn hướng giảm nhanh nhất d¯.

Thuật toán của phương pháp đường dốc nhất dựa trên lý thuyết ánh xạ co, cho phép chứng minh rằng thuật toán này hội tụ đến điểm x¯ với điều kiện 5f(¯x) = 0, khi dãy {x k } được tạo ra trong thuật toán nằm trong một tập giới nội Nếu hàm f(x) là hàm lồi, thì x¯ sẽ trở thành phương án tối ưu toàn cục cho bài toán quy hoạch phi tuyến không ràng buộc đã nêu.

Thuật toán đường dốc nhất

Bước khởi tạo: Cho ε > 0 làm sai số kết thúc Lấy một điểm xuất phát x 1 , đặt k:=1 và chuyển sang các bước lặp.

Các bước lặp (bước lặp thứ k)

Bước 1: Nếu || 5 f(x k )|| > ε thì đặt d k = − 5 f(x k ) và chuyển sang Bước 2.

Bước 2: Tìm λk là phương án tối ưu của bài toán cực tiểu hóa hàm một biến f(x k +λd k ) (phụ thuộc vào λ ≥ 0) Đặt x k+1 = x k +λ k d k , k := k+ 1 và chuyển về Bước 1.

Bước kết thúc: Nếu || 5f(x k )|| ≤ε thì dừng.

Thuật toán có thể áp dụng quy tắc Armijo để xác định bước đi tối ưu Thuật toán đường dốc nhất được trình bày bằng ngôn ngữ MATLAB với cú pháp như sau: function dg=dg(epxilon, k) clc;

X=[1; 3]; ss; ep=1/2; lamda =1/3; count =0; while and(ss > epxilon, count < k) count=count + 1; grad=[dfx(X); dfy(X)]; dk=grad;

%Quytac Armijo; alpha=1; while f(X+ alpha*dk) - f(X) > ep*alpha * grad.*dk alpha=alpha*lamda; grad=[dfx(X); dfy(X)]; dk = -grad; end; lamdak=alpha;

X= X+lamdak*dk; ss=chuan1(grad, 2); end; count dg=X;

Các kết quả thực hiện thuật toán được cho trong bảng dữ liệu sau đây

Bảng 2.3: Nghiệm xấp xỉ tối ưu sau các bước lặp f(x, y) =x 2 +y 2 +x−y

Số bước lặp Sai số Nghiệm xấp xỉ

Nhận xét Thuật toán hội tụ tốt sau 9 bước lặp đạt đến nghiệm tối ưu.

Thuật toán Newton

Trong phương pháp đường dốc nhất, quy tắc dịch chuyển được xác định bởi x k+1 = x k + λ k d k, với d k = -5 f(x k ) Tương tự, trong phương pháp Newton, quy tắc dịch chuyển cũng được áp dụng với λ k được thay thế bằng H^{-1}(x k ), trong đó H(x k ) là ma trận Hessian tại điểm x k, với điều kiện ma trận này khả nghịch Nếu dãy {x k } hội tụ tới x¯ với 5f(¯x) = 0 và H(¯x) xác định dương, trong đó f(x) là hàm khả vi cấp hai, thì với các điểm x k gần x¯, H(x k ) cũng sẽ xác định dương và là ma trận khả nghịch.

Sau đây, chúng ta giải thích ý nghĩa của quy tắc dịch chuyển: x k+1 = x k − H −1 (x k ).5f(x k ) trong phương pháp Newton Đối với hàm khả vi cấp hai chúng ta có thể viết: f(x) =f(x k )+5f(x k ) T (x−x k )+1

2(x−x k ) T H(x k )(x−x k )+||x−x k || 2 α(x, x−x k ) trong đó, lim x→x k α(x k , x−x k ) = 0 Bởi vậy, có thể xấp xỉ f(x) bởi: q(x) =f(x k ) +5f(x k ) T (x−x k ) + 1

Ngoài ra, dễ thấy điều kiện cần để q(x) đạt giá trị cực tiểu là:

Giả sử ma trận H(x k ) khả nghịch thì điểm tiếp theo nên xem xét chính là điểm x k+1 = x k −H −1 (x k )5f(x k ).

Có thể chứng minh được phương pháp Newton hội tụ (khá nhanh) với điều kiện điểm xuất phát x 1 nằm sát gần x¯ với 5f(¯x) = 0 và ma trận

H(¯x) là khả nghịch Để khắc phục điều kiện ngặt nghèo này, phương pháp

Newton cải biên đã được đề xuất Tuy nhiên đây là giải thuật phức tạp.

Giải bài toán Minf(x) = (x1−2) 4 +(x1−2x2) 2 bằng phương pháp Newton.

Quá trình giải được minh họa trong bảng tóm tắt:

Thuật toán Newton có thể được cải thiện bằng cách sử dụng quy tắc Armijo để xác định bước đi tối ưu Dưới đây là cách mô tả thuật toán Newton bằng ngôn ngữ MATLAB: function nw=newton_amo(epxilon, k) format short e clc;

Xluu=[1; 1]; count =0; ss; ep=1/2; while and(ss > epxilon, count < k) count=count + 1; grad=[dh1x(X); dh1y(X)];

H=[dh2x(X) dh2xy(X); dh2xy(X) dh2y(X)];

%Quytac Armijo; alpha=1; dk=-inv(H)*grad; while f(X+ alpha*dk)-f(X) > ep*alpha*grad.*dk alpha=alpha*lamda; dk=-inv(H)*grad; end; lamdak = alpha;

X= X + lamdak*dk; ss=chuan11(X - Xluu, 2);

Các thuật toán không sử dụng đạo hàm

Phương pháp tìm trực tiếp (Direct search)

Xét bài toán: Tìm x ∗ sao cho f(x) → max;x∈ R n

Tư tưởng chính của thuật toán là tại mỗi bước, chỉ thay đổi một thành phần xi của vector x, trong khi các thành phần khác vẫn giữ nguyên Quá trình này tiếp tục cho đến khi đạt được giá trị cực đại.

* Cho các giá trị củax (0) = [x (0) 1 , , x (0) n ] T và số gia của biến số4x(4x 1 , ,4x n )

* Cho một thành phần của x biến đổi, các thành phần khác giữ nguyên: x (1) 1 = x (0) 1 +4x 1 → tính α−f(x (0) 1 , x (0) 2 , , x (0) n )

+ Nếu f(x) không cải tiến được cả hai phía (với x (0) 1 +4x 1 và x (0) 1 − 4x 1 ) thì cố định x (0) 1 không cho biến đổi nữa.

+ Tiếp tục tiến hành với x (1) 2 = x (0) 2 ± 4x 2 cho đến khi tất cả các biến đều được biến đổi.

Trong Bước 1, mỗi lần dịch chuyển theo một biến độc lập, giá trị hàm mục tiêu sẽ được so sánh với giá trị tại điểm trước đó Nếu có sự cải tiến trong hàm mục tiêu, giá trị cũ sẽ được thay thế bằng giá trị mới cho các so sánh tiếp theo Ngược lại, nếu không có cải tiến, giá trị cũ sẽ được giữ nguyên.

Bước 2: Tìm theo mẫu (Pattern search)

Khi kết thúc Bước 1, ta xác định được x (k) Ở bước tiếp theo ta lấy theo mẫu.

Tức là: x (k+1) = tx (k) −x (b) x (k+1) = tx (k) i −x (b) i Trong đó: x (b) là điểm cơ sở (base point), ở lần lặp đầu x (b) =x (0) t là số biến thăm dò cần thiết Đối với f(x 1 , x 2 ) ta có t = 2.

* Xuất phát từ điểm x (k+1) tính f(x (k+1) ) và so với giá trị f(x) ở bước tìm theo mẫu để xem Bước 2 có kết quả không.

* Nếu Bước 2 có kết quả tại x (k+2) thì tìm theo mẫu được coi là có kết quả nếu: f(x (k+2) ) ≥ f(x (k) ) và quá trình được lặp lại với điểm xuất phát x (b) =x (k)

Nếu Bước 2 không mang lại kết quả, cần kết luận rằng việc tìm kiếm theo mẫu đã không thành công Do đó, cần quay lại Bước 1 và thực hiện lại để xác định một hướng đi mới hiệu quả hơn.

Nếu Bước 1 không mang lại hướng mới hiệu quả, hãy tiếp tục giảm 4x cho đến khi xác định được hướng mới có hiệu quả hoặc khi 4x nhỏ hơn sai số cho phép.

Việc không có khả năng tăng f(x) khi 4x đã khá bé tức là tối ưu cục bộ đã đạt được.

Phương pháp trực tiếp thường có tốc độ hội tụ chậm hơn so với phương pháp sử dụng đạo hàm, tuy nhiên, nó lại thuận tiện hơn vì không cần phải tính toán đạo hàm.

Thuật toán có thể cài đặt được bằng ngôn ngữ lập trình MATLAB.

Phương pháp Powell

Bước 1: Chọn điểm xuất phát x (k) 0 (điểm dừng x 0 , bước lặp k)

Khik = 0, chọn các hướng song song với các trục tọa độ củaR n :s (k) 1 , , s (k) n

Dùng phương pháp tối ưu một tham số: f(x (k) i+1 + λis (k) i ) → min để xác định λ i

Khi đó xác định được λ (k) i và do đó xác định được: x (k) i+1 = x (k) i +λ (k) i s (k) i ;i = 1,2, , n

Bước 2: Chọn điểm tiếp theo: x (k) n+1 = 2x (k) n −x (k) 0

Tiếp tục tìm theo hướng Gradient liên hợp.

Phương pháp Nelder và Mead

J.A Nelder và R.Mead đã dùng đơn hình là những đa diện biến dạng (flexible polyhedron) nhờ ba phép biến đổi: ánh xạ gương, phép co và phép dãn.

Thuật toán được thực hiện theo các bước:

Bước 1: Trong không gian R n , chọn một đơn hình có đỉnh tại các điểm (x 1 , x 2 , , x n+1 ) Tính giá trị các hàm mục tiêu f(x) ở các đỉnh của đơn hình fi = f1(x), , fn+1(x) = f(xn+1).

Bước 2: Xác định các giá trị của hàm f: giá trị lớn nhất f1, giá trị tiếp theo f g , giá trị nhỏ nhất f b ; các đỉnh tương ứng là: x 1 , x 2 , x b

Bước 3: Xác định trọng tâm của hình (trừ đỉnh x1) theo công thức: x 0 = n 1 P x i ;i 6= 1 Tính f(x 0 ).

Bước 4:Thực hiện ánh xạ gương x 1 quax 0 nhận đượcx r Tínhf(x r ) = f r Nếu hệ số ánh xạ α >0 thì vị trí xr được xác định theo công thức: x r −x 0 = α(x 0 −x 1 ) x r = (1 +α)x 0 −αx 1 α = |x r −x 0 |/|x 0 −x 1 |

Bước 5: So sánh giá trị fr và fb

1/ Nếu fr < fb thì ta nhận được giá trị nhỏ nhất của hàm Hướng từ x 0 đến x r là hướng tốt nhất cho dịch chuyển, ta kéo dãn theo hướng đó và tìm điểm xp Hệ số dãn γ >1 được tìm từ biểu thức: xp −x0 = γ(xr −x0) xp = γxr + (1−γ)x0 γ = |xp−x0|/|xr−x0|

Để tính f(xp) = fp, thực hiện các bước sau: a) Nếu fp < fb, thay x1 bằng điểm xp và kiểm tra tính hội tụ của điểm thứ (n+1) trong đơn hình Nếu hội tụ, dừng tính; nếu không, quay lại Bước 2 b) Nếu fp > fb, loại bỏ điểm xp vì đã đi quá xa Thay x1 bằng xr và kiểm tra sự hội tụ Nếu vẫn chưa hội tụ, quay về Bước 2.

2/ Nếu f r > f b nhưng f r < f g thì x r là điểm tốt hơn so với hai điểm khác của đơn hình Thay x1 bằng xr Kiểm tra nếu chưa hội tụ thì quay về Bước 2.

3) Nếu fr > fb nhưng fr > fg thì chuyển sang Bước 6.

Bước 6: So sánh các giá trị fr và f1

1/ Nếu f r > f 1 thì chuyển về phép co (Bước 6, đoạn 2):

Nếu fr < f1 thì thay x1 bởi điểm xr và thay f1 bởi fr.

Nếu f r > f g chuyển sang phép co.

Khi trường hợp fr > f1 xảy ra, chúng ta đã dịch chuyển quá xa từ x1 đến x0, do đó cần điều chỉnh lại bằng phép co để xác định x0 Công thức được sử dụng là xc - x0 = β(x1 - x0) với 0 < β < 1, trong đó β là hệ số co, và xc được tính theo công thức xc = βx1 + (1 - β)x0.

- Trường hợp fr < f1 ta thay x1 bằng xr và sau đó thực hiện phép co để tìm x c như sau: xc −x0 = β(xr −x0) xc = βxr+ (1−β)x0

Bước 7: So sánh các giá trị fc và f1 Tính fc

1/ Nếu f c f1 thì rõ ràng việc cố gắng tìm giá trị nhỏ hơn f1 không đạt được cần sang Bước 8.

Bước 8: Thu nhỏ kích thước của đơn hình tại một nửa, lấy x b làm chuẩn. Như vậy điểm xi được thay bằng điểm: x i − 1

2(x i +x b ) Tính các giá trị fi(i = 1,2, , n+ 1) Kiểm tra sự hội tụ nếu chưa hội tụ thì quay lại Bước 2.

Nếu σ nhỏ hơn độ chính xác thì giá trị các hàm rất gần nhau và do đó điểm cực tiểu gần là x b

* Chọn đơn hình là tam giác với ba đỉnh ban dầu là: x (0) 1 = [8; 9] T ;x (0) 2 = [10; 11] T ;x (0) 3 = [8; 11] T

* Bước lặp k=0 f(8; 9) = 45;f(10; 11) = 12;f(8; 11) = 65 Xác định trọng tâm của x (0) 1 và x (0) 3 x (0) 4.1 = 1

Ta nhận được x (0) 4 = [8; 10] T Ánh xạ qua x (0) 4 : x (0) 5.1 = 8 + 1(8−10) = 6 x (0) 5.2 = 10 + 1(10−11) = 9

Ta được x (0) 5 = [6; 9] T và f(6; 9) Vì f(6; 9) < f(8; 9) E ta thực hiện phép dãn: x (0) 6.1 = 8 + 2(6−8) = 4 x (0) 6.2 = 10 + 2(9−10) = 8

Cuối cùng ta nhận được x ∗ = [5; 6] T và f(x ∗ ) = 0.

Một số thuật toán giải số bài toán tối ưu phi tuyến có ràng buộc

Chương 3 tập trung vào việc khám phá các thuật toán giải bài toán tối ưu phi tuyến có ràng buộc, bao gồm khái niệm hàm Lagrange, phương pháp hàm phạt và các thuật toán tìm nghiệm xấp xỉ Những kết quả này được tham khảo từ các tài liệu [2], [3], [9].

3.1 Một số kiến thức cơ bản

Hàm Lagrange

Xét bài toán quy hoạch phi tuyến có ràng buộc tổng quát:

Lúc đó, hàm Lagrange tương ứng với bài toán trên có dạng sau:

F(x, λ) = f(x) +λ1g1(x) + +λmgm(x), với điều kiện λi ≥ 0,∀i = 1, m(các số λi ≥ 0,∀i = 1, m được gọi là các nhân tử Lagrange).

 thì F(x, λ) = f(x) +λ T G(x) Đặt λi = s 2 i , hàm Lagrange được định nghĩa trên đây được viết lại dưới dạng F(x, s 2 ) = f(x) + m

Chúng ta gọi các điểm (x, λ) = (x, s 2 ) là điểm dừng của hàm Lagrange nếu điểm (x, s) ∈ R n+m thỏa mãn hệ điều kiện sau đây:

Thiết lập điều kiện tối ưu Kuhn - Tucker

Trong phần này, chúng ta sẽ khám phá cách thiết lập điều kiện tối ưu Kuhn - Tucker cho bài toán quy hoạch phi tuyến có ràng buộc Chúng tôi sẽ minh họa thông qua một số ví dụ cụ thể mà không đi vào chi tiết chứng minh các điều kiện này.

Điều kiện Kuhn - Tucker được coi là điều kiện cơ bản trong lý thuyết tối ưu phi tuyến, đóng vai trò quan trọng trong việc phát triển các phương pháp tối ưu phi tuyến cổ điển.

Xét hệ điều kiện bao gồm điều kiện dừng của hàm Lagrange và điều kiện ràng buộc của Bài toán quy hoạch phi tuyến có ràng buộc (3.1)

Hệ điều kiện trên đây được gọi là điều kiện Kuhn - Tucker của Bài toán quy hoạch phi tuyến có ràng buộc (3.1)

Thiết lập điều kiện Kuhn - Tucker cho Bài toán quy hoạch phi tuyến có ràng buộc sau:

Minf(x) = (x 1 + 1) 2 + (x 2 −1) 2 Với điều kiện x = (x1, x2) ∈ D là miền ràng buộc được xác định bởi

Có thể kiểm nghiệm được rằng trong ví dụ này chúng ta có Bài toán quy hoạch phi tuyến có ràng buộc với hàm Lagrange:

F(x, λ) = (x1+1) 2 +λ1(x1−2)+λ2(x2−1)−λ3x1−λ 4 x2,(λi ≥ 0,∀i= 1,4). Điều kiện Kuhn - Tucker của bài toán được viết như sau:

Từ (3.2) và (3.6) suy ra: x1[2(x1 + 1) +λ1] = 0⇒ x1 = 0 ⇒ theo (3.4) ta có λ1 = 0

Với điều kiện λ1 = λ2 = 0, ta thấy trong hai điểm (x1 = 0, x2 = 0) và (x1 = 0, x2 = 1)chỉ có điểm (x1 = 0, x2 = 1) với(λ1 = λ2 = 0, λ3 = 3, λ4 0) thỏa mãn điều kiện dừng của hàm Lagrange.

Vậy phương án tối ưu toàn cục là (x1 = 0, x2 = 1) với fmin = 1.

Bằng cách áp dụng hàm Lagrange, bài toán quy hoạch phi tuyến có ràng buộc có thể được chuyển đổi thành bài toán không ràng buộc Điều này được thực hiện bằng cách thay thế hàm mục tiêu bằng hàm Lagrange và bổ sung các biến nhân tử Nhờ vậy, chúng ta có thể áp dụng các thuật toán đã được giới thiệu trong chương.

Để giải bài toán này, chúng ta có thể phát triển các thuật toán giải trực tiếp mà không cần sử dụng hàm Lagrange Dưới đây, chúng ta sẽ xem xét một số thuật toán khác nhau.

Một số thuật toán

Thuật toán Gradient 35 3.2.2 Phương pháp hàm phạt (Penalty function method) 38

Thuật toán Gradient Định nghĩa: Nón các hướng chấp nhận được tại a ∈ D là tập:

Hướng chấp nhận tại a:z = (x−a)+ε(x (0) −a);ε > 0.x (0) điểm xuất phát. Bước 1: Tìm điểm xuất phát x (0) ∈D

+ Giải bài toán quy hoạch tuyến tính phụ

Bước 3: Kiểm tra điều kiện tối ưu: Đặt σ k 5f(x (k) ),(x ∗ −x (k) ) + Nếu σ k ≥ 0 ⇒ X opt = x (∗) ⇒ Dừng

+ Nếu σk < 0 chưa tối ưu Khi đó hướng chấp nhận được là: z (k) = (x (∗) −x (k) ) +ε k (x (0) −x (k) ) Để thuật toán hội tụ, ta sẽ chọn εk = min n

0 < σ < 1 trong đó ta thường lấy σ = 1

Bước 4: Xác định phương án tiếp sau:

+ Xác định λ (k) lớn nhất: Đặt ϕ(λ) =f(x (k) +λz (k) ) λ (k) = max{λ > 0, x (k) +λz (k) ∈ D, ϕ 0 (λ)≤ 0}

Chú ý λ (k) thỏa mãn f(x (k) +λz (k) ) → min|λ >0, x (k) +λz (k) ∈ D Nhận xét

Phương pháp Gardient chuyển đổi bài toán phi tuyến thành một chuỗi các bài toán QHTT phụ, giúp đơn giản hóa quá trình giải quyết Các bài toán này có thể dễ dàng tìm ra phương án tối ưu thông qua phần mềm MATLAB bằng cách sử dụng thủ tục linprog( ).

+ Việc xác định bước đi tối ưu luôn thực hiện được bằng các thuật toán chia đôi hoặc lát cắt vàng vì f là hàm lồi.

Thuật toán có thể được mô phỏng qua các ngôn ngữ lập trình khi chúng ta mô tả quy trình xác định nón P(a) dựa trên từng bài toán cụ thể.

Ví dụ 6 Hàm mục tiêu f(x) = −6x 1 −4x 2 +x 2 1 +x 2 2 + 18 → min

Tìm x ∗ sao cho thỏa mãn mục tiêu và các ràng buộc.

Lấy một điểm bất kỳ trong miền ràng buộc: x (0) = (1; 5; 3)

Tại điểm này f(x (0) ) = 8,25 Đối Gradient − 5f(x):

− 5f(x (0) ) 6= 0 nên x (0) không phải điểm cực trị.

Vì d dλ 2 4f 2 = −26 < 0 nên λ = 0,5 đại lượng 4f đạt giá trị lớn nhất.Chọn điểm x (1) = (1,5 + 3.0,5; 3−2.0,5) = (3; 2)

Thử lại xem x (1) có trong miền ràng buộc không?

Nghĩa là không có cách di chuyển nào từx (1) làm giảmf nữa, vậyx (1) =x (∗) x (∗) = [3; 2] T ;f(x(∗)) = 5

3.2.2 Phương pháp hàm phạt (Penalty function method)

Bài toán cơ bản của quy hoạch phi tuyến tính bị ràng buộc tổng quát có dạng: f(x)→ min gj(x) ≤ 0;j = 1, m

Tìm x (∗) sao cho mục tiêu và các ràng buộc được thỏa mãn.

Mục đích của phương pháp hàm phạt là đưa việc giải bài toán bị ràng buộc về việc giải một chuỗi các bài toán không bị ràng buộc.

Trong phương pháp hàm phạt, ta thay thế hàm mục tiêu ban đầu f(x) bởi hàm mục tiêu mở rộng chứa thông số dương rk;k = 1,2,3,

HàmP k được gọi là hàm phạt, tham sốr k dương được gọi là tham số phạt. Hàm Gj của ràng buộc gj(x) được xây dựng sao cho:

- Bên ngoài tập chấp nhận được thì P(x, r k ) khác với f(x):

- Khi giải liên tiếp các bài toán không ràng buộc

P(x, rk)→ min;k = 1,2, thì Gj →0, do đó P(x ∗ , r) → f(x ∗ )

Các phương pháp hàm phạt được phân thành hai nhóm chính: phương pháp hàm phạt trong và phương pháp hàm phạt ngoài Trong đó, phương pháp hàm phạt trong (interior penalty function method) thường sử dụng hàm Gj được chọn theo một dạng cụ thể.

Cực tiểu hàm P k không nằm trong miền nghiệm chấp nhận được và hội tụ về nghiệm của bài toán cơ bản f(x) khi thông số rk thay đổi liên tục Phương pháp hàm phạt ngoài (exterior penalty function method) thường sử dụng hàm GJ dưới dạng cụ thể.

Khi thông số rk biến đổi đều, cực tiểu của hàm Pk sẽ hội tụ về nghiệm của bài toán cơ bản f(x), mặc dù nó nằm ngoài miền nghiệm chấp nhận được.

Theo phương pháp hàm phạt trong, hàm mục tiêu mở rộng là:

→ min Để giải bài toán không ràng buộc của P(x, r) ta dùng điều kiện cần:

Các phương trình này cho: x ∗ 1 (r) r 1 2 + 1 1 2

1 2 Để nhận được nghiệm của bài toán gốc, ta thấy: fmin = lim r→0Pmin(r) x ∗ 1 = lim r→0x ∗ 1 (r) x ∗ 2 = lim r→0x ∗ 2 (r) Các giá trị của f, x ∗ 1 , x ∗ 2 được cho trong bảng sau:

Sau đây chúng ta sẽ nghiên cứu chi tiết một số thuật toán sử dụng tư tưởng hàm phạt

A Một số phương pháp hàm phạt điểm trong

Hàm phạt p(x) thỏa mãn tính chất: i/ không âm và liên tục trên tập intD={x∈ R :gi(x)< 0, i = 1, , m} ii/ p(x)→ +∞ khi gi(x)→ 0 −

Hai hàm phạt điểm trong được sử dụng nhiều, do Fiacco và McCormick đưa ra, là: p(x) =− m

Phương pháp hàm phạt điểm bắt đầu từ một điểm x1 trong tập chấp nhận D, nhằm giải quyết chuỗi bài toán tối ưu không ràng buộc minψ(x, αk) với điều kiện x∈ Rn Trong đó, ψ(x, αk) được xác định là f(x) cộng với αkp(x), với {αk} là dãy tham số dương giảm dần về 0.

Để chuẩn bị cho thuật toán, trước tiên cần chọn một số ε > 0 nhỏ để kiểm tra điều kiện dừng Tiếp theo, chọn một điểm x₁ thuộc tập D sao cho gᵢ(x₁) < 0 với i = 1, , m Sau đó, xác định tham số phạt α₁ > 0 và một số à trong khoảng (0,1) Cuối cùng, khởi tạo k = 1.

Bước k 1 : Xuất phát từx k giải bài toán tối ưu không ràng buộc minψ(x, α k ) với điều kiện x∈ R n nhận được nghiệm xk+1,

Bước k 2 : if αkp(xk+1)< ε Then Dừng thuật toán (lấy xk+1 là nghiệm tối ưu của bài toán (P)

Bước k3; Đặt tham số phạt mới αk+1 :=àαk Đặt k := k+ 1 Chuyển về Bước lặp k. Định lí 3.1

Thuật toán 3.1 có những đặc điểm nổi bật: Đầu tiên, ψ(x, α) luôn lớn hơn hoặc bằng f(x) với mọi α > 0 và x là điểm chấp nhận được Thứ hai, điều kiện gi(xk) phải nhỏ hơn 0 cho tất cả i từ 1 đến m Cuối cùng, ψ(xk, αk) sẽ hội tụ về giá trị tối ưu của bài toán (P) khi αk tiến tới 0, và mọi điểm tụ của {xk} sẽ là nghiệm tối ưu cho bài toán (P).

Chứng minh i/ Hiển nhiên ii/ Nếu g i (x k )=0 , ta suy ra ψ(x k , α k ) không hữu hạn. iii/ Nếu x ∗ là nghiệm của (P), ta cần chứng minh lim k→∞ψ(xk, αk) = f(x ∗ )

Vì αk & 0,{ψ(x k , αk)} là dãy giảm và ψ bị chặn dưới (do f liên tục trên tập compac D nên bị chặn dưới) và α k p(x) ≥ 0), nên ta suy ra ψ(x k , α k ) hội tụ với ψ0 ≥ f(x∗).

Thật vậy: ψ(x k , α k )≥ f(x k ) ≥ f(x ∗ ) ψ0 = lim k→+∞ψ(xk, αk)≥ f(x∗) Nếu ε = ψ0 −f(x∗)> 0, do f liên tục nên ta có thể chọn x¯ sao cho f(¯x)< f(x ∗ ) + ε

Lấy k đủ lớn sao cho

Ta có ψ 0 ≤ ψ(x k , α k ) (vì {ψ(x k , α k )} là dãy giảm hội tụ với ψ 0 )

≤ ψ(¯x, αk) (vì ψ(xk, αk) đạt cực tiểu tại xk)

=ψ 0 Điều này mâu thuẫn Do đó, ε= ψ0 −f(x ∗ ) = 0, tức là ψ0 = f(x ∗ )

Tiếp theo, nếu x¯ là điểm hội tụ của {x k }, tức x¯ = limxk 1, theo i/ ψ(x k i , α k i ) ≥ f(x k i )

Từ đây ta suy ra ψ 0 = limψ(x k i , α k i ) ≥ f(¯x) Điều này có nghĩa là x¯ là cực tiểu

Chú ý Điểm cực tiểu của ψ(x, α) đều nằm trong tập chấp nhận được.

Trong bài toán tối ưu với hàm lồi f : R n → R và tập lồi D ⊂ R n, nếu x ∗ là nghiệm tối ưu địa phương thì x ∗ cũng đồng thời là nghiệm tối ưu toàn cục Hơn nữa, nếu x ∗ là nghiệm tối ưu địa phương chặt hoặc hàm f là hàm lồi chặt, thì x ∗ sẽ là nghiệm tối ưu toàn cục duy nhất của bài toán.

Giả sử f là hàm lồi khả vi trên R n, với x ∗ ∈ R n là nghiệm cực tiểu toàn cục của bài toán tối thiểu hóa min{f(x)|x∈ R n} Hàm f : R n → R được coi là phi tuyến nếu và chỉ nếu 5f(x∗) = 0 Một trong những phương pháp để giải bài toán này là thuật toán Fiacco - Cormick.

Hàm mục tiêu: f(x)→ min(max)

Các ràng buộc: g i (x) ≥ 0;i= 1,2, , I h j (x) = 0;j = 1,2, , J Hàm mục tiêu mở rộng được xây dựng ở dạng hàm phạt trong:

X j=1 h 2 j (x) rk là dãy số thực, đơn điệu giảm trong quá trình tính: r0 > r1 > r2 > > 0.

Ba cách chọn giá trị đầu r 0 khi tính P(x, r k ) → min a) rk = 1 b) Đặt p(x) I

Lấy x (0) là một điểm trong của miền chấp nhận được,

Trong đó H là ma trận Hessian của hàm p(x) tại x (0)

Thuật toán được mô tả bằng ngôn ngữ lập trình MATLAB như sau: function mfc=method_fiacco_cormick(epxilon, k) format short e; clc; r=1; muy=1/2;

X=[0; 1/2]; ss1; while ss1> epxilon count=0; ss; ep=1/2; lamdak =2/3; Xluu=[1; 1]; while and(ss > epxilon, count < k) count=count + 1; grad=[dh1px(X, r); dh1py(X, r)]; alpha=1; dk=-grad;

%+ xac dinh buoc di toi uu lamdak

X= X+lamdak*dk; ss=chuan1(X - Xluu, 2);

Xluu = X; end; ss1s(r*g(X)); r = r*muy; end; mcf=X; count;

Các kết quả thực hiện thuật toán được cho trong bảng dữ liệu sau đây

Bảng 3.3: Nghiệm xấp xỉ tối ưu sau các bước lặp f(x, y) = x 2 +y 2 g(x, y) =x+y−2

Số bước lặp Sai số Nghiệm xấp xỉ

Hàm mục tiêu: f(x) → min(max)

Hàm mục tiêu mở rộng được xây dựng ở dạng hàm phạt trong:

Dấu + khi tìm minf(x), dấu - khi tìm maxf(x); rk là nhân tử ở bước lặp thứ k; wj là trọng số (thường chọn wj = 1) Thuật toán:

+ Giải bài toán không ràng buộcP k = P(x, r k ) =f(x)±r k m

P j=1 w j g i (x) →min (Sử dụng thuật toán Gradient và quy tắc Armijo)

≤ ε (Trong cài đặt thường chọn điều kiện rk < ε) thỡ thuật toỏn dừng Ngược lại hiệu chỉnh rk+1 =àrk

Thuật toán Carroll được mô tả bằng ngôn ngữ MATLAB như sau: function mc=method_carroll(epxilon, k) format short e clc; r=1;

In the algorithm, we initialize the variable X to [2; 2] and set a loop to iterate while the conditions r > 10 and -10 are met A count variable is initialized to zero, and parameters ss and ep are defined as 1/2 and 2/3, respectively, with Xluu set to [1; 1] A nested loop continues as long as ss exceeds epsilon and the count remains less than k, incrementing the count with each iteration The gradient is computed using the functions dh1px and dh1py, and an initial step size alpha is set to 1 The search direction dk is determined as the negative gradient The algorithm adjusts alpha by checking if the difference in the function values at the new and current points exceeds a threshold, updating alpha by multiplying it with lamda The gradient is recalculated, and the search direction is updated accordingly until convergence criteria are satisfied, ultimately returning the optimized step size lamdak.

X= X+lamdak*dk; ss=chuan1(X - Xluu, 2);

Các kết quả thực hiện thuật toán được cho trong bảng dữ liệu sau đây

Bảng 3.4: Nghiệm xấp xỉ tối ưu sau các bước lặp f(x, y) = x 2 +y 2 g(x, y) =x+y−2

Số bước lặp Sai số Nghiệm xấp xỉ

B Phương pháp hàm phạt điểm ngoài

Hàm phạt p(x) định nghĩa bởi p(x) m

X i=1 θ(g i (x)) trong đó θ là một hàm một biến liên tục và thỏa mãn θ(y) = 0 nếu y ≤ 0 và θ(y) > 0 nếu y > 0.

Thông thường, hàm phạt p(x) có dạng p(x) : m

[max{0, g i (x)}] 2 Hàm mục tiêu của dãy bài toán tối ưu không ràng buộc tương ứng với bài toán (P) là ψ(x, α k ) =f(x) +α k p(x)

Dãy tham số {αk} là dãy số dương, đơn điệu tăng đến +∞ Đại lượng α k p(x) biểu thị lượng phạt, trong đó khi x là phương án chấp nhận được của bài toán (P), lượng phạt bằng 0 Ngược lại, nếu x không phải là phương án chấp nhận được, nó sẽ phải chịu một lượng phạt tương ứng với α k p(x).

Bước chuẩn bị: Cho số ε > 0 đủ bé (để kiểm tra điều kiện dừng của thuật toán) Chọn một điểm x 1 ∈ R n Chọn một tham số phạt α 1 > 0 và một số à ∈ (0,1) Đặt k = 1;

Bước k1: Giải bài toán tối ưu không ràng buộc minψ(x, αk) với điều kiện x∈ R n

Gọi nghiệm của bài toán này là x k+1

Bước k2: if α k p(x k+1 )< ε Then Dừng thuật toán (lấy x k+1 là nghiệm tối ưu của bài toán (P)

Bước k 3 : Đặt tham số phạt mới α k+1 := àα k Đặt k := k+ 1 Chuyển vềBước k. Định lí 3.3

Thuật toán 3.3 có những đặc điểm quan trọng sau: Đầu tiên, hàm ψ(x, α) luôn lớn hơn hoặc bằng f(x) với mọi α dương và x thuộc R n Thứ hai, chuỗi {ψ(x k , α k )} sẽ tăng lên khi α k tăng Cuối cùng, chuỗi này hội tụ tới giá trị tối ưu của bài toán (P) khi α k tiến tới vô cực, và mọi điểm hội tụ của x k đều là nghiệm tối ưu của (P).

Hàm mục tiêu: f(x) → min(max)

Các ràng buộc: gi(x) ≥ 0;i= 1,2, , I h j (x) = 0;j = 1,2, , J Hàm mục tiêu mở rộng được xây dựng ở dạng hàm phạt ngoài:

Trong đó: wi = 1 đối với gi(x) ≥ 0 wi = 0 đối với gi(x) < 0

Thuật toán được mô tả bằng ngôn ngữ MATLAB như sau function mp=pietrzykowski_chuan(epxilon, k) format short clc; t=4/3;

The algorithm initializes the variable X at [0; 0] and computes the difference between the function p(X, t) and f(X) to determine ss1 It sets a boundary for X at [10; 10] with a threshold muy of 2 The process continues while ss1 exceeds a small epsilon value, incrementing the count until it reaches a maximum k The gradient is calculated using partial derivatives dh1px and dh1py, and an initial step size alpha is set to 1 A descent direction dk is determined as the negative gradient The algorithm iteratively adjusts alpha by reducing it with a factor of lambda until the function value at the new point satisfies a specific improvement condition The final step size lamdak is recorded as the optimal alpha for the descent.

X= X+lamdak*dk; ss=chuan1(X - Xluu, 2);

Xluu = X; end; ss2=chuan1(X-Xluu1, 2)

Xluu1 = X; ss1=p(X, t)-f(X) t=t*muy end; mcf=X

Các kết quả thực hiện thuật toán được cho trong bảng dữ liệu sau đây

Bảng 3.5: Nghiệm xấp xỉ tối ưu sau các bước lặp f(x, y) = x 2 +y 2 g(x, y) =x+y−3

Số bước lặp Sai số Nghiệm xấp xỉ

Nội dung chính của luận văn tập trung vào việc nghiên cứu các thuật toán giải gần đúng cho bài toán quy hoạch phi tuyến có ràng buộc Những kết quả quan trọng mà luận văn đạt được bao gồm việc phát triển và cải tiến các phương pháp giải quyết, cũng như đánh giá hiệu quả của chúng trong thực tiễn.

1 Trình bày các thuật toán cơ bản giải mô hình bài toán quy hoạch tuyến tính bao gồm: Thuật toán hình học, thuật toán đơn hình.

2 Nghiên cứu mô hình bài toán quy hoạch lồi tổng quát.

3 Nghiên cứu các thuật toán tìm nghiệm tối ưu của hàm lồi một biến số, cài đặt các thuật toán trên ngôn ngữ lập trình MATLAB.

Ngày đăng: 05/10/2023, 14:20

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Nguyễn Nhật Lệ, Các bài toán cơ bản của tối ưu hóa và điều khiển tối ưu, NXB Khoa học và kỹ thuật, 2009 Sách, tạp chí
Tiêu đề: Các bài toán cơ bản của tối ưu hóa và điều khiển tối ưu
Tác giả: Nguyễn Nhật Lệ
Nhà XB: NXB Khoa học và kỹ thuật
Năm: 2009
[2] Nguyễn Đức Nghĩa, Tối ưu hóa, Nhà xuất bản Giáo dục, 2002 Sách, tạp chí
Tiêu đề: Tối ưu hóa
Tác giả: Nguyễn Đức Nghĩa
Nhà XB: Nhà xuất bản Giáo dục
Năm: 2002
[3] Bùi Thế Tâm, Trần Vũ Thiệu Các phương pháp tối ưu hóa, Nhà xuất bản Giao thông Vận tải, 1998 Sách, tạp chí
Tiêu đề: Các phương pháp tối ưu hóa
Tác giả: Bùi Thế Tâm, Trần Vũ Thiệu
Nhà XB: Nhà xuất bản Giao thông Vận tải
Năm: 1998
[4] Nguyễn Hải Thanh, Tối ưu hóa (Giáo trình dành cho ngành Tin hoc và Công nghệ thông tin), Nhà xuất bản Bách Khoa Hà Nội, năm 2006 Sách, tạp chí
Tiêu đề: Tối ưu hóa (Giáo trình dành cho ngành Tin hoc và Công nghệ thông tin)
Tác giả: Nguyễn Hải Thanh
Nhà XB: Nhà xuất bản Bách Khoa Hà Nội
Năm: 2006
[5] Bùi Minh Trí, Quy hoạch toán học, Nhà xuất bản Khoa học và kỹ thuật, 1999.Tiếng Anh Sách, tạp chí
Tiêu đề: Quy hoạch toán học
Tác giả: Bùi Minh Trí
Nhà XB: Nhà xuất bản Khoa học và kỹ thuật
Năm: 1999
[6] J.Cea, Lectures on Optimization - Theory and Algorithms Tata Insti- tute of Fuzdamental Ressarch, 1978 Sách, tạp chí
Tiêu đề: Lectures on Optimization - Theory and Algorithms
Tác giả: J. Cea
Nhà XB: Tata Institute of Fundamental Research
Năm: 1978
[7] R, Fletchers, Practical Methods of Optimization, Wiley, 2000 [8] C.T. Kelley, Iterative Methods of Optimization, SIAM, 1999 [9] J. Nocedal, S. J. Wright, Numerical Optimization, Springer, 1999 Khác

HÌNH ẢNH LIÊN QUAN

Bảng 2.1: Nghiệm xấp xỉ tối ưu sau các bước lặp - Một Số Thuật Toán Giải Số Bài Toán Tối Ưu Phi Tuyến.pdf
Bảng 2.1 Nghiệm xấp xỉ tối ưu sau các bước lặp (Trang 19)
Bảng 1.3: Nghiệm xấp xỉ tối ưu sau các bước lặp - Một Số Thuật Toán Giải Số Bài Toán Tối Ưu Phi Tuyến.pdf
Bảng 1.3 Nghiệm xấp xỉ tối ưu sau các bước lặp (Trang 21)
Bảng 2.2: Nghiệm xấp xỉ tối ưu sau các bước lặp - Một Số Thuật Toán Giải Số Bài Toán Tối Ưu Phi Tuyến.pdf
Bảng 2.2 Nghiệm xấp xỉ tối ưu sau các bước lặp (Trang 27)
Bảng 3.4: Nghiệm xấp xỉ tối ưu sau các bước lặp - Một Số Thuật Toán Giải Số Bài Toán Tối Ưu Phi Tuyến.pdf
Bảng 3.4 Nghiệm xấp xỉ tối ưu sau các bước lặp (Trang 54)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm