Việc tìm cực đại của fx thực hiện một cách đơn giản bằng cách tìm cực tiểu của hàm −fx.. Các thuật toán cực tiểu hoá là các thủ thuật lặp đòi hỏi một giá trị ban đầu của biến x.. Nếu fx
Trang 1CHƯƠNG 8: TỐI ƯU HOÁ
§1. KHÁI NIỆM CHUNG VỀ TỐI ƯU HOÁ
hoá một hàm. Thông thường ta chỉ cần tìm cực tiểu một hàm là đủ. Việc tìm cực đại của f(x) thực hiện một cách đơn giản bằng cách tìm cực tiểu của hàm
−f(x). Hàm f là hàm giá trị hay hàm đối tượng, cần được giữ cực tiểu. Biến x
là biến có thể hiệu chỉnh tự do.
Các thuật toán cực tiểu hoá là các thủ thuật lặp đòi hỏi một giá trị ban đầu của biến x. Nếu f(x) có nhiều cực tiểu địa phương, việc chọn giá trị đầu sẽ xác định cực tiểu nào được tính. Ta không có cách nào bảo đảm là tìm được cực tiểu toàn cục.
Các biến có thể bị ràng buộc bằng các đẳng thức hay bất đẳng thức. Phần lớn các phương pháp là tìm cực tiểu không ràng buộc, nghĩa là không có hạn chế nào đối với biến x. Các bài toán này bao gồm tìm cực tiểu của hàm, tìm điểm tĩnh ‐ điểm có gradient triệt tiêu. Các bài toán tìm cực tiểu có ràng buộc khó hơn và thuật toán khá phức tạp.
đi xuống tại các điểm tiếp theo x1, x2, x3, cho đến tại xn hàm tăng lại thì dừng. Điểm cực tiểu bị vây trong khoảng (xn‐2, xn). Khoảng (xi+1, xi) không nên chọn là hằng số vì như vậy cần nhiều bước tính. Hợp lí nhất là nên tăng kích thước bước tính để đạt được cực tiểu nhanh hơn, ngay cả khi cực tiểu bị vây trong một đoạn khá rộng. Ta chọn kích thước tăng theo dạng hằng số: + =
Trang 2= −
1
x b rh và x2 = +a rh như hình vẽ. Nếu f1 = f(x1) lớn hơn f2 = f(x2) như hình
a thì cực tiểu nằm trong khoảng (x1, b) nếu ngược lại cực tiểu nằm trong khoảng (a, x2).
Trang 8Bước 3: Nếu không ta coi
điểm cực tiểu nằm đối diện với
điểm c trên đường ab(xem hình
và nếu f(r) < f(c) thì lấy r làm giá
trị mới của c; nếu f(r) ≥ f(b) thì
lấy:
và nếu f(s) < f(c) thì lấy s làm giá trị mới của c; nếu không bỏ các điểm b, c và dùng m và c1 = (a + c)/2 làm điểm b và c mới và cho rằng cực tiểu nằm quanh điểm a.
Trang 13
function [x, fx, xx] = newtons(f, x0, tolx, maxiter)
Trang 16thì hướng của [u] và [v] là liên hợp. Điều này cho thấy khi ta muốn cực tiểu hoá f(x) theo hướng [v], ta cần di chuyển theo hướng [u] để không làm hỏng cực tiểu trước đó. Với hàm bậc hai n biến độc lập ta có thể xây dựng n hướng liên hợp. Các phương pháp gradient liên hợp khác nhau dùng các kỹ thuật khác nhau để tìm hướng liên hợp.
3. Phương pháp Powell: Phương pháp Powell là phương pháp bậc zero, chỉ đòi hỏi tính f([x]). Thuật toán gồm các bước:
Trang 18‐ cho [x0], tính f([x0])
‐ khởi gán x(n) = xk; tính [g0] = ‐∇f([x0]); s(k) = ‐ g(xk)
‐ lặp k = 0, 1, 2,
• [xk+1] = [xk] + αk[sk]
Trang 21có thể trở về trạng thái năng lượng thấp, tạo thành một tinh thể duy nhất có cấu trúc hình chữ nhật. Làm nguội nhanh sẽ có thể tạo ra sự không đồng nhất
và làm biến dạng cấu trúc tinh thể giống như khi tìm cực tiểu toàn cục quá nhanh. Phương pháp mô phỏng quá trình ủ (simulated annealing ‐ SA) có thể thực hiện bằng cách dùng phân bố xác suất Boltzmann của mức năng lượng E tại nhiệt độ T, được mô tả bằng:
p(E)= αe−KTE (1)
Chú ý là ở nhiệt độ cao, đường cong phân bố xác suất phẳng trong một phạm
vi E rộng, ngụ ý là hệ thống có thể ở trạng thái năng lượng cao cũng ngang bằng ở trạng thái năng lượng thấp. Trong khi đó ở nhiệt độ thấp đường cong
Trang 22có khả năng ở mức năng lượng thấp nhiều hơn nhưng vẫn có một cơ hội nhỏ
ở trạng thái năng lượng cao để nó có thể thoát khỏi trạng thái năng lượng cực tiểu địa phương.
k 100 k
10 để tạo ra [∆x] và lấy [x1] = [x] + [∆x]
∗ nếu [∆f] = f([x1]) ‐ f([x]) < 0 ‐ [x] = [x1] và nếu f([x]) < [fo] thì [x] = [xo] và [fo] = f([xo])
∗ không thì:
‐ tạo số ngẫu nhiên z trong đoạn [0, 1] và cho [x] = [x1] chỉ trong trường hợp z < p
• Với [xo] gần với điểm cực tiểu mà ta đang tìm ta có thể dùng nó như giá trị đầu và dùng các quy tắc tìm cực tiểu địa phương khác để tìm điểm cực tiểu của hàm f([x])
Dựa trên thuật toán này ta xây dựng hàm simannealing(). Hàm này có hai
phần có số bước lặp thay đổi khi nhiệt độ giảm. Một phần có kích thước của bước tính [∆x] tạo ra bởi vec tơ ngẫu nhiên [y] có các giá trị nằm trong đoạn [‐
k 100 k
Trang 24§9. THUẬT TOÁN DI TRUYỀN
nhiên có định hướng, mô phỏng sự chọn lọc tự nhiên để có các cá thể sống sót thích nghi nhất. Cũng như thuật toán SA, GA cho phép tìm được cực tiểu toàn cục ngay cả khi hàm đối tượng có nhiều cực trị gồm các điểm uốn, các cực tiểu địa phương, các cực đại địa phương. Thuật toán di truyền lai gồm các bước: khởi gán, chọn lọc, vượt qua, đột biến. Thuật toán gồm các bước sau:
• Cho giá trị đầu [xo] = [xo1, xo2, ,xoN] (N là kích thước của biến), biên dưới [l] = [l1, ,lN], biên trên [u] = [u1, ,uN], kích thước của quần thể Np, vec tơ Nb = [Nb1, , NbN] gồm số bit các gán cho mỗi thể hiện của mỗi biến xi, xác suất sống sót Pc, xác suất đột biến Pm, tỉ lệ học η(0≤ η ≤ 1, thể
Trang 25• Khởi tạo ngẫu nhiên số cá thể ban đầu của quần thể.
Cho [xo] = [xo], fo = f([xo]) và xây dựng theo cách ngẫu nhiên mảng các cá thể ban đầu [X1] chứa Np trạng thái(trong vùng cho phép báo bởi biên trên [u] và biên dưới [l]) bao gồm cả trạng thái ban đầu [xo] bằng ccáh đặt:
−bm
∗ nếu fmin = f(nb) < fo thì đặt fo = f(nb) và [xo] = [x(nb)]
Trang 26Chọn lọc
Vượt qua
Trang 28X(n, :) = X(n, :) + eta*(fXm ‐ fX1(n))/fXm*(X(nb, :) ‐ X(n, :)); %Pt.(5) end
Trang 31sẽ chọn r1 (0.5 < r1 < 1) trong đoạn con [a ,b1 1]=[a , bo o] Ta đã kí hiệu b1 = do và
do co ∈ [ao, do] nên ta có:
fr
1
n
f1
f f ff
n 1
fr
f và:
Trang 32Thuật toán tìm Fibonacci gồm (n ‐ 2) lần tính. Đoạn con thứ (k+1) có được bằng cách giảm độ dài của đoạn thứ k bằng hệ số − −
−
= n 1 k k
n k
fr
f . Sau (n ‐ 2) lần tính, độ dài của bước cuối cùng là: