Matrenin Optimization Methods
Matrenin Optimization Methods
net/publication/307963525
CITATIONS READS
0 14,217
3 authors, including:
Some of the authors of this publication are also working on these related projects:
Global optimization and Topological methods with applications in Materials science View project
All content following this page was uploaded by Pavel V Matrenin on 10 September 2016.
МЕТОДЫ
СТОХАСТИЧЕСКОЙ
ОПТИМИЗАЦИИ
Утверждено Редакционно-издательским советом университета
в качестве учебного пособия
Новосибирск
2016
УДК 519.856(075.8)
М 346
Рецензенты:
канд. техн. наук, доц. А.В. Гаврилов;
канд. техн. наук, доц. В.С. Поздняков
Матренин П.В.
М 346 Методы стохастической оптимизации: учебное пособие /
П.В. Матренин, М.Г. Гриф, В.Г. Секаев. – Новосибирск: Изд-во
НГТУ, 2016. – 67 с.
ISBN 978-5-7782-2861-0
Учебное пособие раскрывает принципы, модели и методы стоха-
стической оптимизации, рекомендации по их реализации и примене-
нию на практике, дает примеры использования. Кроме того, пособие
содержит описание практической работы по данной теме.
Адресовано студентам и специалистам, изучающим методы опти-
мизации и системы искусственного интеллекта.
УДК 519.856(075.8)
Введение ..................................................................................................................5
1. Описания алгоритмов .........................................................................................7
1.1. Термины и обозначения ..............................................................................7
1.2. Случайный поиск, поиск с возвратом......................................................10
1.3. Алгоритм имитации отжига .....................................................................11
1.4. Генетический алгоритм.............................................................................12
1.5. Алгоритм роя частиц .................................................................................15
1.6. Алгоритм роя пчел ....................................................................................18
1.7. Алгоритм поиска косяком рыб .................................................................21
1.8. Алгоритм колонии муравьев ....................................................................25
2. Практическое использование алгоритмов .....................................................29
2.1. Области применения .................................................................................29
2.2. Машинное обучение..................................................................................30
2.2.1. Задача машинного обучения ...........................................................30
2.2.2. Признаки...........................................................................................31
2.2.3. Виды задач и примеры ....................................................................32
2.2.4. Методы машинного обучения и оценка качества .........................33
2.2.5. Обучение как задача оптимизации.................................................33
2.2.6. Примеры использования стохастической оптимизации для
задач обучения .................................................................................35
2.3. Рекомендации по реализации алгоритмов ..............................................38
3. Практическая работа по стохастической оптимизации ................................45
3.1. Описание ....................................................................................................45
3.2. Описание программного обеспечения визуализации............................46
3.3. Практическое задание ...............................................................................50
3.3.1. Начало работы..................................................................................50
3.3.2. Демонстрация алгоритма роя частиц .............................................53
3.3.3. Демонстрация алгоритма роя пчел.................................................55
3.3.4. Демонстрация алгоритма имитации отжига..................................56
3.3.5. Демонстрация генетического алгоритма .......................................58
3.3.6. Индивидуальные задания................................................................59
Контрольные вопросы ..........................................................................................61
Библиографический список .................................................................................63
4
ВВЕДЕНИЕ
Детерминированные эвристические (жадные) методы основаны на
идее локально оптимальных выборов на каждом шаге. Принцип жад-
ного выбора может дать оптимальное решение, если последователь-
ность таких выборов дает глобально оптимальное решение [15], т. е.
на каждом шаге алгоритм делает выбор такого варианта, который ка-
жется наилучшим на данном шаге. Выбор, сделанный в жадном алго-
ритме, может зависеть от сделанных ранее выборов, но он никак не
зависит от выборов на последующих шагах или от решений последу-
ющих подзадач, в отличие от метода динамического программирова-
ния. Такие методы позволяют получать решения очень быстро, так
как формируют лишь один вариант решения задачи на основе неко-
торых правил, но полученное таким образом решение может оказать-
ся как наилучшим, так и очень далеким от наилучшего в зависимости
от экземпляра задачи.
Например, для задачи календарного планирования, в которой нуж-
но определить наилучшую последовательность выполнения этапов,
реализация жадного алгоритма может быть, например, такой: «выби-
рать на каждом шаге этап, выполнение которого завершится как можно
раньше». Существуют более сложные жадные эвристические алгорит-
мы, основанные на назначении требованиям приоритетов в зависимо-
сти от многих факторов, а также на использовании нескольких эври-
стических правил для совершения выбора на каждом шаге. Однако да-
же сложные эвристические правила могут быть эффективными только
в сочетании с другими более мощными оптимизационными алгорит-
мами. Во многих задачах оптимизации эффективность жадных алго-
ритмов очень сильно зависит от условий конкретной задачи.
Стохастические (рандомизированные) эвристические методы также
не гарантируют получение точного решения, но они, как правило, поз-
воляют находить достаточно близкие для практического использова-
ния решения за приемлемое время. При этом стохастическая природа
5
большинства методов делает их применение нетривиальной задачей,
поскольку для каждой алгоритмической реализации и для каждого
класса задач оптимизации эффективность, быстродействие, сходи-
мость, влияние условий задачи и параметров алгоритма требуют тща-
тельного исследования. Сказанное здесь относится только к стохасти-
ческим методам, основанным на некоторых эвристиках. Кроме них
существуют и очень простые стохастические методы, такие как слу-
чайный поиск.
Рассматриваемые далее алгоритмы роевого интеллекта, эволюци-
онные алгоритмы и алгоритм имитации отжига имеют одну основу, а
именно конечные цепи Маркова. Однако рассмотренные алгоритмы
появились не в результате изучения цепей Маркова или их применения
для решения задач оптимизации. Они стали результатом моделирова-
ния, например, поведения птиц в стае (алгоритм роя частиц) или изу-
чения принципов поведения муравьев (алгоритм «колонии муравьев»
или «муравьиный алгоритм»). Уже после распространения генетиче-
ского алгоритма и других к ним были применены различные матема-
тические модели, в том числе и цепи Маркова. Использование цепей
Маркова позволяет доказать сходимость рассматриваемых алгоритмов
к глобальному оптимуму только теоретически при устремлении вре-
мени работы алгоритма к бесконечности. Однако такой подход не объ-
ясняет показанную в многочисленных экспериментах высокую эффек-
тивность рассматриваемых стохастических алгоритмов оптимизации
для решения практических задач с ограничениями по времени. Рас-
сматриваемые алгоритмы называют алгоритмами дискретной оптими-
зации, поскольку они работают пошагово, по итерациям, а не непре-
рывно. Область же применения включает в себя и задачи дискретной
оптимизации (комбинаторные), и задачи непрерывной оптимизации, и
гибридные задачи.
6
1. ОПИСАНИЯ АЛГОРИТМОВ
7
– гармонический поиск;
– генетический алгоритм;
– культурный алгоритм;
– кукушкин поиск;
– меметические алгоритмы;
– сорняковый алгоритм.
Роевой интеллект включает в себя такие алгоритмы:
– алгоритм гравитационного поиска;
– алгоритм динамики формирования рек;
– алгоритм колонии муравьев;
– алгоритм летучих мышей;
– алгоритм роения бактерий;
– алгоритм роя пчел;
– алгоритм роя частиц;
– алгоритм светлячков;
– алгоритм стаи волков;
– гармонический поиск;
– интеллектуальные капли воды;
– обезьяний алгоритм;
– поиск косяком рыб;
– стохастический диффузионный поиск;
– тасующий алгоритм прыгающих лягушек;
– улучшенный алгоритм поиска кукушки;
– электромагнитный поиск.
8
Рассматривается задача максимизации, которая легко сводится к
задаче минимизации:
9
1.2. Случайный поиск, поиск с возвратом
Самым простым методом поиска является произвольная выборка
решений. Случайным образом генерируются и оцениваются произ-
вольные решения X до тех пор, пока не будет найдено достаточно хо-
рошее решение или не пройдет заданное время или число итераций
алгоритма. В качестве результата выбирается наилучшее решение из
всех, которые были сформированы в процессе выборки. Основным до-
стоинством метода является простота, хотя выбор произвольных ре-
шений с одинаковой вероятностью может быть нетривиальной зада-
чей. Существуют некоторые условия, при выполнении которых метод
случайного поиска можно успешно применять [15]:
– пространство решений содержит высокую долю удовлетвори-
тельных решений;
– пространство решений не является однородным. Иными словами,
нельзя определить признаки приближения к оптимальному решению.
Простые числа длинами в несколько сотен цифр часто получают
путем случайной генерации чисел и проверки их на простоту, так как
такие числа встречаются относительно часто и сложно выделить при-
знаки близости известного произвольного числа к ближайшему неиз-
вестному простому числу.
Случайный поиск неэффективен для задач, пространство решений
которых не является однородным. Можно устранить этот недостаток,
если на каждой итерации алгоритма учитывать качество предыдущего
решения (поиск с возвратом). Для этого в пространстве оптимизируе-
мых параметров делается шаг в случайном направлении. Если значе-
ние критерия в новом состоянии не лучше, чем ее значение на преды-
дущем шаге, то поиск возвращается в предыдущее состояние, после
чего снова делается шаг в случайном направлении. Если же шаг уда-
чен, т. е. новое состояние лучше предыдущего, то последующий шаг
делается уже из нового состояния. Эффективность метода низкая, так
как при попадании в локальный экстремум длина шага может быть не-
достаточной для выхода из него.
Два рассмотренных метода имеют очень ограниченную область
эффективного использования по сравнению с рассмотренными далее
методами, однако приемы генерации случайного решения, выполнения
шага для перехода в новое состояние и возврата так или иначе исполь-
зуются во всех стохастических методах.
10
1.3. Алгоритм имитации отжига
Алгоритм возник в середине 1980-х годов, его основатели: Скотт
Киркпатрик, Даниель Желатт, Марио Вечи и Владо Церни [27]. Алго-
ритм основан на аналогии с процессом кристаллизации вещества,
например, при отжиге металла. В ходе этого процесса температура ве-
щества понижается, оно отвердевает, при этом замедляется скорость
движения частиц вещества.
Кристаллическую решетку можно представить как систему частиц,
а ее энергетическое состояние – совокупностью состояний частиц. Ча-
стицы переходят из одного энергетического состояния в другое произ-
вольным образом, но вероятность переходов зависит от температуры
системы. Вероятность перехода из высокоэнергетического состояния в
низкоэнергетическое велика при любой температуре, также существу-
ет отличная от нуля вероятность перехода в состояние с более высоким
значением энергии. Эта вероятность тем выше, чем меньше разница
между состояниями и чем выше температура системы.
Если в роли физической системы представить задачу оптимизации,
в роли энергии системы – значение целевой функции f(X), а в роли ча-
стиц – управляющие переменные X, то можно решать задачу оптими-
зации функции f(X), используя механизмы и законы, которые опреде-
ляют процесс отвердевания. Необходимо задать закон, по которому
будет меняться температура системы, закон, по которому будет слу-
чайным образом изменяться значение координат в пространстве реше-
ния, и правило определения перехода частицы в точку с новыми коор-
динатами. Кроме того, нужно выбрать начальную и конечную темпе-
ратуру (T0 и Tf).
Ниже приведены шаги алгоритма.
1. Генерация случайного начального состояния.
2. Сравнение значения функции с наилучшим найденным, если те-
кущее (X) лучше, то оно принимается в качестве лучшего.
3. Вычисление случайного нового состояния (Xnew) и определение
значения функции для него. Закон распределения может быть любым,
например, экспоненциальным:
x = x + r1Mxln(r2),
11
Mx – параметр алгоритма, от которого зависит, как далеко от текущей
точки может переместиться процесс поиска за один шаг.
4. Если новое состояние лучше текущего, система переходит в
новое состояние (X = Xnew), иначе случайным образом принимается
решение о переходе или не переходе в новое состояние. При этом в
случае максимизации может быть использовано следующее условие
перехода:
( X new ) ( X )
r,
T
T0
T ,
eivt
12
[24]. Генетический алгоритм (ГА) относится к стохастическим методам
и основан на принципе естественного эволюционного отбора. Идея
генетических алгоритмов заимствована у живой природы и состоит в
моделировании эволюционного процесса, конечной целью которого
является получение оптимального решения сложной комбинаторной
задачи. В описании метода используются упрощенные биологические
термины.
Основной идеей ГА является борьба за существование между ре-
шениями задачи [24]. Каждое решение записывается в виде некоторого
вектора значений (аллелей), который называется хромосомой, или осо-
бью. Совокупность решений называют популяцией. Каждая особь в
популяции оценивается значением целевой функции, рассчитанной на
основе значений из хромосомы. Более перспективные решения прохо-
дят в следующую стадию и оказывают влияние на «потомство», т. е. на
вновь генерируемые решения.
Необходимо представить задачу таким образом, чтобы ее решение
можно было бы записать в виде генотипа, т. е. вектора значений (ге-
нов). Например, для поиска максимума функции десяти аргументов
y(x1, x2,…, x10) генотип будет состоять из десяти чисел (значений x1,
x2,…, x10), а значение функции y от этих чисел характеризует приспо-
собленность генотипа, поэтому оптимизируемая функция также назы-
вается функцией приспособленности, или фитнесс-функцией.
Стандартный ГА начинает свою работу с формирования начальной
популяции как конечного набора допустимых решений задачи (хромо-
сом). Эти решения могут быть выбраны как случайным образом, так и
с помощью приближенных алгоритмов. На каждом шаге эволюции
формируется новая популяция с помощью вероятностного оператора
селекции. Для каждой новой особи популяции выбираются два реше-
ния, или «родители» (в общем случае родителей может быть и больше
двух). Вероятность выбора решения в качестве родительского прямо
пропорциональна его качеству. В ходе скрещивания двух особей они
по какому-либо правилу обмениваются элементами хромосом (такой
обмен называют кроссинговером). Кроссинговер (употребляется также
название кроссовер, или скрещивание) создает из родительских хромо-
сом одну или несколько новых хромосом. В простейшем случае крос-
синговер в генетическом алгоритме реализуется путем разрезания век-
тора хромосом родителей в случайной позиции и обмене частями век-
торов (рис. 1).
13
03142570 03142551
76233051 76233070
14
1.5. Алгоритм роя частиц
Специалист в области компьютерной графики Крейг Рейнольдс
создал в 1986 году компьютерную модель для визуальной имитации по-
ведения стаи птиц, основанную на том, что движение каждой птицы
описывается рядом простых правил, связанных с ориентацией на
остальных птиц стаи. Модель заинтересовала ученых и в 1995 году
Джеймс Кеннеди и Рассел Эберхарт предложили метод для оптимиза-
ции непрерывных функций, названный ими алгоритмом роя частиц [26].
Стая птиц всегда действует скоординированно, каждая птица дей-
ствует согласно простым правилам, следит за другими птицами и согла-
сует свое движение с ними. Найдя источник пищи, птица сообщает о
нем всей стае. Именно этот факт создает коллективное поведение и рое-
вой интеллект. Источники пищи обычно расположены случайным обра-
зом, и одной птице очень сложно быстро найти их. Только в том случае,
если птицы будут обмениваться информацией, вся стая сможет выжить.
При переходе к модели слово «птица» заменено на слово «частица»
и вводятся следующие положения:
– частицы существуют в мире, где время дискретно;
– частицы оценивают свое положение с помощью фитнесс-функ-
ции;
– каждая частица знает позицию в пространстве, в которой она
нашла наибольшее количество пищи (своя наилучшая позиция);
– каждая частица знает позицию в пространстве, в которой найдено
наибольшее количество пищи среди всех позиций, в которых были все
частицы (общая наилучшая позиция);
– частицы имеют тенденцию стремиться к лучшим позициям, в ко-
торых были сами, и к общей наилучшей позиции;
– частицы случайным образом меняют свою скорость, так что опи-
санная тенденция определяет лишь усредненное движение частиц;
– частицы обладают инерцией, поэтому их скорость в каждый мо-
мент времени зависит от скорости в предыдущий момент;
– частицы не могут покинуть заданную область поиска.
Основная идея метода заключается в перемещении частиц в про-
странстве решений. Пусть решается задача нахождения минимума
(максимума) функции вида f(X), где X – вектор варьируемых парамет-
ров, которые могут принимать значения из некоторой области D. Тогда
каждая частица в каждый момент времени характеризуется значением
параметров X из области D (координатами точки в пространстве реше-
ний) и значением оптимизируемой функции f(X) (привлекательностью
15
данной точки). При этом частица «помнит» наилучшую точку в про-
странстве решений, в которой была, и стремится в нее вернуться, но
подчиняется также закону инерции и имеет склонность к небольшому
стохастическому изменению направления движения. Однако этих пра-
вил недостаточно для перехода к системе, так как не заданы связи
между элементами. В качестве связи используется так называемая об-
щая память, благодаря которой каждая частица знает координаты
наилучшей точки среди всех, в которых была любая частица роя.
В итоге на движение частицы влияют стремление к своему наилучше-
му положению, стремление к наилучшему среди всех частиц положе-
нию, инерционность и случайные отклонения.
Алгоритм завершается при достижении заданного числа итераций
либо при достижении удовлетворительного решения, либо после исте-
чения отведенного на работу времени. Таким образом, алгоритм мож-
но записать следующим образом.
1. Случайно распределить частицы в области решения, назначить
нулевые начальные скорости.
2. Значения оптимизируемой функции по каждой частице c обнов-
лением при необходимости локальных и глобальных лучших решений.
3. Вычислить новые значения скоростей по каждой частице.
4. Вычислить новые координаты частиц.
5. Если выполнено условие завершения, закончить алгоритм, иначе
перейти на шаг 2.
Результатом работы алгоритма является глобальное лучшее ре-
шение.
Согласно формуле (2) алгоритм роя частиц PSO = {S, M, A, P, I, O}.
1. Множество агентов (частиц) S = {s1, s2,…,s|S| }, |S| – количество
частиц. На j-й итерации i-я частица характеризуется состоянием
sij X ij , Vij , X ijbest , где X ij x1ij , xij2 , ..., xij – вектор варьируемых
параметров (положение частицы); Vij v1ij , vij2 , ..., vij – вектор скоро-
стей частицы; X ijbest bij1 , bij2 , ..., bij – наилучше по значению фитнесс-
функции положение частицы среди всех положений, которые она за-
нимала в процессе работы алгоритма от 1-й до j-й итераций; ℓ – коли-
чество варьируемых параметров.
2. Вектор M X best
j – наилучшее значение вектора варьируемых
параметров, которое было получено среди всех частиц от 1-й до
16
j-й итерации алгоритма. Этот вектор обеспечивает косвенный обмен
опытом между частицами.
3. Алгоритм A описывает механизмы функционирования роя ча-
стиц. Существуют различные модификации этого алгоритма. Далее
представлено описание базового алгоритма.
3.1. Генерация начальных положений и скоростей (j = 1):
X ibest
1 X ij , i 1,,| S | .
X best
j X ij , ( X best
j ) ( X ij ) , i 1,,| S | .
Vij 1 Vij 1 X ijbest X ij rnd1 2 ( M X ij )rnd 2 , i 1,, | S | ,
17
Vij 1 ,Vmin Vij 1 Vmax ,
Vij 1 Vmin ,Vij 1 Vmin , i 1,, S ,
Vmax ,Vij 1 Vmax ;
X ij Vij 1 , G ( X ij Vij 1 ) 1,
X ij 1 i 1,, | S | ,
X ij , G ( X ij Vij 1 ) 0,
18
Для перехода к формальному описанию алгоритма необходимо
представить поле с цветами как пространство поиска решения, а коли-
чество нектара как критерий задачи оптимизации, т. е. целевую функ-
цию. На каждом шаге работы алгоритма среди всех агентов выбирает-
ся nb лучших по значению целевой функции. Среди прочих выбирается
еще ng лучших, так называемых «выбранных», или «перспективных»
(здесь верхние индексы не являются показателем степени). В некото-
рых вариантах алгоритма требуется, чтобы расстояния между каждой
парой позиций в объединенном множестве лучших и выбранных пози-
ций не превышали определенной величины. Иными словами, если есть
две близкие позиции, то худшая из них по значению целевой функции
отбрасывается, вместо нее берется позиция другого агента, подходя-
щая под условия.
Определенные таким образом позиции (множество лучших Nb, и
множество выбранных Ng) запоминаются, и на следующем шаге в
окрестность каждой лучшей позиции высылается cb пчел, а каждой вы-
бранной cg. Пчела, посылаемая в окрестность участка, попадает в слу-
чайную точку внутри окрестности, например, в двумерном простран-
стве окрестность позиции с центром в точке (x, y) представляет область
([x – rx; x+rx], [y – ry; y+ry]), где rx и ry – параметры алгоритма. Воз-
можно использование одного коэффициента rx по всем измерениям
или вектора RX. Пчелы-разведчики в количестве ns высылаются в слу-
чайные позиции по всему пространству поиска на каждой итерации.
Алгоритм завершается при достижении заданного числа итераций
либо при достижении удовлетворительного решения, либо после ис-
течения отведенного на работу времени. Ниже приведены шаги алго-
ритма.
1. Послать ns разведчиков в случайные точки и вычислить значения
оптимизируемой функции в них.
2. Отобрать из полученных участков Nb лучших и Ng выбранных с
учетом пересечений. Может оказаться, что участков меньше Nb + Ng,
тогда выбрать все имеющиеся с учетом пересечений.
3. Послать в окрестность каждого лучшего участка cb пчел и в
окрестность каждого выбранного участка cg пчел с вычислением целе-
вой функции.
4. Послать ns разведчиков.
5. Если выполнено условие окончания алгоритма, то завершение
алгоритма, иначе переход на шаг 2.
Лучшее из всех полученных на всех итерациях решение и будет ре-
зультатом работы алгоритма.
19
Согласно формуле (2) для получения обобщенного описания алго-
ритм роя пчел необходимо представить в виде
ABCO = {S, M, A, P, I, O}
20
X Nijg1 Rnd rad , i 1, ..., n g , k 1, ..., c g , (4)
nb cb (i 1) cb k j
21
на основании опыта всего косяка. Второй вид движения разделяется на
две фазы, описанные ниже. В отличие от алгоритма роя частиц косяк
рыб «помнит» только результаты предыдущей итерации, а не наилуч-
шие найденные результаты за весь процесс. Для применения алгорит-
ма требуется, чтобы целевая функция была неотрицательна на всем
пространстве поиска: f(X) ≥ 0, X D.
Согласно формуле (1) для получения обобщенного описания алго-
ритма поиска косяком рыб его необходимо представить в виде FSS =
={S, M, A, P, I, O}.
Затем требуется поочередно описать каждый элемент FSS и дей-
ствия на отдельных этапах работы алгоритма: инициализацию, вычис-
ление фитнесс-функций и миграцию.
1. Множество агентов (рыб) S = {s1, s2, …, s|S|}, |S| – количество
агентов. На j-й итерации i-й агент характеризуется состоянием
sij = {Xij, Vij, wij}, где Xij = {x1ij, x2ij, …, xℓij,} – вектор варьируемых пара-
метров (положение агента); ℓ – размерность пространства поиска ре-
шений; Vij = {v1ij, v2ij, …, vℓij} – вектор скоростей агента; wij – вес i-го
агента на j-й итерации.
2. Средством косвенного обмена M является вектор из двух эле-
ментов. Первый из них является скаляром и определяет взвешенную
сумму индивидуальных перемещений рыб, а второй – вектором дли-
ной l и представляет взвешенный центр тяжести всего косяка, M =
= {mSj, Сj}.
3. Реализация правил A определяет механизм функционирования
косяка рыб и согласно используемой схеме описания должна включать
в себя инициализацию, вычисление фитнесс-функций и миграцию.
Существуют различные вариации алгоритма поиска косяком рыб. Да-
лее представлена схема алгоритма в соответствии с описанием.
3.1. Инициализация начальных положений (j = 1):
22
3.2. Вычисление фитнесс-функций каждого агента на текущей
j-й итерации:
( X ij ) f ( X ij ) i 1, ..., S .
23
m Sj
i(Vij 0.5 (( X ij 0.5 ) ( X ij )))
i(( X ij 0.5 ) ( X ij ))
Каждая рыба после этого перемещается на данную величину:
( X ij 0.5 ) ( X ij )
wij 0.5 wij i 1, ..., S ,
max(( X ij 0.5 ), ( X ij ))
с учетом ограничения
1 wij 0.5 wmax .
Cj
iwij 0.5 X ij 0.5 i 1, ..., S . (6)
iwij 0.5
Перемещения при коллективно-волевом плавании выполняется по
следующему правилу:
X ij 0.5 vol ( X ij 0.5 C j ), ws j 0.5 ws j 0.5 ,
X ij 1 i 1, ..., S ,
X ij 0.5 vol ( X ij 0.5 C j ), ws j 0.5 ws j 0.5 ,
24
где wsj+0.5 – сумма весов всех агентов на текущей стадии (знаменатель
в формуле (6)), wsj – 0.5 является аналогичной суммой на предыдущей
итерации, а vol определяет величину шага перемещений и вычисляется
как
vol rnd volmax ,
25
ходу некоторого графа, дуги которого имеют не только вес, но и до-
полнительную динамически меняющуюся количественную характери-
стику, называемую количеством феромона или просто феромоном.
Итерационный алгоритм включает в себя построение решения все-
ми муравьями, улучшение решения методом локального поиска, об-
новление феромона. Построение решения начинается с пустого
частичного решения, которое расширяется путем добавления к нему
новой допустимой компоненты решения. В отличие от алгоритма роя
частиц, который описывается как алгоритм для нахождения экстрему-
мов непрерывных функций, муравьиный алгоритм в классической
формулировке решает комбинаторные задачи, например, задачу ком-
мивояжера. Поэтому вектором варьируемых параметров в муравьином
алгоритме обычно является последовательность узлов в графе, опти-
мальный способ обхода которого нужно найти (в задаче коммивояже-
ра – последовательность городов в искомом маршруте). Тем не менее
представленная в формуле (2) структура полностью сохраняется.
Согласно формуле (2) алгоритм колонии муравьев ACO = {S, M, A,
P, I, O}. Для удобства будем считать, что решается задача минимиза-
ции (так как муравьи ищут наикратчайший путь).
Множество агентов (муравьев) S = {s1, s2,…,s|S| }, |S| – количество
муравьев. На j-й итерации i-й муравей характеризуется состоянием
sij = {Xij, Tij}, где Xij = {x1ij, x2ij,…, xℓij} – вектор варьируемых парамет-
ров (последовательность узлов графа), Tij = {t1ij, t2ij,…, tℓij} – вектор бу-
левых переменных, которые показывают, был ли ℓ-й узел посещен
i-м муравьем на j-й итерации (в начале каждой итерации все его ком-
поненты равны 0).
Граф M = {F, R} – граф, каждая дуга которого имеет два веса: пе-
ременный (количество феромона) и постоянный (характеризующий
задачу, например, в задаче коммивояжера – это расстояние между го-
родами). Поэтому граф М можно представить в виде двух графов с
одинаковыми структурами, но разными весами дуг (F и R):
11 1l r11 r1l
F , R ,
r r
l1 ll l1 ll
26
Алгоритм А описывает механизмы функционирования колонии му-
равьев.
1. Генерация начальных положений. В зависимости от задачи каж-
дый муравей может быть создан в случайном узле графа или в задан-
ном. Если муравей помещен в узел k, то
xi11 k , tik1 1.
( X ij ) f ( X ij ), i 1, | S | ,
γ
, в X ij k1 следует сразу за k2 ,
ijk1k2 φ(X ij ) i 1, ... S ,
0, если не следует сразу за k ,
2
k1 1,..., l , k2 1,..., l ;
27
, min ,
kj1k2
min , min .
(τ km )α (η(rkm ))β
l , tm 0,
Pm z 1, t 0 (τ kz )α (η(rkz ))β
z
0, tm 1.
28
2. ПРАКТИЧЕСКОЕ ИСПОЛЬЗОВАНИЕ
АЛГОРИТМОВ
Раздел посвящен программной реализации алгоритмов стохастиче-
ской оптимизации и их применению. Особое внимание уделено ис-
пользованию алгоритмов в такой области искусственного интеллекта,
как машинное обучение.
29
сигналов. Часто стохастические методы оптимизации применяются в
системах искусственного интеллекта вместе с методами машинного
обучения, о которых речь пойдет ниже.
30
ражений отдельных цифр, а W – множество {0, 1, 2, …, 9}, то w – неко-
торый черный ящик, определяющий цифру по изображению).
2. Для некоторого подмножества V* = {v1, v2, …, vk} известны отве-
ты wi = w(vi*). Пары (vi, wi) называют прецедентами, а все множество
пар (vi, wi), i = 1, …, k называют обучающей выборкой (training sample).
3. Необходимо построить такое отображение (функцию, алгоритм,
модель) a: V → W, которое было бы как можно ближе к неизвестной
зависимости w(v) на всем множестве объектов V (не только на обуча-
ющей выборке). При этом отображение a должно быть реализуемо на
компьютере (машине) и работать автоматически, без участия человека.
2.2.2. Признаки
Каждый элемент v из множества V можно назвать объектом. Объ-
ект v имеет ряд характеристик (свойств), называемых признаками.
Например, у человека есть такие признаки, как возраст, рост, вес, пол.
Для изображения в формате BMP признаком будет является матрица
пикселей, для слова признаком является количество букв, какая буква
стоит в каждой позиции слова – тоже признак.
Выделяют следующие виды признаков:
– бинарные (0 или 1);
– номинальные (признак принимает значения из некоторого конеч-
ного множества);
– количественные (вещественные значения).
Таким образом, у объекта имеется вектор признаков {p1, p2,…, pn}.
Тогда множество объектов V* можно представить матрицей
p1 (v1 ) pn (v1 )
*
V .
p (v ) pn (vk )
1 k
Например, ставшая классической в литературе по машинному обу-
чению задача ирисов Фишера заключается в построении алгоритма,
определяющего вид ириса (Iris setosa, Iris virginica или Iris versicolor)
по четырем признакам:
– длине наружной доли околоцветника (sepal length);
– ширине наружной доли околоцветника (sepal width);
– длине внутренней доли околоцветника (petal length);
– ширине внутренней доли околоцветника (petal width).
31
Пример матрицы для этой задачи легко найти по запросу «класси-
фикация ирисов», или «ирисы Фишера».
Для упрощения формул часто объект и вектор его параметров
отождествляют, так что vi = {p1(vi), p2(vi),…, pn(vi)}, в этом случае под
записью f(vi) понимают функцию от всех признаков f(p1(vi), p2(vi),…,
pn(vi)).
32
актуальной с развитием электронной коммерции, поскольку разделе-
ние клиентов на группы позволяет создавать для каждой группы спе-
цифические стратегии продвижения товаров и услуг.
33
В качестве простого примера можно взять задачу классификации
на два непересекающихся класса, W = {–1, +1}. Рассмотрим метод ли-
нейной классификации, при котором алгоритм a можно представить в
следующем виде:
n
a(v, X ) sign x j p j (v) x0 ,
j 1
где X = {x0, x2, …, xn} – параметры алгоритма (веса признаков p1(v),
p2(v), …). Таким образом, каждый признак объекта v умножается на
вес признака, затем полученные произведения суммируются, и к ним
прибавляется параметр x0. Если полученная сумма больше 0, то
объект v будет отнесен к классу –1, иначе +1. Пример такого класси-
фикатора показан на рис. 2.
34
ют координаты его центра на плоскости P1P2. Линейный классифика-
тор, показанный линией, разделяющей классы, имеет вид (x0 = 10,
x1 = 5, x2 = –2):
a(v, {5, 2,10}) sign (5 p1 (v) 2 p2 (v) 10) .
Все объекты, расположенные выше черты на рис. 2, будут отнесе-
ны к классу кружков, расположенные ниже – к классу треугольников.
Черту называют разделяющей плоскостью.
35
мизации агенты будут перемещаться, стремясь снизить количество
ошибок, в итоге будет определена разделяющая плоскость, дающая
минимум ошибок (создание приложения визуализации процесса обу-
чения можно порекомендовать в качестве полезного учебного приме-
ра, позволяющего потренироваться и в машинном обучении, и в опти-
мизации, и в компьютерной графике).
Необходимо отметить, что в общем случае мера качества алгорит-
ма зависит не только от количества ошибок, однако этот вопрос не
входит в рамки рассмотрения данного пособия, как и многие другие
аспекты машинного обучения (явление переобучения, разделение тре-
нировочной выборки на собственно тренировочную и тестовую с пере-
крестной проверкой алгоритмов, дополнительные критерии эффектив-
ности и др.), которые можно изучить по материалам, например,
К.В. Воронцова [2]. Приведенный линейный классификатор является
одним из самых простых, для других алгоритмов классификации век-
тор параметров может задавать не только численные параметры, но и
саму структуру алгоритма, например, число узлов скрытого слоя
нейронной сети.
В качестве еще одного примера рассмотрим решение задачи кла-
стеризации алгоритмом имитации отжига. При этом в качестве векто-
ра X можно взять не параметры алгоритма кластеризации, а вектор,
показывающий, к какому кластеру какой объект обучающей выборки
относится. Положим, что число кластеров известно и равно m (сами
кластеры обозначим 1, 2, 3, … m), тогда вектор X будет иметь длину m,
а значение xi будет определять кластер объекта vi, xi {1, 2, …m},
i = 1,…m. Критерием оптимальности может быть сумма расстояний
между объектами одного кластера и сумма расстояний между объек-
тами разных классов:
m k k k k
f ( X ) d (v j , vl ) d (v j , vl ) .
i 1 j 1l 1,l j j 1l 1,l j
x j xl i x j xl
36
собами. Одним из наиболее популярных является евклидово расстоя-
ние
n
1
d (v j , vl )
n
( ph (v j ) ph (vl ))2 .
h 1
37
ки для языков программирования R и Python, которые наиболее часто
применяются для интеллектуального анализа данных. Однако для их
успешного применения все же необходимо знать математические ос-
новы машинного обучения и методов оптимизации.
38
double getBest(double *bestSolution);//возврат
// найденного решения
// (в bestSolution записывается вектор
// искомых переменных, метод возвращает
// значение критерия
virtual ~Optimizator () {}
protected:
virtual void initialization() = 0;
virtual void move() = 0;
int numberAgents;
int numberIterations;
double *bestSolution;
ICreator *creator;
//указатель на описанный ниже объект для
//вычисления критерия
};
Для обеспечения единообразной работы алгоритмов оптимизации с
различными задачами можно реализовать некоторый интерфейс, обо-
значенный здесь как ICreator, имеющий метод getCriterion, который
соответствует критерию f(X) и принимает управляющие переменные, а
возвращает значение целевой функции. Можно разбить вектор X на
целочисленную и непрерывную части. Например, на языке програм-
мирования С++ реализация такого интерфейса с помощью абстрактно-
го класса может быть следующей:
class ICreator
{
public:
virtual double getCriterion(double *arrayDouble,
int *arrayInt) = 0;
virtual ~ICreator() {}
};
39
доваться от класса ICreator (в C++) или реализовать интерфейс
ICreator (в Java), например, для задачи Химмельблау:
//C++
class Test : public ICreator
{
public:
virtual double getCriterion(double *arrDouble,
int *arrInt);
};
//Java
public class Test implements ICreator
{
double getCriterion(double [] arrayDouble,
int [] arrayInt);
double x0 = arrDouble[0], x1 = arrDouble[1];
return [Link]((x0*x0 + x1 – 11.), 2)
+ [Link]((x0+ x1*x1 – 7.), 2);
}
40
Использование параллельных вычислений. Согласно закону
Амдала, параллельные вычисления тем эффективнее, чем больше доля
расчетов, выполняемых параллельно:
1
S ( p) ,
1 a
a
p
где S(p) – теоретическое ускорение, т. е. эффект от распараллеливания;
p – количество используемых процессоров (ядер); a – доля операций,
которые нужно выполнять последовательно.
Как правило, в рамках одной итерации процесс перемещения аген-
тов популяционных алгоритмов легко поддается распараллеливанию,
так как при этом не происходит конфликтов чтения данных и каждый
процессор просто работает со своей частью популяции. Но это не все-
гда верно, например, в муравьином алгоритме процесс обновления фе-
ромона на ребрах графа может приводить к конфликтам потоков.
Можно предложить более универсальный и часто более эффективный
другой подход – каждый процессор работает со своим экземпляром
алгоритма, а обмен результатами происходит лишь время от времени.
В простейшем случае, если не происходит обмена данными между эк-
земплярами алгоритмов, это равносильно последовательному запуску
алгоритмов с точки зрения полученных решений задачи, а ожидаемое
повышение скорости работы будет близко к количеству используемых
процессоров, так как доля последовательно выполняемых операций
очень мала.
41
– приложение регулярно приостанавливает вычисления, выводит
информацию и обрабатывает действия, которые успел совершить
пользователь;
– вычисления и организация диалога с пользователем разделены на
два параллельно работающих потока.
Очевидно, что последний вариант будет надежнее и удобнее для
пользователя, чем первый, и немного эффективнее с точки зрения про-
изводительности, чем второй. Поэтому при реализации оптимизацион-
ных алгоритмов рекомендуется всегда учитывать работу в многопо-
точной среде и как минимум разделить алгоритм оптимизации и поль-
зовательский интерфейс в отдельные потоки (интерфейс обычно обра-
батывается основным потоком).
42
Настройка параметров. Многие исследования показывают, что
для стохастических методов необходима настройка, учитывающая
особенности задач [6, 10, 15, 29]. Для выполнения такой настройки
можно использовать различные метаэвристические способы адапта-
ции. При этом один алгоритм оптимизации подбирает параметры дру-
гого алгоритма, который, в свою очередь, решает прикладную задачу
оптимизации. Такой подход называют мета-оптимизацией. Для задач
автоматического оперативного управления, которые требуют получе-
ния решения в реальном времени наискорейшим образом, использова-
ние адаптивных алгоритмов может быть затруднено из-за высоких за-
трат времени на расчеты.
В некоторых задачах адаптивные алгоритмы целесообразно приме-
нять, поскольку в этих задачах время, сэкономленное на решении,
обычно намного меньше потерь времени и других ресурсов от неэф-
фективных решений, например, в планировании работ. Но даже и для
задач, которые необходимо решать быстро, полезно использовать ма-
шинное обучение, чтобы опыт решения предыдущих задач помогал
эффективнее решать новые, поскольку для одного объекта управления
или для одного типа задач можно ожидать достаточно близкие усло-
вия, чтобы параметры алгоритмов, настроенные по предыдущим зада-
чам, дали хорошие результаты для новых задачах.
43
В этом случае относительные различия между значениями фит-
несс-функций агентов малы, например, если постоянная составляющая
в 100 раз больше диапазона изменяемой части, то максимально воз-
можная разница между фитнессами агентов составит всего 1 %.
Из двух приведенных выше абзацев следует простой вывод: если
целевая функция количественно влияет на процесс работы алгоритма и
ее постоянная часть намного превышает изменяемую часть, то эффек-
тивность алгоритма может очень сильно упасть. Например, для гене-
тического алгоритма такая ситуация приведет к тому, что вероятность
отбора всех агентов на этапе селекции будет примерно одинаковой
независимо от качества их позиций в пространстве поиска решений. А
в алгоритме колонии муравьев количество феромона, наносимое на
ребра графа, будет также почти одинаковым независимо от эффектив-
ности найденного каждым агентом маршрута. Таким образом, алго-
ритмы лишаются одного из своих главных свойств – учета опыта, по-
лученного на предыдущих итерациях.
Для устранения этого негативного эффекта можно использовать
различные способы. В общем случае можно на первой итерации вы-
брать наименьшее найденное решение, принять его за примерную по-
стоянную величину (fappr) и затем вычитать его на всех итерациях из
полученных значений целевой функции. Либо после окончания работы
алгоритма сохранить наилучшее значение целевой функции, и при
следующем запуске вычитать это значение для определения фитнессов
агентов. Нужно учесть, что не все алгоритмы корректно работают с
отрицательными значениями целевой функции, которые могут появ-
ляться в данном подходе, если фитнесс какого-либо агента окажется
меньше величины fappr.
44
ращать особое внимание на эффективную реализацию модели зада-
чи оптимизации.
Иногда в задачах оптимизации можно использовать целочисленные
вычисления там, где кажется необходимым применить вычисления с
плавающей точкой, особенно в комбинаторных задачах. Например,
если в задаче коммивояжера расстояния заданы нецелыми числами, но
точность расстояний составляет два знака после запятой, то можно,
умножив все расстояния на 100, перейти к целочисленным вычислени-
ям. Однако нужно учесть, что скорость вычислений с разными типами
данных зависит от множества факторов (язык программирования, ком-
пилятор, процессор).
Выбор языка программирования и вовсе является отдельной об-
ширной темой, можно только указать, что опыт убеждает в преимуще-
стве языка программирования C++ для реализации алгоритмов опти-
мизации [10, 15, 29].
3. ПРАКТИЧЕСКАЯ РАБОТА
ПО СТОХАСТИЧЕСКОЙ ОПТИМИЗАЦИИ
3.1. Описание
Практическая работа по стохастическим методам дискретной оп-
тимизации направлена на ознакомление студентов с наиболее распро-
страненными алгоритмами, которые часто применяются для решения
практических оптимизационных задач и могут в дальнейшем быть ис-
пользованы студентами в их научно-исследовательских работах. Дан-
ная работа не предполагает самостоятельную реализацию алгоритмов
оптимизации. Студентам предлагается использование готового про-
граммного продукта «Система визуализации стохастических алгорит-
мов оптимизации» (свидетельство о регистрации программы для ЭВМ
№ 2015613847, автор Матренин П.В., 2015 г.) для визуального анализа
работы алгоритмов и проведения экспериментов.
В ходе работы студенты изучают четыре стохастических алгоритма
дискретной оптимизации: генетический алгоритм, алгоритм имитации
отжига и два алгоритма роевого интеллекта (алгоритм роя пчел и алго-
ритм роя частиц).
45
Приведенные далее указания содержат описание работы с про-
граммным обеспечением, пошаговую инструкцию проведения экспе-
риментов, самостоятельные задания и контрольные вопросы для защи-
ты. Перед выполнением работы необходимо изучить теоретическую
часть (см. в разделе «Описание алгоритмов»).
Объем работы в часах и уточненное задание на работу опреде-
ляются преподавателем, ориентировочно работа рассчитана на че-
тыре часа. За отведенное время студенты должны выполнить и за-
щитить работу. К работе студенты приступают после домашней
подготовки и предварительного изучения теории. После выполне-
ния работы студент предъявляет оформленный отчет с указанными
ниже результатами. Допустима работа в группах по 2–4 человека,
защита индивидуальная.
z f ( x, y ),
x x x ,
min max
ymin y ymax ,
z max,
46
Рис. 3. Интерфейс приложения визуализации Windows
Сверху расположена основная расчетная формула, ссылка на файл
справки и метка для вывода результата. Ниже находится поле для вво-
да задачи, справа от которого расположен элемент для выбора функ-
ций списка. Большую часть формы занимает поле для визуализации
процесса работы алгоритма, слева расположены элементы для ввода
параметров. Текущее лучшее решение обозначается на поле красным
крестиком.
Для запуска алгоритма необходимо выбрать задачу из раскрываю-
щегося списка сверху справа или ввести свою, нажать кнопку «Старт»
внизу слева, пауза позволяет поменять параметры алгоритма и про-
должить работу. Кнопка «Стоп» прерывает работу. Если в поле «Itera-
tions» ввести 0, то алгоритм будет работать до нажатия кнопки «Стоп»,
иначе алгоритм выполнит заданное число итераций, если его не пре-
рвать.
47
Рис. 4. Интерфейс приложения визуализации Linux
48
Таблица 1
Константы и функции, доступные для использования в веденных задачах
Обозначение Описание
E Число e (константа Эйлера)
LN2 Натуральный логарифм числа 2
LN10 Натуральный логарифм числа 10
LOG2E Логарифм числа e по основанию 2
LOG10E Логарифм числа e по основанию 10
PI Число π
SQRT1_2 Квадратный корень из 1/2
SQRT2 Квадратный корень из числа 2
abs(a) Модуль числа
ceil(a) Округление в большую сторону
floor(a) Округление в меньшую сторону
round(a) Округление до ближайшего целого
max(a,b,c,…) Максимальный из переданных аргументов
min(a, b, c,…) Минимальный из переданных аргументов
pow(a, n) Возведение в указанную степень
sqrt(a) Квадратный корень
random() Генератор случайных чисел от 0 до 1
sin(a) Синус
cos(a) Косинус
tan(a) Тангенс
asin(a) Арксинус
acos(a) Арккосинус
atan(a) Арктангенс
log(a) Натуральный логарифм
49
3.3. Практическое задание
3.3.1. Начало работы
Прочитайте описание четырех стохастических алгоритмов, приве-
денное выше и описание программного обеспечения для визуализации
этих алгоритмов. Если вы вначале прочитаете и поймете основные
теоретические положения, выполнение работы будет намного проще и
быстрее.
Запустите [Link], убедитесь, что вам понятно, как рабо-
тать с приложением. Проверьте на любых задачах, соответствует ли
показанный процесс работы алгоритма вашему представлению, сло-
жившемуся после прочтения его описания. Аналогично запустите
AnnealingDemo, BeesDemo, GeneticDemo и понаблюдайте за работой
алгоритмов. При наведении на элементы для ввода параметров появля-
ется всплывающая подсказка, если назначение каких-либо элементов
вам непонятно, обратитесь к преподавателю.
Для алгоритма роя частиц на любой из тестовых задач определите
и укажите в отчете, при каком порядке количества частиц (агентов) и
максимальной скорости отображения возникают задержки между ите-
рациями более 0.5 с.
Далее по каждому из алгоритмов описаны шаги, которые необхо-
димо выполнить для более подробной демонстрации принципов рабо-
ты алгоритмов. Для каждого из алгоритмов сделайте и вставьте в отчет
2–3 снимка экрана приложения, на которых будут отражены различ-
ные этапы работы. Чтобы понимать процесс работы алгоритмов, необ-
ходимо представлять себе структуры решаемых задач, для этого нужно
построить поверхность z(x, y) с помощью любого удобного вам сред-
ства (наиболее просто это сделать, скопировав формулу из строки ре-
дактирования в верхней части экрана и вставив ее в строку поиска
«Google», затем поставить нужные диапазоны по всем осям). Некото-
рые поверхности показаны на рис. 5–9, но статичные 2D изображения
не так наглядны, как интерактивные псевдо-3D.
Частично процесс работы алгоритма поясняется, однако для полно-
го понимания работы часть объяснений пропущена, чтобы вы могли
проконтролировать, насколько хорошо понимаете данные алгоритмы.
В описании заданий по каждому алгоритму есть выделенные указания
о том, что включить в отчет, и вопросы, ответы, на которые нужно ука-
зать в отчете (достаточно кратких ответов в одно предложение).
50
Рис. 5. Поверхность к задаче Розенброка
51
Рис. 7. Поверхность к задаче Ex_180.422
52
Рис. 9. Поверхность к задаче Sin(x, Y)
53
сразу переместились к глобальному оптимальному решению? По-
сле этого прекратите работу алгоритма.
Выберите задачу «sin (x, sin(y))» (см. рис. 6). Число частиц нужно
сделать равным 5000. Поставьте коэффициенты равными 1.2, 0.3, 0, 1 и 1
и запустите алгоритм. Затем поставьте a2 равным 0.3 и посмотрите,
как изменится форма образованных частицами синусоид. Видно, что
несмотря на сближение частиц, форма синусоид в искаженном виде
сохранилась. Постепенно повышайте коэффициент a2 (с шагом 0.5) и
посмотрите, как рой будет все больше сжиматься.
Последняя демонстрационная задача для роя частиц называется
«Ex_180.422» (см. рис. 7). Запустите на ней алгоритм с коэффициента-
ми 1, 1, 1, 1 и 1, 50 агентами и 1000 итераций (флаг «V(to) = 0» устано-
вите). Сделайте 10 запусков и запишите в отчет полученные значе-
ния z. Они будут сильно отличаться друг от друга и от оптимального
значения 180.422. Можете повысить число итераций, но это не приве-
дет к существенному улучшению. В таких случаях говорят о прежде-
временной сходимости или «застревании» алгоритма поиска в локаль-
ном экстремуме. Рой нашел локальный экстремум, и при данных пара-
метрах вероятность выйти из него очень мала (но не равна 0). Для ре-
шения этой трудности есть два пути: увеличить число агентов в
надежде, что какой-либо из них успеет попасть в окрестность глобаль-
ного оптимума до застраивания алгоритма, либо регулировать пара-
метры алгоритма, чтобы он мог выходить из таких ситуаций.
Попробуйте поставить число агентов 1000. Теперь даже при числе
итераций меньше 500 алгоритм будет находить близкие к оптимально-
му решения, выпишите 10 результатов. Но такой подход не всегда
является применимым, поскольку при увеличении числа частиц воз-
растает вычислительная трудоемкость, особенно для сложных задач, в
которых вычисление целевой функции может требовать длительного
времени. Если для задачи размерности 2 потребовалась 1000 частиц, то
для задач размерности выше 100 количество частиц для подобного
охвата всего пространства решений окажется слишком велико.
Теперь поставьте всего 25 частиц и 1000 итераций, но увеличьте
максимальные скорости до 10, а коэффициент a2 сделайте равным 0.5.
Это позволит частицам, во-первых, с большей вероятностью «выска-
кивать» из локальных экстремумов благодаря возможности набрать
высокую скорость, а во-вторых, каждая частица имеет больше индиви-
дуальности и частицы менее стремятся собраться вместе (a1 в два раза
больше, чем a2). С такими коэффициентами будут получаться резуль-
54
таты, близкие к оптимальному (укажите в отчете 10 результатов),
намного ближе, чем в первом варианте и намного быстрее, чем во вто-
ром (при визуализации скорость расчетов не очень заметна, поскольку
этап рисования занимает значительное время, поэтому оцените и ука-
жите в отчете повышение скорости работы третьего варианта отно-
сительно второго исходя из предпосылки, что большую часть времени
работы алгоритма занимало бы вычисление целевой функции). Но это
не означает, что повышение скорости всегда повышает эффективность
алгоритма, потому что при слишком высокой скорости частицы могут
«проскакивать» мимо экстремумов.
55
можно видеть четыре группы пчел, хотя график этой функции имеет
только один экстремум. Разделение по группам связано на этот раз с
коэффициентами dX и dY, влияющими на расстояние между центрами
участков. Измерьте примерное расстояние между центрами групп по
осям X и Y. Попробуйте подобрать величины dX и dY, чтобы между
группами пчел не было заметно промежутков, укажите эти величины
в отчете и напишите, можно ли было сразу определить их значе-
ния, не проводя экспериментов, исходя только из параметров алгорит-
ма и условий задачи.
Последнее задание для алгоритма роя пчел связано с задачей
«Sin(x, sin(y))» (см. рис. 6). Запустите алгоритм с параметрами по
умолчанию (для этого можно перезапустить BeesDemo). Вы не увидите
синусоид, как это было для алгоритма роя частиц. Попробуйте подо-
брать параметры алгоритма так, чтобы синусоиды были видны. Под-
сказка: потребуется менять и число агентов, но слишком много ставить
не обязательно (N*CN + M*CM <=1000). Вставьте снимок экрана и
значения параметров в отчет. Задача с синусоидами не имеет прямо-
го отношения к оптимизации, но и алгоритмы роевого интеллекта (рой
частиц и рой пчел) используются не только для решения задач оптими-
зации. Алгоритмы роевого интеллекта часто применяются для интел-
лектуального управления группами роботов, для визуализации в играх
и фильмах движений большого количества объектов и других задач,
требующих гибкого децентрализованного управления множеством
элементов. Задача «Sin (x, sin(y))» как раз демонстрирует, как возника-
ет коллективное поведение агентов роя и как можно влиять на него.
56
но к экстремумам. При некотором уровне температуры на экране будут
четко видны все экстремумы функции, но заметные колебания точек
не прекратятся до конца работы алгоритма. Алгоритм не предполагает
использование нескольких агентов, в данном случае 100 агентов ис-
пользуется только для визуализации, они никак не взаимодействуют
между собой. Используя аналогию с процессом кристаллизации веще-
ства, на которой основан алгоритм имитации отжига, можно сделать
вывод, что в алгоритме должно быть задействовано много агентов, как
частиц в веществе, однако классический алгоритм имитации отжига и
большинство его модификаций не используют многоагентный (его еще
называют «популяционный») подход. А запуск алгоритма имитации
отжига с n агентами равен параллельной работе n независимых алго-
ритмов или последовательному запуску алгоритма n раз. Вы должны
понимать, что для трех других приведенных алгоритмов это категори-
чески не так, они относятся к популяционным алгоритмам, в которых
ключевой особенностью является взаимодействие агентов.
Количество итераций алгоритма имитации отжига можно задавать
явно, а можно через остановку алгоритма при опускании температуры
ниже некоторой отметки. Выведите и запишите в отчет зависимость
числа шагов алгоритма от начала до завершения от его параметров
(формула понижения температуры приведена в описании алгоритма
выше).
Откройте задачу Химмельблау (см. рис. 8) и запустите алгоритм с
параметрами, которые использовали до этого, и одним агентом. Запу-
стите алгоритм пять раз (скорость можно вернуть на максимальную) и
запишите результаты. При работе алгоритма не будет заметно суже-
ния области, в которой производится поиск, как это было для преды-
дущего примера, а результаты не очень близки к нулю. Поставьте ко-
нечную температуру в 100 раз ниже и повторите пять запусков, выпи-
сывая результаты. Время работы алгоритма увеличилось, но резуль-
таты остались не очень хорошими. Теперь верните значение конечной
температуры, равное 1, а коэффициенты M[x] и M[y] поставьте 0.1.
Снова выполните пять запусков и запишите результаты. Эффектив-
ность алгоритма значительно повысилась. Снижение коэффициентов,
влияющих на максимальное расстояние, на которое может переме-
ститься поиск из текущего состояния, позволило алгоритму больше
времени потратить на «исследование» окрестности экстремумам и
найти точки, которые ближе к нему. При высоких значениях этих ко-
эффициентов алгоритм перемещался в среднем на расстояние в 20 раз
57
больше, таким образом, поиск «рассеивался» слишком далеко вокруг
экстремума. Однако высокие значения коэффициентов M[x] и M[y]
могут быть полезны для других задач, в которых алгоритму сложнее
попасть в окрестность экстремума.
Поставьте значение параметра T0, равное 1000, Tf, равное 0.01 и от-
кройте задачу Розенброка (см. рис. 5). Запустите алгоритм 10 раз
и укажите полученные результаты в отчете. Теперь поставьте зна-
чения коэффициентов M[x] и M[y] 0.01 и снова запустите алгоритм
10 раз, выписывая результаты. Посмотрите на график задачи Розен-
брока и сопоставьте его с показанным процессом поиска решения, по-
сле этого напишите, какой из вариантов параметров и почему дал
более эффективные результаты по среднему значению, по лучшему
значению.
58
увидеть, как агенты образуют синусоиды. Поставьте 1000 особей и ве-
роятности мутации 5 % и посмотрите, образуют ли особи синусоиды
на этот раз? Укажите в отчете, почему.
Выберите задачу Розенброка (см. рис. 5), поставьте 100 особей,
1000 итераций, вероятности мутации 5 %. Выполните пять запусков
алгоритма и запишите в отчет полученные результаты. Затем по-
вторите пять запусков с параметрами VmX и VmY, равными 0.1 (т. е.
при мутации ген не может измениться более чем на 10 %), также ука-
зав результаты в отчете. Ограничение на степень мутации приведет к
быстрому сокращению разнообразия популяции и снижению средней
эффективности алгоритма (популяцией называют набор особей или
хромосом на текущей итерации алгоритма). Однако в других типах
задач ограничение на степень мутации может повысить эффектив-
ность. Убедитесь в этом на задаче «Abs», для этого выполните по пять
запусков с теми же параметрами, что в двух прошлых вариантах (100
особей, вероятности 5 %, Vm =0 в первом варианте и Vm = 0.1 во вто-
ром), а чтобы сделать это быстрее, число итераций сократите до 100,
ведь задача является очень простой. Укажите полученные результа-
ты двух вариантов в отчете. С большой вероятностью эффективность
второго варианта окажется выше, поскольку в этой задаче всего один
экстремум и ограничение на изменение генов приводит к концентра-
ции особей вокруг него, окрестность экстремума обрабатывается
большим количеством особей, это повышает вероятность попадания
особей во все более близкие к оптимуму позиции, в то время как от-
сутствие ограничений на мутацию постоянно переводило бы часть
особей в произвольные точки пространства поиска. Трудность заклю-
чается в том, что, как правило, заранее структура пространства реше-
ний неизвестна либо нет времени на исследование условий задачи, по-
этому нельзя сказать, какие параметры алгоритма будут эффективнее.
Для разрешения этого затруднения используются различные способы
автоматической адаптации стохастических алгоритмов под условия
задач.
59
параметры. Число агентов и число итераций нужно выбрать самостоя-
тельно, но произведение числа агентов на число итераций должно быть
равно 50 000. Нужно выбрать число агентов и итераций, зафиксировать
и провести 10 экспериментов с разными значениями параметров, ста-
раясь добиться как можно лучших значений целевой функции. Каждый
эксперимент состоит в запуске алгоритма три раза c фиксированными
параметрами и определении лучшего по трем запускам. Затем нужно
поменять число агентов хотя бы в четыре раза в большую или мень-
шую сторону, определить число итераций, чтобы произведение оста-
лось равным 50 000, и провести еще 10 аналогичных экспериментов
(по три запуска) с теми же параметрами, что использовались в 10
предыдущих экспериментах.
! Скорость проведения экспериментов можно в разы повысить, ес-
ли отключить визуализацию работы алгоритмов (снять галочку
“Visualization”).
Результаты (количество агентов, итераций, параметры, значение
целевой функции) нужно занести в таблицу. Для алгоритма имитации
отжига можно сэкономить время, если не по три раза запускать алго-
ритм с одним агентом и выбирать лучший, а поставить трех агентов и
запустить один раз. Объяснения полученных экспериментальных ре-
зультатов в отчет вносить не требуется, но для защиты работы нужно
подготовить выводы из экспериментов.
Таблица 2
Варианты заданий
Вариант Задача Алгоритм Число агентов
1 Гринвока Роя частиц Agents
2 Гринвока Роя пчел N*CN + M*CM + S
3 Гринвока Имитации отжига 1 (один)
4 Гринвока Генетический Agents
5 Растригина Роя частиц Agents
6 Растригина Роя пчел N*CN + M*CM + S
7 Растригина Имитации отжига 1 (один)
8 Растригина Генетический Agents
9 Ex_180.422 Роя частиц Agents
10 Ex_180.422 Роя пчел N*CN + M*CM + S
11 Ex_180.422 Имитации отжига 1 (один)
12 Ex_180.422 Генетический Agents
60
Контрольные вопросы
1. Объясните, какие алгоритмы оптимизации относятся к стохасти-
ческим, почему они так называются?
2. В чем особенности стохастических алгоритмов, их преимуще-
ства и недостатки?
3. Какие классы стохастических алгоритмов можно выделить?
4. Почему даже для задач оптимизации, которые можно решить
точными методами, часто применяют стохастические алгоритмы?
5. В чем преимущества и недостатки жадных эвристик?
6. Приведите примеры практических задач, в которых имеет смысл
применять стохастические методы оптимизации.
7. Кратко опишите, как работает метод случайного поиска и поиска
с возвратом?
8. Кратко опишите работу алгоритма имитации отжига.
9. Кратко опишите работу генетического алгоритма.
10. Кратко опишите работу алгоритма роя частиц.
11. Кратко опишите работу алгоритма роя пчел.
12. Кратко опишите работу алгоритма поиска косяком рыб.
13. Кратно опишите работу алгоритма колонии муравьев.
14. Как алгоритмы роевого интеллекта используют случайный
поиск?
15. Как генетический алгоритм используем случайный поиск?
16. Как алгоритм имитации отжига использует случайный поиск?
17. Как вы думаете, является ли усложнение правил работы агентов
популяционных алгоритмов хорошим способом повышения их эффек-
тивности?
18. Какие алгоритмы оптимизации относятся к популяционным, в
чем их основное отличие?
19. Почему генетический алгоритм не относится к алгоритмам рое-
вого интеллекта, как это проявляется при визуальном наблюдении за
его работой?
20. В чем преимущества и недостатки алгоритма имитации отжига,
использующего одного агента по сравнению с многоагентными алго-
ритмами?
21. С какой целью авторы алгоритма роя пчел ввели в него агентов-
разведчиков? Есть ли недостатки у такого приема?
22. Каким образом инерция влияет на поведение алгоритма роя ча-
стиц, как вы думаете, зачем введено это свойство?
61
23. Почему при нулевой начальной скорости и нулевом коэффици-
енте a1 рой частиц остается неподвижен?
24. Как бы изменилась эффективность алгоритма имитации отжи-
га, если бы температура была постоянной?
25. Как вы думаете, при каком условии равняется единице вероят-
ность обнаружения глобального экстремума произвольной задачи оп-
тимизации с помощью любого из перечисленных алгоритмов?
26. Как изменится работа алгоритма имитации отжига при исполь-
зовании линейного графика понижения температуры вместо экспонен-
циального?
27. В чем роль скрещивания в генетическом алгоритме?
28. Стоит ли всегда оставлять в популяции генетического алгорит-
ма особь (хромосому) с наилучшей приспособленностью?
29. Как вы думаете, какой из рассмотренных в работе алгоритмов
эффективнее для решения задач оптимизации с динамически меняю-
щимися во времени условиями? Какой наименее эффективен?
30. Что означают слова «преждевременная сходимость»?
31. Оцените рассмотренные алгоритмы с точки зрения простоты и
эффективности распараллеливания.
32. Каким образом можно использовать генетический алгоритм
для решения комбинаторных задач оптимизации? Запишите структуру
хромосомы для задачи коммивояжера.
33. Каким образом можно использовать алгоритм имитации отжига
для комбинаторных задач? Запишите структуру состояния системы для
задачи коммивояжера.
34. Каким образом можно использовать алгоритм роя частиц для
комбинаторных задач? Запишите вид позиции частицы для этой задачи
коммивояжера.
35. Каким образом можно использовать алгоритм роя пчел для
комбинаторных задач? Запишите вид позиции пчелы для задачи ком-
мивояжера.
36. Укажите важные моменты, которые нужно учитывать при реа-
лизации стохастических алгоритмов оптимизации.
37. Каким образом можно реализовать стохастические алгоритмы
оптимизации, чтобы обеспечить гибкость и переносимость их про-
граммного кода?
38. Сравните два любых описанных в пособии алгоритма с точки
зрения эффективности и простоты их распараллеливания.
62
39. Какие существуют способы повышения скорости работы сто-
хастических алгоритмов?
40. Объясните понятие «машинное обучение».
41. Напишите формальную постановку задачи машинного обуче-
ния.
42. Какие виды задач машинного обучения вы знаете?
43. Покажите связь между задачей машинного обучения и задачей
оптимизации.
44. Как можно использовать стохастические методы оптимизации
для обучения линейного классификатора?
63
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Алгоритмы: построение и анализ: пер. с англ. / Т. Кормен [и др.]. –
2-е изд. – М. : Издательский дом «Вильяме», 2005. – 1296 с. : ил.
2. Воронцов К.В. Машинное обучение: курс лекций [Электронный ресурс]
// [Link]
3. Гладков Л.А. Генетические алгоритмы/ Л.А. Гладков, В.В. Курейчик,
В.М. Курейчик; под ред. В.М. Курейчика. – 2-е изд., испр. и доп. – М.: ФИЗ-
МАТЛИТ, 2006. – 320 с.
4. Гриф М.Г. Гибридная экспертная система проектирования человеко-
машинных систем и принятия решений ИНТЕЛЛЕКТ-3: учеб. пособие. – Но-
восибирск: Изд-во НГТУ, 2007. – 162 с.
5. Гэри М. Вычислительные машины и труднорешаемые задачи: пер. с
англ. / М Гэри, Д. Джонсон. – М.: Мир, 1982. – 416 с.
6. Карпенко А.П. Популяционные алгоритмы глобальной оптимизации.
Обзор новых и малоизвестных алгоритмов // Приложение к журналу «Инфор-
мационные технологии». – 2012. – № 7. – С. 1–32.
7. Карпов В.Э. Методологические проблемы эволюционных вычислений //
Искусственный интеллект и принятие решений. – № 4. – 2012. – C. 95–102.
8. Кочетов Ю.А. Вероятностные методы локального поиска для задач
дискретной оптимизации. Дискретная математика и ее приложения: сб. лек-
ций молодежных и научных школ по дискретной математике и ее приложени-
ям. – М.: Изд-во центра прикладных исследований при механико-математи-
ческом факультете МГУ, 2000. – С. 87–117.
9. Курейчик В.М. Использование роевого интеллекта в решении NP-труд-
ных задач/ В.М. Курейчик, А.А. Кажаров // Известия ЮФУ. Технические
науки. – 2011. – № 7 (120). – С. 30–37.
10. Матренин П.В., Секаев В.Г. Оптимизация адаптивного алгоритма му-
равьиной колонии на примере задачи календарного планирования // Про-
граммная инженерия. – 2013. – № 4. – С. 34–40.
11. Матренин П.В. Секаев В.Г. Системное описание алгоритмов роевого
интеллекта // Программная инженерия. – 2013. – № 12. – С. 39–45.
12. Матренин П.В. Описание и реализация алгоритмов роевого интеллек-
та с использованием системного подхода // Программная инженерия. – 2015. –
№ 3. – С. 27–34.
13. Матренин П.В. Разработка приложений для визуализации методов
стохастической оптимизации // Сборник научных трудов SWorld. Материалы
международной научно-практической конференции «Современные проблемы
и пути их решения в науке, транспорте, производстве и образовании'2012». –
Вып. 4. Том 12. – Одесса: КУПРИЕНКО, 2012. ЦИТ:412-0099. – С. 28–35.
14. Панченко Т.В. Генетические алгоритмы: учеб.-метод. пособие /
Т.В. Панченко; под ред. Ю.Ю. Тарасевича. – Астрахань: Издательский дом
«Астраханский университет», 2007. – 87 с.
64
15. Скиена С. Алгоритмы. Руководство по разработке: пер. с англ. / Сти-
вен Скиена. – 2-е изд. – СПб.: БХВ-Петербург, 2013. – 720 с.: ил.
16. Штовба С.Д. Муравьиные алгоритмы/ С.Д. Штовба // Exponenta Pro.
Математика в приложениях. – 2003. – № 4. – С. 70–75.
17. Andrew Ng. Artificial intelligence | machine learning [Электронный ре-
сурс] // Stanford engineering everywhere. URL: [Link]
see/[Link]?coll=348ca38a-3a6d-4052-937dcb017338d7b1.
18. Beni G. From Swarm Intelligence to Swarm Robotics, Swarm Robotics.
Lecture Notes in Computer Science, 2005, vol. 3342, pp. 1-9.
19. Bertsimas D. Simulated Annealing / D. Bertsimas, J. Tsitsiklis // Statistical
Science, Vol.8, No 1, 1993. P. 10-15.
20. Dorigo M. The Ant System: Optimization by a colony of cooperating
agents. IEEE Transactions on Systems, Man, and Cybernetics – Part B. 1996. V. 26.
No. 1. P 29-41.
21. Dorigo M., Birattari M., Stutzle T. Ant Colony Optimization. Artificial
Ants as a Computational Intelligence Technique // IRIDIA. Technical Report Se-
ries. Technical Report No. TR/IRIDIA/2006-023. Brussels, Belgium. 2006. 14 p.
22. Glover F. Future Paths for Integer Programming and Links to Artificial In-
telligence / F. Glover // Computers and Operations Research. 13 (5), 1986.
P. 533–549.
23. Glover F. Tabu search / F. Glover, M. Laguna // Vol. 22. Boston: Kluwer
academic publishers, 1997.
24. Holland J.H. Adaptation in natural and artificial systems / J.H. Holland //
University of Michigan Press, Ann Arbor, 1975.
25. Karaboga D. An idea based on honey bee swarm for numerical optimiza-
tion [Электронный ресурс] // Technical report TR06. Erciyes University, Engi-
neering Faculty, Computer Engineering Department. 2005. URL:
[Link] abc/pub/tr06_2005.pdf.
26. Kennedy J. Particle Swarm Optimization / J. Kennedy, R. C. Eberhart //
Proc. of IEEE International Conference on Neural Network, Piscataway, NJ. 1995
P. 1942–1948.
27. Kirkpatrick S. (1983). Optimization by Simulated Annealing / S. Kirkpat-
rick, Jr. Gelatt, M.P. Vecchi // Science 220 (4598): 671–680.
28. Pham D.T., Ghanbarzadeh A., Koc E., Otri S., Rahim S., Zaidi M. The Bees
Algorithm – A Novel Tool for Complex Optimisation Problems [Электронный
ресурс] //Technical Note. Manufacturing Engineering Centre. Cardiff University.
UK. 2005. URL: [Link]
Pham06%20-%20The%20Bee%[Link].
29. Pedersen M. Simplifying Particle Swarm Optimization / M. Pedersen,
A. Chipperfield // School of Engineering Sciences, University of Southampton, UK.
Applied Soft Computing, 2009. P. 618–628.
65
30. Poli R. An Analysis of Publications on Particle Swarm Optimisation Appli-
cations. Department of Computer Science [Электронный ресурс] / R. Poli // Uni-
versity of Essex. Technical Report CSM-469. May 2007.
31. Sahin E. Swarm robotics: From sources of inspiration to domains of appli-
cation, Swarm Robotics. Lecture Notes in Computer Science, 2005, vol. 3342,
pp. 10–20.
32. Shi Y. A Modified Particle Swarm Optimizer / Y. Shi, R. Eberhart // De-
partment of Electrical Engineering Indiana University Purdue University Indianapo-
lis. Indianapolis, IN 46202-5160.
33. Wolpert D.H. No Free Lunch Theorems for Optimization / D.H. Wolpert,
W.G. Macready // IEEE Transactions on Evolutionary Computation 1, 1997.
P. 67–82.
66
Матренин Павел Викторович
Гриф Михаил Геннадьевич
Секаев Виктор Гилячевич
Учебное пособие
Подписано в печать 14.03.2016. Формат 60 84 1/16. Бумага офсетная. Тираж 100 экз.
Уч.-изд. л. 3,95. Печ. л. 4,25. Изд. № 345/15. Заказ № 401. Цена договорная
Отпечатано в типографии
Новосибирского государственного технического университета
630073, г. Новосибирск, пр. К. Маркса, 20
67