Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Современные алгоритмы оптимизации автоматизированных производств. Учебное пособие.pdf
X
- •ВВЕДЕНИЕ
- •1.3. Классификация методов оптимизации проектных решений
- •Вопросы для самопроверки
- •2. ДЕТЕРМИНИРОВАННЫЕ МЕТОДЫ ОПТИМИЗАЦИИ
- •2.1. Линейное математическое программирование
- •2.2. Нелинейное математическое программирование
- •2.2.1. Однопараметрические целевые функции
- •2.2.2. Многопараметрическая оптимизация
- •3. МНОГОКРИТЕРИАЛЬНАЯ ОПТИМИЗАЦИЯ
- •3.1. Основные положения многокритериальной оптимизации
- •Вопросы для самопроверки
- •Вопросы для самопроверки
- •4. СТОХАСТИЧЕСКИЕ МЕТОДЫ РЕШЕНИЯ ОПТИМИЗАЦИОННЫХ ЗАДАЧ
- •4.1. Метод Монте-Карло
- •4.2. Генетические алгоритмы
- •4.3. Муравьиные алгоритмы
- •4.4. Жадные алгоритмы
- •4.5. Алгоритм роя частиц
- •Вопросы для самопроверки
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК

Рассмотрим путь второго муравья. На первой итерации определим
1 2 21
0,5 / ( (0 9) (5 8) )
0,448;
[0,4] [0,5]
1 2 21 1 2 21
0,5 / ( (0 9) (5 8) ) 0.58 / ( (1 9) (4 8) )
1 2 21
0,58 / ( (1 9) (4 8) )
0,552.
[0,4] [1,4]
1 2 21 1 2 21
0,5 / ( (0 9) (5 8) ) 0,58 / ( (1 9) (4 8) )
P
P
− +−
= =
−
−+− + −+−
− +−
= =
−
−+− + −+−
множество его возможных переходов. Это точки такие же, как и для первого муравья.
а б
Рис. 4.10. Рабочее пространство после прохода первого муравья:
а – путь первого муравья (желтый цвет);
б – количество феромона после прохода первого муравья
Найдем вероятности перехода по формуле (4.1):
Как видно, вероятности распределены уже с большим разбросом –
именно здесь и прослеживается влияние феромона на выбор следующей
клетки. Но даже несмотря на это, выбор следующей точки осуществляется
случайно, с помощью «колеса рулетки» (рис. 4.11). Случайное сгенерированное число: 0,62.
81

Рис. 4.11. Вероятность перехода между клетками для второго муравья
1
τ
,14ij
∆=
1
τ (1 0,5) 0,5 0,32;
,14ij
=− ⋅ +=
1
τ (1 0,5) 0,58 0,36;
,14ij
=− ⋅ +=
τ (1 0,5) 0,5 0,25;
,ij
=− ⋅=
τ (1 0,5) 0,58 0,29.
,ij
=−⋅ =
Определим длину пути маршрута второго муравья и сравним с пер-
вым. L2 = 14. Таким образом, лучшая длина (L1 = 12) сохраняется.
Осуществим обновление феромона по пути второго муравья по фор-
муле (4.2)
.
Рассмотрим процесс обновления феромонов по формуле (4.3):
– после прохода второго муравья для клеток, вошедших в путь этого
муравья:
– для клеток, совпавших с клетками пути первого муравья:
– для клеток, не вошедших в путь первого и второго муравьев:
– для клеток, вошедших в путь первого муравья, но не вошедших
в путь второго муравья:
Рабочее пространство после прохода второго муравья показано на
рис. 4.12, а (путь первого муравья, не совпавший с путем второго муравья,
остался выделенным желтым цветом, путь второго муравья – зеленым).
82

Каждый последующий муравей будет изменять количество феромона
на клетках, тем самым изменяя вероятность перехода на каждую из них
для последующих итераций. На клетках, по которым чаще всего проходят
муравьи, будет откладываться все больше феромона (рис. 4.12, б).
а б
Рис. 4.12. Рабочее пространство после прохода второго муравья:
а – путь второго муравья (зеленый цвет); б – количество феромона
на клетках после прохода второго муравья
После проведения определенного количества итераций в рабочем
пространстве сформируется кратчайший путь – путь, имеющий самый высокий показатель качества (наименьшая длина пути) и наибольший уровень феромона.
Моделирование пути муравья может пойти непредсказуемо ввиду
присутствия фактора случайности. Уменьшение рисков возможно путем
варьирования величин регулируемых параметров (α, β, Q, ρ), а также
начального количества феромонов на клетках.
Также используются известные модификации алгоритма с последующим исследованием их влияния на результат прокладки (с учетом как
длины получившегося пути, так и времени выполнения).
83

4.4. ЖАДНЫЕ АЛГОРИТМЫ
Жадные алгоритмы – это такие алгоритмы, которые стремятся совершить оптимальный выбор в каждый момент времени. На каждом шаге делаем лучший выбор, не задумываясь о будущем. Алгоритмы называются
жадными, когда они используют жадное свойство. Они не смотрят в будущее, чтобы выбрать глобальное оптимальное решение. Их интересует
только лучшее решение в данный момент. Но общее оптимальное решение может отличаться от решения, которое выбирает алгоритм на каждом
шаге своей работы. Также они никогда не оглядываются назад на то, что
сделали, чтобы понять, нужна ли глобальная оптимизация. В этом главное
отличие жадного алгоритма от динамического программирования.
Жадные алгоритмы очень быстрые, поэтому они очень популярные.
Примеры популярных жадных алгоритмов:
1) алгоритм Дейкстры;
2) алгоритм Крускала (Краскала);
3) алгоритм Прима;
4) деревья Хаффмана.
Способ построения и примеры жадных алгоритмов
Как создать жадный алгоритм? Алгоритм всегда должен отвечать на
вопрос: «Каков лучший выбор в этот момент времени?». Это основа построения жадного алгоритма. Жадные алгоритмы, как правило, достаточно легко кодировать.
Пример подсчета выдачи сдачи торговым автоматом с использовани-
ем жадного алгоритма.
Пусть необходимо сделать покупку за 70 руб. В гипотетическом автомате есть монеты достоинством в 1, 2, 5, 10, 20, 50 и 100 руб. Монеты
в 30 руб. нет. Как рассчитать, сколько следует вернуть денег в качестве
сдачи?
Жадный алгоритм начинается с самого высокого номинала и работает
в обратном направлении, т. е. алгоритм начинается со 100 руб.:
84

100 больше, чем 30, поэтому он не может использовать 100 рублевую мо-
нету. Далее рассматривается 50 руб., ситуация та же. Потом 20 руб.:
20 меньше 30, поэтому требуется 1 монета номиналом 20 руб.
Теперь алгоритм должен вернуть еще 10 руб. Он снова пробует
20 руб., но 20 больше 10. Затем идет до 10 руб. Он выбирает 1 монету на
10 руб. и теперь возвращается 0.
Итого мы возвращаем 1×20 руб. и 1×10 руб.
Этот алгоритм работает довольно хорошо в реальной жизни.
Рассмотрим другой пример – на этот раз в автомате имеются следу-
ющие монеты (перечень приводится в формате (номинал, количество)):
(1 руб., 10), (2 руб., 3), (5 руб., 1), (10 руб., 0), (20 руб., 1), (50 руб., 19),
(100 руб., 16).
Алгоритм должен вернуть сдачу в 30 руб.: 100 руб. не подходит, так
же, как и 50. Выбирается 1×20 руб. Затем нужно вернуть 10 руб.: монеты
в 20 руб. закончились, поэтому идем вниз на один номинал. Монеты
в 10 руб. закончились, поэтому перемещаемся вниз еще на один номинал.
Выбирается 1×5 руб. Необходимо вернуть еще 5 руб. Проверяется наличие монет в 5 руб., но этот номинал закончился, поэтому автомат перемещается к номиналам меньшего достоинства.
То, что оптимально на локальном уровне, иногда не оптимально на
глобальном. В алгоритме подсчета сдачи можно определить точку, в которой он не является лучшим в глобальном масштабе.
Допустим, что по условию задачи имеются монеты трех номиналов 1,
15, 25 руб.
Необходимо выдать сдачу в 30 руб. Что вернет алгоритм?
Он выбирает 1×25 руб. и 5×1 руб. Хотя лучшим решением будет –
2×15 руб.
Алгоритм потерпел неудачу, потому что он не анализировал ситуацию с наличием 15 руб., а сразу выбрал монету в 25 руб. Затем автомат
проанализировал монеты в 15 руб., но этот номинал уже не подходит, так
как 25 + 15 > 30.
85

Это пример того, где жадные алгоритмы уходят от оптимального вы-
бора. Но жадные алгоритмы иногда могут быть лучшими на глобальном
уровне, т. е. глобально оптимальными.
Примеры использования жадного алгоритма
Алгоритм Краскала (Kruskal) – эффективный алгоритм построения минимального остовного дерева взвешенного связного неориентированного
графа для соединения вершин графа сетью наименьшей протяженности.
Минимальное остовное дерево в связанном взвешенном неориентированном графе – это остовное дерево этого графа, имеющее минимальный
возможный вес, где под весом дерева понимается сумма весов, входящих
в него ребер.
Неформально говоря, остовное дерево получается из исходного графа
удалением максимального числа ребер, входящих в циклы, но без нарушения связности графа. Разберем алгоритм по шагам, пример построения
минимального остовного дерева показан на рис. 4.13.
Шаг 1. Отсортируем ребра в порядке возрастания по значению веса.
Ребро ae имеет минимальный вес, равный 1. В результате получаем множество выбранных вершин (е, а) (рис. 4.13, а).
Шаг 2. Теперь наименьший вес равен 2 у ребра cd. Так как это ребро
не имеет общих вершин с множеством выбранных вершин (a, e), получаем
второе множество выбранных вершин (c, d) (рис. 4.13, б).
Шаг 3. Далее наименьший вес равен 3 у ребра ab. При этом не возникает ни одного цикла, так как это ребро не имеет общих вершин и множествами, получаем множество выбранных вершин (e, a, b) (рис. 4.13, в).
Шаг 4. Следующим выбираем ребро BE с весом 4 (рис. 4.13, г).
Шаг 5. Однако вершины этого ребра входят в множество выбранных
вершин (e, a, b), следовательно, образовался цикл abe (рис. 4.13, д),
что в соответствии с задачами, для которых предназначен алгоритм Краскала, недопустимо.
86

Шаг 6. Выберем следующее ребро bc. При этом не возникает ни од-
ного цикла, так как это ребро не имеет общих вершин с множествами, получаем множество выбранных вершин (e, a, b, c, d) (рис. 4.13, е).
Алгоритм завершается добавлением ребра bc с весом 5. Количество
выбранных вершин (a, b, c, d, e) равно 5, что соответствует количеству
вершин графа.
Таким образом, минимальное остовное дерево построено.
а б
в г
д е
Рис. 4.13. Построение минимального остовного дерева
87

Алгоритм Краскала предназначен именно для соединения всех вершин
графа (в технических задачах – это точки присоединения тех или иных трасс
к объектам: микросхемам, оборудованию, установкам, населенным пунктам
и т. д.) – кратчайшей сетью. Тем не менее, нетрудно заметить, что отказ от
так называемых циклов не всегда целесообразен. Если иметь в виду, что информационные сигналы передаются с использованием адресной шины, то
результаты работы алгоритма Краскала вполне приемлемы. Если же речь
идет, например, о транспортных магистралях, то вряд ли целесообразно из
пункта е перемещаться в пункты b, c или d по полученной траектории.
Для соединения одной вершины графа со всеми другими вершинами
сетью наименьшей протяженности применяется алгоритм Дейкстры
(Dijkstra), а для соединения всех вершин друг с другом кратчайшим покрытием используются методы решения задачи Штейнера в евклидовом
пространстве и на ортогональной сетке.
4.5. АЛГОРИТМ РОЯ ЧАСТИЦ
Роевой метод оптимизации (или метод роя частиц) – это метод численной оптимизации, для использования которого не требуется знать градиент
оптимизируемой функции. Данный метод основан на так называемом роевом интеллекте и относится к стохастическим методам оптимизации.
Роевой интеллект – это интеллект, который реализует коллективное
поведение децентрализованной самоорганизующейся системы. Роевой интеллект достаточно часто встречается в природе. Именно благодаря ему
осуществляют свою жизнедеятельность пчелы, муравьи, термиты, а также
рыбы и птицы.
Например, поведение птиц основано на соблюдении определенных
правил:
− находясь в полете, каждая из птиц следит за сородичами и коорди-
нирует свое движение;
− найдя источник пищи, птица оповещает стаю об этом.
88

Анализ поведения птиц привел Крейга Рейнольдса в 1986 г. к созданию компьютерной модели, отражающей поведение птиц. В ее основе лежали три простых правила:
1) каждая птица пытается избежать столкновения с другими птицами;
2) каждая птица двигается в том же направлении, что и другие;
3) все птицы стремятся двигаться на одинаковом расстоянии друг от
друга. Такая модель оказалась достаточно правдоподобной. Поэтому
в 1995 г. Джеймсом Кеннеди и Расселом Эбенхартом был предложен метод оптимизации, основанный на модели Рейнольдса. Данный метод был
назван методом роя частиц.
Особей в такой модели принято называть частицами. Метод моделирует многоагентную систему, в которой частицы двигаются к оптимальному решению, обмениваясь при этом информацией с соседями.
Рассмотрим метод роя частиц применительно к поиску оптимального
расположения центра управления предприятием, в состав которого входят
n производственных объектов.
Исходными данными для решения поставленной задачи являются:
– число объектов n;
– координаты xi и yi расположения производственных объектов
(i = 1,…, n);
– удельные затраты ui (в относительных единицах – баллах) на ком-
муникационные связи между i-м объектом и центром управления.
Предметом поиска являются такие значения координат X и Y расположения центра управления, при которых затраты на реализацию коммуникационных связей между объектами и центром управления будут минимальны (здесь X и Y – векторы координат xi и yi расположения производственных объектов).
Критериальная функция для решения поставленной задачи примет
вид
(, ) =
(
)
89
+
(
)
min.

С математической точки зрения метод роя частиц заключается
в отыскании в начале скорости для каждой частицы, а затем ее координаты в новой точке в соответствии со скоростью.
Скорость i-й частицы считается для каждого j-го параметра. Она
находится из выражения
(
+ 1)=
()
+
()
()+
где
(
+ 1
()
)
– скорость частицы в следующий момент времени;
– скорость частицы в настоящее время – инерция;
()
() – когнитивная скорость частицы – память;
()
() – социальная скорость частицы – сотрудничество;
() – положение частицы в данный момент времени;
()
,
– лучшее положение частицы;
()
– лучшее положение среди всех частиц;
– случайные величины, принимающие значение от 0 до 1 и вно-
сящие элемент случайности в процесс поиска;
,
– положительные коэффициенты ускорения, регулирующие
()
(),
вклад соответствующих компонент.
Согласно рассчитанным скоростям частиц по каждому параметру
находятся и координаты частицы по формуле
(
+ 1)=
()
+
(
+ 1
)
.
Обычно при решении задач оптимизации данным методом применя-
ется выход из цикла по числу итераций, приемлемому значению полученного результата или отсутствию улучшений.
Пример. Применим предложенную методику для поиска оптималь-
ного расположения центра управления предприятием, содержащим шесть
производственных объектов (n = 6). Исходные данные представлены
в табл. 4.5.
90
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
