Phương pháp Nelde r Mead

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 108 - 115)

- Xét tọa độ

3.4.6 Phương pháp Nelde r Mead

Nelder và Mead đã dùng đơn hình là những đa diện biến dạng nhờ 3

phép biến đổi ánh xạ gương, phép co và phép dãn. Thuật toán bao gồm các bước sau:

B1: Tính giá trị hàm mục tiêu ở các đỉnh của đơn hình f(x1), f(x2), . . . , f(xn+1)

B2: Xác định giá trị lớn nhất fl giá trị tiếp theo fg và giá trị nhỏ nhất fb

các đỉnh tương ứng sẽ là xl, xg, xb.

B3: Xác định trọng tâm hình không kể đến đỉnh xl theo công thức

x0 = 1

n

X

i6=l

Hình 3.27: Các phép ánh xạ gương-phép co-phép dãn

B4: Thực hiện ánh xạ gương xl qua x0 nhận được xr, tính fr = f(xr).

Nếu hệ số ánh xạ α > 0 thì vị trí xr được xác định theo công thức:

xr = x0 + α(x0 −xl), xr = (1 +α)x0 −αxl và α = |xr −x0|/|x0 −xl| B5: So sánh fr và fb xảy ra:

1. fr < fb thì ta nhận được gí trị nhỏ nhất của hàm. Hướng từ f0

đến fr là hướng dịch chuyển tốt nhất cho dịch chuyển. Kéo dãn theo hướng này để tìm điểm xp (hình b)). Hệ số dãn γ > 1 được tính từ:

xp−x0 = γ(xr−x0), xp = γxr+ (1−γ)x0, γ = |xp−x0|/|xr−x0|.

Tính fp := f(xp).

- Nếu fp < fb ta thay xl bởi xp và kiểm tra điểm thứ (n+ 1)

của đơn hình về tính hội tụ đến cực tiểu. Nếu hội tụ thì dừng, nếu không quay lại B2:

- Nếu fp > fb thì bỏ điểm xp vì đã đi quá xa. Thay xl bởi xr và kiểm tra tính hội tụ, nếu vẫn chưa thì quay lại B2:

2. Nếu fr > fb nhưng fr < fg thì xr tốt hơn so với 2 điểm còn lại của đơn hình. Thay xl bằng xr, kiểm tra nếu chưa hội tụ thì quay lại B2:

3. Nếu fr > fb và fr > fg thì chuyển qua B6: B6: So sánh các giá trị fr và fl

1. - Nếu fr > fl thì chuyển về 2 của bước B6: - Nếu fr < fl thay xl bởi xr và thay fl bởi fr

- Nếu fr > fg thực hiện bước co. 2. Thực hiện phép co:

- Nếu fr > fl ta đã dịch quá xa theo hướng từ xl đến x0 nên cần sửa lại phép co để tìm xc (hình c): xc = x0 +β(xl) −x0

với 0< β < 1 là hệ số co

- Nếu fr < fl thay fl bằng fr va xl := xr sau đó thực hiện phép co và tìmxc (hình d) theo công thức sau: xc = x0+β(xr−x0) =

βxr + (1−β)x0).

B7: Tính fc. So sánh các giá trị fc và fl.

- Nếu fc < fl thì thay xl bởi xc, nếu chưa hội tụ thì quay về B2: - Nếu fc > fl thì tìm giá trị nhỏ hơn fl không được, phải chuyển

qua B8:

B8: - Thu nhỏ kích thước đơn hình còn một nửa, lấy xb làm chuẩn. Tức là xi được thay bằng xi := xi − 1 2(x i −xb) = 1 2(x i −xb).

- Tính các fi, i= 1, . . . , n+ 1. Kiểm tra tính hội tụ, nếu không quay lại B2:

B9: Tính σ2 = Pn+1

i=1(fi −f)2/(n+ 1), f = fi/(n+ 1) Nếu σ nhỏ hơn độ chính xácnào đó thì giá trị của các hàm số rất gần nhau vì vậy điểm

min rất gần với xb.

Ví dụ 3.4.31.

f(x) = 4x2! +x22 −40x1 −12x2 + 136 = 4(x1 −5)2 + (x2 −6)2 → min

1. Chọn đơn hình gồm 3 đỉnh x1 = (8,9)T;x2 = (10,11)T;x3 = (8,11)T.

k=0: - f(8,9) = 45 nhỏ nhất ;f(10,11) = 125 lớn nhất ;f(8,11) = 65. Do đó xb = (8,9)T;xg = (8,11)T;xl = (10,11)T. - Xác định trọng tâm: x0 = ((8 + 8)/2,(9 + 11)/2) = (8,10)T - Ánh xạ qua x0 : xr = (8 + 1(8 −10),10 + 1(10−11))T = (6,9)T Do xr = (6,9)T, f(xr) = 13. Vì f(xr) = 13 < 45 = f(xb) nên ta thực hiện phép dãn: -(Phép dãn:) xp = (8 + 2(6−8),10 + 2(9−10))T = (4,8)T . . . Ví dụ 3.4.32. Cực tiểu hàm 2 biến sau:

