Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
часть II Искусственный интеллект.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
4.04 Mб
Скачать

Лекция 33

10.7.2.Алгоритм отжига.

Для любого алгоритма с восхождением к вершине, который никогда не выполня­ет движения "вниз по склону", к состояниям с более низкой оценкой (или более вы­сокой стоимостью), гарантируется, что он окажется неполным, поскольку такой алгоритм всегда способен зайти в тупик, достигнув локального максимума. В отли­чие от этого алгоритм с чисто случайным блужданием (т.е. с перемещением к преем­нику, выбираемому на равных правах случайным образом из множества преемни­ков) является полным, но чрезвычайно неэффективным. Поэтому представляется разумной попытка скомбинировать каким-то образом восхождение к вершине со случайным блужданием, что позволит обеспечить и эффективность, и полноту.

В этом разделе мы рассмотрим метод оптимизации, который называется отжигом, или симуляцией восстановления (Simulated annealing). Как ясно из названия, метод по­иска моделирует процесс восстановления. Восстановление - это физический про­цесс, который заключается в нагреве и последующем контролируемом охлажде­нии субстанции. В результате получается прочная кристаллическая структура, которая отличается от структуры с дефектами, образующейся при быстром бес­порядочном охлаждении. Структура здесь представляет собой кодированное ре­шение, температура используется для. того, чтобы указать, как и когда будут приниматься новые решения.

Чтобы понять суть эмуляции отжига, переведем наше внимание с восхождения к вершине на градиентный спуск (т.е. минимизацию стоимости) и представим себе, что наше задание - загнать теннисный шарик в самую глубокую лунку на неровной поверхности. Если бы мы просто позволили шарику катиться по этой поверхности, то он застрял бы в одном из локальных минимумов. А встряхивая поверхность, можно вытолкнуть шарик из локального минимума. Весь секрет состо­ит в том, что поверхность нужно трясти достаточно сильно, чтобы шарик можно бы­ло вытолкнуть из локальных минимумов, но не настолько сильно, чтобы он вылетел из глобального минимума. Процесс поиска решения с эмуляцией отжига заключает­ся в том, что вначале происходит интенсивное встряхивание, которое в алгоритме соответствует нагреву до высокой температуры, после чего интенсивность встряхивания постепенно уменьшается, что в алгоритме моделируется понижением температуры.

Самый внутренний цикл алгоритма с эмуляцией отжига (рис. 10.31) полностью аналогичен циклу алгоритма с восхождением к вершине, но в нем вместо наилучшего хо­да выполняется случайно выбранный ход. Если этот ход улучшает ситуацию, то всегда принимается. В противном случае алгоритм принимает данный ход с некоторой вероят­ностью, меньшей 1. Эта вероятность уменьшается экспоненциально с "ухудшением" хо­да - в зависимости от величины E, на которую ухудшается его оценка. Кроме того, эта ве­роятность уменьшается по мере снижения "температуры" Т т.е.. "плохие" ходы скорее всего могут быть разрешены в начале, когда температура высока, но становятся менее вероят­ными по мере снижения Т.

На первых порах, в начале 1980-х годов, поиск с эмуляцией отжига широко ис­пользовался для решения задач компоновки СБИС. Кроме того, этот алгоритм на­шел широкое применение при решении задач планирования производства и других крупномасштабных задач оптимизации.

ДА

НЕТ

ДА

НЕТ

НЕТ

ДА

НЕТ

ДА

Рисунок 10.31. Алгоритм поиска с эмуляцией отжига, который представляет собой одну из версий алгоритма стохастического поиска с восхождением к вершине, в которой разрешены некоторые ходы вниз.

Создание начального решения.

Для большинства проблем начальное решение будет случайным. На самом

первом шаге оно помещается в mекущее решение. Другая возможность заключается в том, чтобы загрузить в качестве начального решения уже существующее, возможно, то самое, которое было найдено во время предыдущего поиска. Это предоставляет алгоритму базу, на основании которой выполняется поиск оптимального решения проблемы.

Модификация рабочего решения.

