Імітаційний відпал!!!

Матеріал з wiki
Перейти до: навігація, пошук
Onpage keywords chain search with * wildcard. Example: sear* my nam* will find Searh my names and search my Name


Імітаційний відпал (SA) - це ще один ітеративний алгоритм вдосконалення, в якому включено випадковість для розширення пошукового простору та уникнення впадіння в локальний мінімум. Як випливає з назви, алгоритм імітує процес відпалу.

Відпал являє собою техніку в металопрокатці, де розплавлений метал нагрівається, а потім охолоджується поступовим способом, щоб рівномірно розподілити молекули в кристалічну структуру. Якщо метал охолоджується занадто швидко, це не призводить до кристалічної структури, а металева тверда речовина слабка і крихка (наповнена пухирцями та тріщинами). Якщо охолоджуватися поступово і керованим способом, кристалічна структура утворюється на молекулярному рівні, що призводить до великої структурної цілісності.

Основний алгоритм імітаційного відпалу наведено в нотатці. Почнемо з вихідного кандидата рішення та петлі, а температура перевищує нуль. У цьому циклі ми створюємо рішення сусідніх кандидатів, порушуючи наше поточне рішення. Це змінює рішення сусіднього рішення, але випадковим чином. Потім ми обчислимо енергію дельти між новим (суміжним) рішенням та нашим поточним рішенням. Якщо ця енергія дельти менша за нуль, тоді наше нове рішення краще, ніж старе, і ми приймаємо це (ми переміщуємо нове сусіднє рішення до нашого поточного рішення).

Нотатка: Алгоритм імітаційного відпалу.

simulated_annealing()
{
cur_solution = random()
computeE( cur_solution )
while (Temperature > 0)
adj_solution = perturb_solution( cur_solution )
computeE( adj_solution )
deltaE = adj_solution.energy – cur_solution.energy
/* Is new solution better, then take it */
if (deltaE < 0)
cur_solution = adj_solution
else
p = exp( -deltaE / Temperature )
/* Randomly accept worse solution */
if ( p > RANDOM(0..1) )
cur_solution = adj_solution
end
end
reduce Temperature
end
end simulated_annealing


Виконала Назаренко Валерія

Developed by Інститут Програмних Систем