- Xét tọa độ
3.6.2 Phương pháp Caroll
Bài toán chúng ta sẽ xét là (3.59) với ràng buộc là
fj(x) ≥ 0, j = 1,2. . . , m,
phương pháp Caroll là sử dụng hàm phạt trong để xét bài toán với hàm mục tiêu Φ(x, αk) := f(x)±αk m X j=1 wj fj(x)
với dấu + khi tìmmin và dấu − khi tìmmax, αk là nhân tử ở bước lặp thứ
B1: Chọn trọng số wj, bước t0, thông số α0, điểm xuất phát x(0), sai số . B2: i := 0;αi := 0. B3: k := 0, thiết lập ∇Φ(x(k), αk), tính f(x(k)), g(x(k)),Φ(x(k), αk) B4: k := k + 1;tk := t0. B5: x(k) := x(k−1) +tk∇Φ(x(k−1), αk−1) B6: Tính f(x(k)), g(x(k)),Φ(x(k), αk)
B7: Kiểm tra Φ(x(k), αk) < Φ(x(k−1), αk−1)?, nếu đúng chuyển B8, nếu sai chuyển B10:
B8: Kiểm tra k−1 = 0? nếu đúng chuyển B9:, sai chuyển về B3:
B9: i := i + 1;αi := αi−1/2. Kiểm tra αi < ?, nếu đúng x∗, f(x∗) dừng nếu không chuyển B3:
B10: Kiểm tra fj(x(k)) > 0?, nếu đúng k := k + 1 chuyển B5:, nếu sai đặt
tk := tk/2, tăng k := k+ 1, chuyển B5:
Thực ra phương pháp do Carroll đưa ra được phát biểu tóm lược như sau: Thay vào tìmmin của hàm xuất phát ta dùng phương pháp hàm chắn tìm tối ưu hàm Φ(x, rk) = f(x) +rk m X j=1 1 gj(x)
1. Chọn giá trị xuất phát x(1) sao cho gj(x(1)) > 0, giá tri r1 > 0 và cho
k = 1.
2. Tìm min của hàm Φ(x, rk) theo một phương pháp không ràng buộc nào đó để có x∗k.
3. Kiểm tra xem nghiêm x∗k đã gần là nghiệm của bài toán đã cho chưa. Nếu tìm được thì dừng, nếu không chuyển bước sau.
4. Xác định tham số phạt mới rk+1 = crk, c < 1.
3.6.3 Sử dụng MATHLAB để giải bài toán tối ưu phi tuyến có ràng buộc
Chương trình gôm những bước sau:
B1: Viết M-file chứa hàm mục tiêu (objfun.m, ví dụ hàm f = x(1)3 −6∗
x(1)2 + 11∗x(1) +x(3)): function f= objfun (x)
f = x(1)3 −6∗x(1)2 + 11∗x(1) +x(3);
B2: Viết M-file chứa các hàm ràng buộc M-file constraints.m (c là véc tơ cột các ràng buộc):
function [c, ceq] = constraints (x)
c = [x(1)2+x(2)2−x(3)2; 4−x(1)2−x(2)2−x(3)2;x(3)−5;−x(1);−x(2);−x(3)];
ceq = [];
B3: Gọi chương trình tìm phương án tối ưu (Viết nó trong MATLAB file). clc
clear all warning off
x0 = [.1, .1,3.0]; fprintf (’The values of function value and constraints at starting pointn’);
f = objf un(x0)
[c, ceq] = constraints(x0)
options = optimset (’LargeScale’, ’off’);
[x, f val] = f mincon(@objf un, x0,[],[],[],[],[],[],
@constraints, options)
fprintf (’The values of constraints at optimum solutionn’);
[c, ceq] = constraints(x)
Kết quả tính toán được liệt kê như sau:
This Produces the Solution or Ouput as follows: The values of function value and constraints at starting point
f= 4.0410 c= -8.9800 -5.0200 -2.0000 -0.1000 -0.1000 -3.0000 ceq = []
Optimization terminated: first-order optimality measure less than options. TolFun and maximum constraint violation is less than options.TolCon. Active inequalities (to within options.TolCon = 1e-006): lower upper in- eqlin ineqnonlin 1 2 4 x= 0 1.4142 1.4142 fval = 1.4142
The values of constraints at optimum solution c=
476 Nonlinear Programming III: Constrained Optimization Techniques -0.0000 -0.0000 -3.5858 0 -1.4142 -1.4142
ceq =
[]
3.7. CÁC PHƯƠNG PHÁP TỐI ƯU HIỆN ĐẠI3.7.1 Phương pháp GEN