Модификация рабочего решения начинается с копирования текущего решения в рабочее решение. Затем мы произвольно модифицируем рабочее решение. Как именно модифицируется рабочее решение, зависит от того, каким образом оно представляется (кодируется). Представьте себе кодировку задачи коммивояжера, в кото­рой каждый элемент представляет собой город. Чтобы выполнить поиск по рабочему решению, мы берем два элемента и переставляем их. Это позволяет сохранить целостность решения, так как при этом не происходит повторения или пропуска города.

Расчёт энергии рабочего решения.

На этом этапе алгоритма у нас имеется два решения. Первое - это наше ори­гинальное решение, котоpoe называется текущим решением, а второе - найден­ное решение, которое именуется рабочим решением. С каждым решением связана определённая энергия, представляющая собой его эффективность (допустим, что чем ниже энергия, тем более эффективно решение).

Затем рабочее решение сравнивается с текущим решением. Если рабочее решение имеет меньшую энергию, чем текущее решение (то есть является более предпочтительным), то мы копируем рабочее решение в текущее решение и пере­ходим к следующей итерации.

Однако если рабочее решение хуже, чем текущее решение, мы определяем кри­терий допуска, чтобы выяснить, что следует сделать с рабочим решением.

Расчёт вероятности допуска рабочего решения.

Вероятность допуска основывается на следующем уравнении (которое, в свою очередь, базируется на законе термодинамики):

Р(Е) = ехр(-Е/Т)

Значение этой формулы визуально показано на рис. 10.32.

Рисунок 10.32. Графическое изображение формулы для расчёта вероятности допуска.

При высокой температуре (свыше 60С) плохие решения принимаются чаще, чем отбрасываются. Если энергия меньше, вероятность принятия решения выше. При снижении температуры вероятность принятия худшего решения также снижается. При этом более высокий уровень энергии также способствует уменьшению вероятнocти принятия худшего решения.

При высоких температурах симулированное восстановление позволяет принимать худшие решения для того, чтобы произвести более полный поиск решений. При снижении температуры диапазон поиска также уменьшается, пока не достигает равенства 0 при температуре равной 0.

Выбор случайного числа от 0 до 1.

Выбор случайного числа производится с использованием датчика случайных чисел. И если вероятность допуска рабочего решения больше случайного числа, то рабочее решение принимается, в противном случае оно отбрасывается.

Снижение температуры.

После ряда итераций по алгоритму при данной температуре мы ненамного снижаем её. Существует множество вариантов снижения температуры. В данном приме­ре используется простая геометрическая функция :

Тi+1= Тi

Константа меньше единицы. Возможны и другие стратегии снижения температуры, включая линейные и нелинейные функции.

Повтор.

При одной температуре выполняется несколько итераций. После завершения итераций температура будет понижена. Процесс продолжится до тех пор пока температура не достигнет Т.

Пример итерации.

Чтобы проиллюстрировать алгоритм, проследим несколько итераций. Обратите внимание, что если рабочее решение имеет меньший уровень энергии (то есть является лучшим решением) по сравнению с текущим решением, то всегда исполь­зуется только оно. Критерий допуска вступает в силу только при условии, что ра­бочее решение хуже, чем текущее.

Предположим, что температура окружающей среды равна 500, а энергия текущего решения составляет 10. Мы копируем текущее решение в рабочее решение и выполняем поиск. После оценки энергии устанавливаем, что энергия нового ра­бочего решения равна 20. В этом случае энергия рабочего решения выше, чем энергия начального решения. Поэтому мы используем критерий допуска:

Энергия текущего решения равна 10.

Энергия рабочего решения равна 20.

Дельта энергии для этого примера (энергия рабочего решения минус энергия текущего решения равна 10. Подставив это значение и температуру 50 в уравнение для оценки вероятности допуска, получаем вероятность:

Р = ехр(-10/50)=0,818731

Таким образом, на этом примере мы видим, что вероятность принятия худшего решения достаточно велика. Теперь рассмотрим пример с более низкой температурой. Предположим, что температура равна 2, а энергия имеет следующие показатели:

Энергия текущего решения равна 3.

Энергия рабочего решения равна 7.

Дельта энергии для этого примера равна 4. Подставив это значение и температуру в уравнение для оценки вероятности допуска, получаем вероятность:

Р = ехр(-4/2)=0,135335.

Данный пример показывает, что вероятность выбора худшего решения для последующих итераций очень невелика.