CHƢƠNG 2 : CÁCH TIẾP CẬN ĐỂ GIẢI BÀI TOÁN
3.2 Thuật toán mô phỏng luyện kim (Simulated Annealing)
Thuật toán luyện kim là phƣơng pháp tối ƣu hoá có thể áp dụng để tìm kiếm tối ƣu hoá toàn cục của hàm chi phí và tránh tối ƣu hoá địa phƣơng bằng việc chấp nhận một lời giải tồi hơn với một xác suất phụ thuộc nhiệt độ T.
Sơ đồ: Sơ đồ thể hiện trong một không gian lời giải thuật toán luyện kim sẽ tìm đến tối ƣu toàn cục với bƣớc nhảy từ tối ƣu địa phƣơng.
Trạng thái ban đầu
Hình 3.2. Sơ đồ thể hiện trong một không gian lời giải thuật toán luyện kim
Tiền thân của thuật toán luyện kim là thuật toán Monte Carlo năm 1953 của nhóm Metropolis. Thuật toán luyện kim đƣợc đề xuất bởi S.Kirk_ partrick năm 1982 và đƣợc công bố trƣớc công chúng năm 1983.
Thuật toán luyện kim có nguồn gốc từ cơ học hệ thống.Thuật toán luyện kim thực thi đơn giản và tƣơng tự quá trình luyện kim vật lý. Trong luyện kim vật lý kim loại đƣợc đốt nóng tới nhiệt độ cao và làm lạnh từ từ để nó kết tinh ở cấu hình năng lƣợng thấp (tăng kích thƣớc của tinh thể và làm giảm những khuyết điểm của chúng). Nếu việc làm lạnh không xảy ra từ từ thì chất rắn không đạt đƣợc trạng thái có cấu hình năng lƣợng thấp sẽ đông lạnh đến một trạng thái không ổn định (cấu trúc tối ƣu địa phƣơng).
Gọi E là năng lƣợng của trạng thái s, E’ là trạng thái năng lƣợng của trạng thái s’ và là sự chệnh lệch nhiệt độ giữa trạng thái s’ và trạng thái s. Nếu thì sự thay đổi kết quả đƣợc chấp nhận với xác suất trong đó T là nhiệt độ, kB là một hằng số vật lý đƣợc gọi là hằng số Boltzmann.
Nếu có số lƣợng lớn các bƣớc lặp đƣợc thực hiện ở mỗi nhiệt độ, hệ thống sẽ đạt trạng thái cân bằng nhiệt. Khi đó, sự phân bố xác suất của hệ thống trong trạng thái s ở nhiệt độ T là trong đó : là hàm phân phối.
Cực tiểu cục bộ
Cực tiểu toàn cục
Thuật toán luyện kim sử dụng một biến điều khiển toàn cục là biến nhiệt độ T. Ban đầu T ở giá trị rất cao và sau đó đƣợc giảm dần xuống. Trong quá trình tìm kiếm thuật toán luyện kim thay lời giải hiện thời bằng cách chọn ngẫu nhiên lời giải láng giềng với một xác suất phụ thuộcvào sự chênh lệch giữa giá trị hàm mục tiêu và tham số điều khiển T.
Quá trình tối ƣu hóa đƣợc tiếp tục cho tới khi cực tiểu toàn cục đƣợc tìm thấy hoặc tổng số bƣớc chuyển vƣợt quá một số tối đa các bƣớc chuyển đƣợc định trƣớc. Sự chuyển tiếp ở một nhiệt độ kết thúc khi đạt tới trạng thái cân bằng nhiệt. Sau khi đạt tới trạng thái cân bằng nhiệt thì nhiệt độ đƣợc giảm thấp hơn. Nếu hệ thống không đông lạnh và cũng không tìm đƣợc cực tiểu toàn cục thì vòng lặp vẫn tiếp tục và chỉ số k tăng. Hệ thống đông lạnh khi T tiến tới nhiệt độ T cuối do ngƣời dùng đƣa ra. Ta có sơ đồ thuật toán:
K, l: là biến điều khiển vùng lặp.
L: đánh dấu việc lặp lại ở nhiệt độ Tk, k tăng khi đạt cân bằng nhiệt ở nhiệt độ Tk
Tk, Sk: điều khiển quá trình xử lý.
Không gian trạng thái
Thuật toán luyện kim thực thi trong một không gian trạng thái. Không gian trạng thái là một tập hợp các trạng thái, mỗi trạng thái đại diện cho một cấu hình. Kí hiệu không gian trạng thái là S, số phần tử của không gian trạng thái là |S|.
Một quan hệ láng giềng trên S:
Tập trạng thái kết nối với trạng thái đó cho si S đƣợc kí hiệu là Ni, số phần tử của Ni gọi là cấp độ của si. Ni là tập các láng giềng của si.
Có hai trạng thái si và si-1 và xác suất để si là trạng thái hiện thời phụ thuộc vào hàm chi phí của si và hàm chi phí của si-1 và nhiệt độ T.
Có ba trạng thái liên tiếp si-1, si, si+1 thì trạng thái si-1 và si+1 không phụ thuộc vào nhau.
Xác suất mà s’ là trạng thái kế tiếp của s kí hiệu là P(s,s’,T) gọi là xác suất chuyển tiếp.
(3.1)
Hàm nhiệt độ và hàm chi phí
Đầu tiênkhởi tạo nhiệt độ T là T0. Quy trình phổ biến nhất là quy trình làm lạnh cân xứng:
Thuật toán kết thúc khi T = 0.
Hàm đánh giá cost là hàm xác định chi phí đƣợc dùng để ƣớc lƣợng một lời giải đó. Hàm chi phí của lời giải s kí hiệu là f(s).
Thuật toán dừng khi đó tìm đƣợc một lời giải đủ tốt và T là quá nhỏ mà xác suất tránh đƣợc là không đáng kể.
Một tiêu chuẩn kết thúc là chi phí trung bình thay đổi không đáng kể ở một vài giá trị liên tiếp nhau của T.
Khung của thuật toán luyện kim
Tất cả các bài toán giải bằng thuật toán luyện kim đều thực hiện theo các bƣớc:
Bƣớc 1: Đầu tiên, tìm điểm xuất phát của bài toán
Bƣớc 2: Liệt kê các láng giềng có thể có của lời giải hiện thời
Bƣớc 3: Tiến hành ƣớc lƣợng hàm mục tiêu hiện thời và hàm mục tiêu của láng giềng vừa tìm đƣợc
Bƣớc 4: Sinh một biến ngẫu nhiên thƣờng là phân bố mà có các tham số phụ thuộc vào hiệu quả của các giá trị hàm mục tiêu và tham số T.
Bƣớc 5: Nếu biến ngẫu nhiên lớn hơn hoặc nhỏ hơn một ngƣỡng cho trƣớc thì chấp nhận láng giềng vừa tìm đƣợc làm phƣơng án hiện tại
Bƣớc 6: Giảm nhiệt độ T.
Bƣớc 7: Quay trở lại từ đầu
Khi T →0 thì tìm đƣợc lời giải tối ƣu toàn cục. Tại những giá trị nhiệt độ cao các bƣớc chuyển đƣợc chấp nhận một cách ngẫu nhiên bất luận chúng là bƣớc chuyển có cải thiện hàm chi phí hay không. Khi nhiệt độ đƣợc giảm xuống xác suất chấp nhận lời giải có cải thiện tăng lên và xác suất chấp nhận lời giải không có cải thiện giảm xuống.
Các mã giảsau đây trình bày phƣơng pháp mô phỏng luyên kim nhƣ mô tả ở trên:
Procedure Simulated_Anneaning;
begin
t 0;
u trạng thái ban đầu nào đó; T nhiệt độ ban đầu;
repeat
v trạng thái được chọn ngẫu nhiên trong lân cận u; if cost(v) > cost(u) then u v
T g(T, t);
t t + 1; until T đủ nhỏ
end;
Trong thủ tục trên, hàm g(T, t) thỏa mãn điều kiện g(T, t) < T với mọi t, nó xác định tốc độ giảm của nhiệt độ T. Ngƣời ta chứng minh đƣợc rằng, nếu nhiệt độ T giảm đủ chậm, thì thuật toán sẽ tìm đƣợc nghiệm tối ƣu toàn cục.