Simulated Annealing – Thuật toán mô phỏng luyện kim

Tổng quan thuật toán mô phỏng luyện kim (Simulated Annealing (SA))

Giới thiệu chung về thuật toán SA

SA là một thuật toán tìm kiếm xác suất di truyền, 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.

Tiền thân của SA là thuật toán Monte Carlo năm 1953 của nhóm Metropolis. Thuật toán SA đượ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.

SA có nguồn gốc từ cơ học hệ thống. SA 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à ∆E = E’ – E là sự chệnh lệch nhiệt độ giữa trạng thái s’ và trạng thái s. Nếu ∆E ≤ 0 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.

SA 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 SA 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ộc và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 hoá đượ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 độ Tcuối do người dùng đưa ra.

Mã giả thuật toán:

 
s ← s0; e ← E(s) // Initial state, energy.
sbest ← s; ebest ← e // Initial "best" solution
k ← 0 // Energy evaluation count. 
while k < kmax and e > emax // While time left & not good enough: 
T ← temperature(k/kmax) // Temperature calculation. 
snew ← neighbour(s) // Pick some neighbour. 
enew ← E(snew) // Compute its energy. 
if P(e, enew, T) > random() then // Should we move to it? 
s ← snew; e ← enew // Yes, change state. 
if e < ebest then // Is this a new best? 
sbest ← snew; ebest ← enew // Save 'new neighbour' to 'best found'. 
k ← k + 1 // One more evaluation done 
return sbest // Return the best solution found.

Xem thêm tại: http://en.wikipedia.org/wiki/Simulated_annealing
 
Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s