f(x1, x2) = x12 + 2x1x2 + 3x22 Lấy α = 1, β = 0.5, γ = 2. Vòng 1: - Các đỉnh đơn hình xb = (2,1)T;xg = (3,1)T;xl = (2,2)T - Giá trị hàm fb = 11;fg = 18;fl = 24. - Điểm trọng tâm: x0 = (xb +xg)/2 = 2.5,1)T -Phép phản xạ: xr = 2x0 −xl = (3,0)T;fr = 9 < fb - Phép dãn: xc = 2xr −x0 = (3.5,−1)T;f(xc) = 8.25 < fb = 11 thay xh bởi xe

-σ = 16.8472222> . Thực hiện bước sau.

Vòng 2: - Các đỉnh đơn hình xb = (3.5,−1)T;xg = (2,1)T;xl = (3,1)T

- Giá trị hàm fb = 8.25;fg = 11;fl = 18.

- Điểm trọng tâm: x0 = (xb +xg)/2 = 2.75,0)T

-Phép phản xạ:

- Phép dãn:

xc = 2xr −x0 = (2.25,−2)T;fc = f(xc) = 8.0625 < fb = 8.25

thay xl bởi xc

-σ = 1.8 = 29514 > . Thực hiện bước sau.

Vòng 3:- Các đỉnh đơn hình xb = (2.25,−2)T;xg = (3.5,−1)T;xl = (2,1)T - Giá trị hàm fb = 8.0625;fg = 8.25;fl = 11. - Điểm trọng tâm: x0 = (xb +xg)/2 = 2.875,−1.5)T - Phép phản xạ: xr = 2x0 −xl = (3.75,−4)T;fr = 32.0625 > fl = 11. - Phép co: xc = (xl +x0)/2 = (2.4375,−0.25)T;fc = f(xc) = 4.91016 < fl = 11 thay xl bởi xc

-σ = 2.3474426 > . Thực hiện bước sau. Vòng 4: - Các đỉnh đơn hình xb = (2.4375,−0.25)T;xg = (2.25,−2)T;xl = (3.5,−1)T - Giá trị hàm fb = 4.91;fg = 8.0625;fl = 8.25. - Điểm trọng tâm: x0 = (xb +xg)/2 = (2.34375,−1.125)T -Phép phản xạ: xr = 2x0 −xh = (1.1875,−1.25)T;fr = 3.1289. < fb = 4.91. - Phép dãn: xc = (2xr−x0) = (0.03125,−1.375)T;fc = f(xc) = 5.5869 > fl = 4.91 thay xl bởi xr

Vòng 5: - Các đỉnh đơn hình xb = (1.1875,−1.25)T;xg = (2.4375,−0.25)T;xl = (2.25,−2)T. - Giá trị hàm fb = 3.128906;fg = 4.910156;fl = 8.0625. - Điểm trọng tâm: x0 = (xb +xg)/2 = (1.8125,−0.75)T -Phép phản xạ: xr = 2x0 −xl = (1.1875,−1.25)T;fb ≤ fr = 4.015625 < fg thay xl bởi xr

-σ = 0.5288120 > . Thực hiện bước sau. . . .

Vòng 17: - Các đỉnh đơn hình xb = (0.018651,−0.10235)T;xg = (−0.048686,0.024738)T;xl = (0.043274,−0.010235)T

- Giá trị hàm fb = 0.00171813;fg = 0.00179747;fl = 0.00305140.

-σ = 4.10−7 < . Dừng.

3.4.7 Giải bài toán tối ưu phi tuyến không ràng buộc bằng MATHLAB

Tìm cực tiểu hàm sau:

f(x) = 100∗(x(2)−x(1)∗x(1))2 + (1−x(1))2

B1: Tạo M-file ứng với hàm cần tìm phương án tối ưu: function f=objfunc(x)

100∗(x(2)−x(1)∗x(1))2 + (1−x(1))2

B2: Thực hiện:

– Nhập giá trị ban xuất phat x0. Tiến hành tính toán theo các lệnh sau:

– Tinh giá trị f(x0). f=objfunc(x0)

options=optimset(’Large Scale’, ’off’);

[x, f val] = fminc( @objfunc,x0,options); Kết quả sẽ cho:

The values of function value at starting point f=24.20

Optimization termined: relative infinity-norm of gradient less than options. TolFun

x= 1.000 1.000

fval=2.8336e-011.

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 108 - 115)

Tải bản đầy đủ (PDF)

(136 trang)