Phương pháp gradient (chiếu)

Một phần của tài liệu bài toán quy hoạch tuyến tính và thuật toán đơn hình (Trang 119 - 121)

- Xét tọa độ

3.5.3Phương pháp gradient (chiếu)

Xét bài toán trên khi các hàm f, fi, hj là khả vi liên tục. Phương pháp gradient là dò tìm dọc theo hướng gradient hoặc đối gradient phương án tối ưu. Phương pháp gồm các bước sau:

B1: Chọn một điểm bất kỳ x(0) thuộc miền ràng buộc.

B2: Đi theo hướng đối gradient đối với bài toán min và đi theo hướng gradient nếu bài toán max.

B3: Chọn bước đi λ tối ưu

x(k+1) = x(k) −λ5 f(x(k)),

trong đó λ là giá trị để f(x(k+1)) = f(x(k) −λh5f(x(k))) đạt giá trị bé nhất theo λ tức là theo Fermat h∇f(x(k+1)),∇f(x(k))i = 0.

B4: Kiểm tra x có nằm trong miền ràng buộc không?

- Nếu chạm vào biên phải kiểm tra điều kiện 5f //5 fi.

- Quá trình kết thúc khi các véc tơ 5f và Pmj=15fj(x) song song, tức là h5f,Pm

j=15fj(x)i = 0. Ví dụ Xét bài toán

Với miền D giới hạn bởi: D =        f1(x) = 4x1 + 3x2 −1 ≤24 f2(x) =x21 −5x1 +x22 < 6 x1, x2 ≥0. - Lấy bất kỳ x(0) = (1.5,3)T ∈ D, tính f(x(0)) = 8.25.

- Đối gradient − 5 f(x(0)) = (3,−2)6= 0 nên x(0) không phải điểm cực trị. - Lấy x(1) = x(0) −λ5 f(x(0)) = (1.5 + 3λ,3−2λ) trong đó λ thỏa mãn

d∆f

dλ = h− 5 f(x(1)),− 5 f(x(0))i = 0 = 13−26λ = 0,

suy ra λ = 0.5.

- Vì ddλ2∆2f = −26 < 0 nên với λ = 0.5 thì ∆f đạt giá trị lớn nhất.

-Chọn x(1) = (1.5 + 3∗0.5,3−2∗0.5)T = (3,2)T và thử lại thấy x(1) ∈ D.

- Tính 5f(x(1)) = (6−3∗3,4−2∗2) = (0,0) nghĩa là không còn cách di chuyển x(1) để f giảm được nữa, do đó x(1) là phương án tối ưu.

Ví dụ Xét bài toán

f(x) = 2x1 + 3x2 −0.1x21 −0.1x22 →max.

Với miền D giới hạn bởi:

D =         f1(x) = 100−10x1 −x21 −20x2 −x22 ≥0 f2(x) = 120−20x1 −x21 −10x2 −x22 ≥0 f3(x) = 150−20x1 −x12 −20x2 −x22 ≥0.

Giải: 1. Chọn giá trị xuất phát: x(0) = (1,3)T;f(x(0)) = 10.

2. Tính gradient ∇f(x(0)) = (1.8,2.4)T.

3. Đặt x(1) = x(0) +λ1∇f(x(0)) = (1 + 1.8λ1; 3 + 2 + 2.4λ1).

4. Tính df(x(1))/dλ = h∇f(x(k)),∇f(x(0)) = 0, tính ra λ1 = 0.5.

5. x(1) = (1.9,4.2)T. Do f1(x(1)) = −24.5< 0, f2(x(1)) > 0, f3(x(1)) > 0, tức là ràng buộc đầu tiên bị phá vỡ tại x(1) nên ta tìm ∇f1(x(1)).

6. Tính ∇f1(x(1)) = (−13.8,−24.8)T.

λ2 = 0.05 ta được x(2) = (1.21,2.96)T.

8. Thay vào ta thấy x(2) nằm trong miền ràng buộc và f(x(2)) = 10.2774.

9. So sánh f(x(0)) < f(x(2)) hai giá trị này gần nhau nên x(2) chuyển dịch gần đường mức của hàm f(x). (adsbygoogle = window.adsbygoogle || []).push({});

10. Để tăng nhanh tốc độ hội tụ ta dịch chuyển theo hướng z từ x(0) qua

x(2) tức là z = x(2) −x(0) = (0.21,−0.04)T.

11. Lấy x(3) = x(2) + λ3z = (1.21 + 0.21λ3,2.96 −0.04λ3)T. Tính cực đại của hàm f(x(3)) theo λ3 ta chọn được λ3 = 6.5.

12 Vậy x(3) = (2.5750,2.700)T, f(x(3)) = 11.8579.

13. Kiểm tra ta thấy f1(x(3)) > 0, f2(x(3)) > 0, f3(x(3)) > 0 nên x(3) nằm trong miền ràng buộc.

14. Tính ∇f(x(3)) = (1.4850,2.4600),∇f1(x(3)) = (−15.15,−25.40)T. Hai véc tơ này gần song song. Do đó việc chuyển dọc theo chúng sẽ đi theo đường dích dắc gần biên và chạm biên.

15. Do vậy ta có thể lấy nghiệm x∗ = x(3).

Một phần của tài liệu bài toán quy hoạch tuyến tính và thuật toán đơn hình (Trang 119 - 121)