Кудрявтсев Методы оптимизатсии 2015
.pdf5.3 Решение задачи коммивояжера с помощью генетического алгоритма
Задача коммивояжера: дано множество из n городов и матрица расстояний (стоимости переезда) между городами. Необходимо объехать все города по кратчайшему пути (с минимальными затратами), причем в каждом городе необходимо побывать только один раз и вернуться в город начала путешествия. Имеется пять городов и дана матрица расстояний вида табл. 5.1.
|
|
|
|
|
Таблица 5.1 |
|
Город 1 |
Город 2 |
Город 3 |
Город 4 |
Город 5 |
Город 1 |
0 |
4 |
6 |
2 |
9 |
Город 2 |
4 |
0 |
3 |
2 |
9 |
Город 3 |
5 |
3 |
0 |
5 |
9 |
Город 4 |
2 |
2 |
5 |
0 |
8 |
Город 5 |
9 |
9 |
9 |
8 |
0 |
Для решения данной задачи с помощью генетического алгоритма введем вектор вида [12345], отражающий последовательность посещения городов. Данный вектор представляет собой геном. Целевая функция вычисляется на основании приведенной таблицы как сумма расстояний между городами. Начинать путешествие будем из города 5.
Оператор скрещивания представляет собой двухэтапную процедуру. Пусть имеются два родителя:
Родитель 1: [12345], Родитель 2: [34521].
Случайно выбираем две точки разрыва, например: Родитель 1: [1 | 234 | 5], Родитель 2: [3 | 452 | 1].
На первом этапе происходит обмен фрагментами между точками разрыва:
Потомок 1: [* | 452 | *], Потомок 2: [* | 234 | *].
На втором этапе происходит замена звездочек на числа из исходной родительской последовательности, начиная со второго числа выделенного фрагмента. У Родителя 1 это цифра 3, у Родителя 2 – цифра 5. При этом происходит пропуск цифры, если она
131
уже имеется у Потомка. У Потомка 1 на место первой звездочки появится 3, цифры 4 и 5 будут пропущены, так как они уже есть у Потомка. По достижении конца вектора Родителя переходят к его началу и берут цифру 1. Таким образом Потомки будут иметь вид:
Потомок 1: [3 452 1], Потомок 2: [5 234 1].
Оператор мутации представляет собой случайную перестановку двух чисел в геноме, которые выбираются случайно. Вероятность мутации – 0,01.
Размер популяции N=4.
Ход работы генетического алгоритма можно представить в виде следующих шагов:
1. Формирование начальной популяции (табл. 5.2).
|
|
|
|
|
Таблица 5.2 |
||
|
|
Целевая |
|
g |
|
||
Особи |
Геном |
|
j |
f L |
|
|
|
функция |
|
|
|||||
|
|
|
∑ g |
|
|||
1 |
12345 |
29 |
32k122 |
|
|||
2 |
21435 |
29 |
|
32k |
|
||
|
|
|
|
|
122 |
|
|
3 |
54312 |
32 |
|
29k |
|
||
|
|
|
|
|
122 |
|
|
4 |
43125 |
32 |
|
29k |
|
||
|
|
|
|
|
122 |
|
|
2. Выбор родителей для размножения и формирование потомков. Для скрещивания выбраны особи (1,3) и (2,4). Кроме того, для потомка [1 | 23 | 45] сработала мутация и образовался новый геном [1 | 32 | 45] (табл. 5.3).
|
|
|
|
|
Таблица 5.3 |
||
Особи |
Родители |
Потомки |
Целевая |
|
|||
функция |
j |
|
|||||
|
|
|
|
|
|||
1 |
1 | 23 | 45 |
5 | |
43 | 12 |
32 |
|
|
|
3 |
5 | 43 | 12 |
1 | |
23 | 45 |
28 |
|
|
|
|
|
Мутация: |
|
|
|
|
|
|
|
1 | |
32 | 45 |
|
|
|
|
2 |
2 | 143 | 5 |
|
32 |
32 |
|
|
|
4 |
4 | 312 | 5 |
|
32 |
29 |
|
|
|
3. После отсечения худших особей популяция первого поколения приняла вид (табл. 5.4).
132
|
|
|
|
|
|
|
|
Таблица 5.4 |
||||
|
|
|
j |
k |
|
|
∑ |
|
|
j |
|
|
Особи |
Геном |
Целевая |
4 |
|
|
4 |
|
|
|
|||
|
|
функция |
|
|
|
5 2 5 |
|
|
||||
1(1) |
12345 |
29 |
|
|
|
28k |
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
|
|
|
|
2(2) |
21435 |
29 |
|
|
|
28k |
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
|
|
|
|
3(н) |
13254 |
28 |
|
|
|
29k |
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
|
|
|
|
4(н) |
21435 |
29 |
|
|
|
28k |
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
|
|
|
4. Для получения второго поколения для скрещивания выбраны особи (1,4) и (2,3) (табл. 5.5).
|
|
|
|
Таблица 5.5 |
||
Особи |
Родители |
Потомки |
Целевая |
|
||
функция |
j |
|
||||
|
|
|
|
|||
1 |
| 123 | 45 |
| 214 | 35 |
29 |
|
|
|
4 |
| 214 | 35 |
| 123 | 45 |
29 |
|
|
|
|
|
|
|
|
|
|
2 |
| 21 | 435 |
| 13 | 452 |
32 |
|
|
|
3 |
| 13 | 254 |
| 21 | 354 |
29 |
|
|
|
5. После отсечения худших особей популяция второго поколения приняла вид (табл. 5.6).
|
|
|
|
|
Таблица 5.6 |
||
|
|
Целевая |
|
g |
|
||
Особи |
Геном |
|
j |
f L |
|
|
|
функция |
|
|
|||||
|
|
|
∑ g |
|
|||
1(1) |
12345 |
29 |
28k111 |
|
|||
2(2) |
21435 |
29 |
|
28k |
|
||
|
|
|
|
|
111 |
|
|
3(3) |
13254 |
28 |
|
29k |
|
||
|
|
|
|
|
111 |
|
|
4(н) |
21354 |
29 |
|
28k |
|
||
|
|
|
|
|
111 |
|
|
Таким образом, после двух итераций минимальное значение целевой функции изменилось с 29 до 28, а общее качество популяции изменилось со 122 до 111. Проводя аналогичные манипуляции, можно и дальше уменьшать значение целевой функции. Нетрудно видеть, что описанный алгоритм является алгоритмом поиска с элементами случайности и позволяет найти приемлемое решение, которое является лучшим по сравнению с имеющимся.
133
Контрольные вопросы
1.Сформулируйте общую постановку задачи оптимизации. Дайте классификацию задач математической оптимизации.
2.Постройте математическую модель задачи размещения производства.
3.Приведите общий вид однокритериальной оптимизационной задачи.
4.Дайте определение локального и глобального минимума функции.
5.Дайте классификацию методов решения детерминированных задач оптимизации.
6.Опишите основные этапы алгоритма метода поразрядного поиска.
7.Опишите основные этапы алгоритма метода равномерного поиска.
8.Опишите основные этапы алгоритма метода деления пополам (дихотомии).
9.Опишите основные этапы алгоритма золотого сечения.
10.Опишите основные этапы алгоритма метода Фибоначчи.
11.По какому критерию производится сравнение эффективности алгоритмов оптимизации?
12.Дайте описание основной идеи метода квадратичной аппроксимации целевой функции.
13.Опишите основные этапы метода Пауэлла.
14.Опишите основные этапы метода Ньютона-Рафсона.
15.Опишите основные этапы метода секущих.
16.Сформулируйте задачу многомерной безусловной оптимизации.
17.Опишите основные этапы метода Гаусса — Зейделя (покоординатного спуска).
18.Опишите основные этапы метода Хука-Дживса (поиск по образцу).
19.Опишите основные этапы обычного симплекс-алгоритма. Что собой представляет многомерный симплекс?
20.Опишите основные этапы метода Нелдера-Мида (деформи-
руемого многогранника).
134
21.Опишите основные этапы простого градиентного метода.
22.Опишите основные этапы метода наискорейшего спуска.
23.Опишите основные этапы метода Бокса-Уилсона (крутого восхождения).
24.Чем отличаются общая, каноническая и стандартная формы задач линейного программирования?
25.Дайте геометрическую интерпретацию задачи ЛП. Рассмотрите особые случаи.
26.Что собой представляет опорный план (базисное решение) задачи ЛП?
27.Каков признак оптимальности опорного плана?
28.Что собой представляет начальный и искусственный базис?
29.Дайте определение двойственной задачи ЛП.
30.В чем особенность и сложность решения задачи линейного целочисленного программирования?
31.Что собой представляет метод отсечения Гомори?
32.Опишите основные этапы метода ветвей и границ.
135
Список литературы
1. Вентцель Е.С. Исследование операций: Задачи, принципы,
методология. М.: Высшая школа, 2001.
2. Карманов В.Г. Математическое программирование: учебное пособие. М.: Физматлит, 2004.
3.Кулябичев Ю.П., Анитова Т.В. Теоретико-игровые методы исследования. М.: МИФИ, 1994.
4.Губарь Ю. http://www.intuit.ru/studies/courses/1020/188/info.
http://www.intuit.ru. [Online]
5. Загребаев А.М., Крицына Н.А., Кулябичев Ю.П., Шумилов Ю.Ю. Методы математического программирования в
задачах оптимизации сложных технических систем: учебное
пособие. М.: МИФИ, 2007.
6. Корнеев В.В., Гареев А.Ф., Васютин С.В., Райх В.В. Базы данных. Интеллектуальная обработка информации. М.: Нолидж, 2001.
136
Приложение 1
Построение графиков в SciLab
1. Выполнить в командной строке инструкцию
deff('[z]=surf(x1,x2)','z=x1^3+13.5*x1^2-66*x1+(5*x1-x2)^2');
Здесь во втором параметре нужно после «z=» написать выражение для вашей функции. Тем самым вы подготавливаете функцию
крисованию.
2.Задать диапазон изменения независимых переменных с помощью команды
t=-5:0.2:5;
Здесь двоеточиями разделены начало отсчета, шаг, конец отсчета. Для каждой переменной можно задать свой диапазон варьирования (в этом случае нужно добавить еще одну аналогичную инструкцию с другой переменной).
3. Построить поверхность командой
fplot3d(t,t,surf,35,45,"X@Y@Z");
Описание параметров можно посмотреть в справке. После этого график можно вращать, чтобы добиться максимально наглядного положения поверхности.
4. Построить изолинии командой
fcontour(1:0.1:3,5:0.1:15,surf,10);
Описание ее также можно посмотреть в справке. Нужно варьировать диапазоны изменения переменных, чтобы был наглядно виден минимум (максимум) функции.
137
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Приложение 2 |
|
Варианты для самостоятельной работы |
|||||||||||||||
|
|
|
|
|||||||||||||
№ варианта |
|
|
Условия задачи |
|||||||||||||
|
|
l 2 4 |
|
|
T min |
|||||||||||
|
|
|
7 |
|
|
5 |
|
/ 35 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
1 |
|
% |
|
|
|
3 |
|
|
/ 14 |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
6 / 0 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/ 0 |
||
|
|
|
|
|
/ 0, |
|
||||||||||
|
|
l 4 |
|
5 |
|
T max |
||||||||||
|
|
|
|
|
|
|||||||||||
|
|
|
|
4 |
|
|
|
|
( 10 |
|||||||
2 |
|
%3 |
|
|
6 |
|
|
( 14 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
8 |
|
|
|
|
( 6 |
||||||
|
|
|
|
|
2 |
|
|
|
7 |
|
||||||
3 |
|
l |
|
|
|
/ 0, |
|
|
|
/ 0 |
||||||
|
|
|
|
|
5 |
T min |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
3 |
/ 5 |
|||||||||
|
|
% |
|
2 |
|
7 |
|
/ 4 |
||||||||
|
|
|
|
|
5 |
|
3 |
|
/ 0 |
|||||||
|
|
|
|
|
|
|
/ 0, |
|
|
|
/ 0 |
|||||
|
|
l |
|
|
2 |
T max |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
2 |
|
|
( 6 |
||||||||
|
|
|
|
|
2 |
|
|
|
( 8 |
|||||||
|
|
|
|
|
|
|
|
|||||||||
|
|
% |
|
|
|
|
|
|
||||||||
|
|
|
|
|
2 |
( 2 |
||||||||||
|
|
|
|
3/ 0, |
|
|
|
/ 0 |
||||||||
5 |
|
l |
|
|
|
T min |
||||||||||
|
|
|
|
3 |
4 |
/ 8 |
||||||||||
|
|
%2 |
|
|
7 |
|
|
/ 4 |
||||||||
|
|
|
|
|
|
|
4 |
|
|
/ 11 |
||||||
|
|
|
|
|
|
/ 0, |
|
/ 0 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
T max |
|||
|
|
l 2 |
|
|
5 |
|
||||||||||
6 |
|
|
|
5 |
|
|
( 25 |
|||||||||
|
|
% |
|
2 |
|
|
|
|
|
( 20 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
( 25 |
||||
|
|
|
|
3 |
|
2 |
|
|||||||||
|
|
|
|
|
|
|
/ 0, |
|
|
/ 0 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138
|
l 2 |
5 |
|
|
T max |
|
|||||||
|
|
|
|
||||||||||
|
|
5 |
|
|
/ 25 |
|
|||||||
|
|
|
|
|
|
|
|
|
|
||||
7 |
% |
2 |
|
|
( 20 |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
3 |
|
|
2 |
( 25 |
|
|||||||
|
|
|
|
/ 0, |
/ 0 |
|
|||||||
|
l 2 |
5 |
|
|
T max |
|
|||||||
|
|
|
|
||||||||||
8 |
|
5 |
|
|
( 25 |
|
|||||||
|
% |
2 |
|
|
|
( 20 |
|
||||||
|
3 |
|
|
|
|
|
/ 25 |
|
|||||
|
|
|
2 |
|
|||||||||
|
|
|
|
|
/ 0, |
|
/ 0 |
|
|||||
|
l 3 |
|
|
|
5 |
|
|
T min |
|
||||
|
2 |
|
|
2 |
|
/ 30 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
% |
|
|
5 |
|
|
/ 10 |
|
|||||
|
|
|
|
|
4 |
/ 0 |
|
||||||
9 |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
/ 0 |
|
|
|
|
|
/ 0, |
|
|||||||||
|
l 3 |
|
5 |
|
|
T max |
|
||||||
|
|
|
|
|
|
||||||||
|
|
|
|
|
2 |
|
|
( 16 |
|
||||
|
% 2 |
|
|
|
|
|
( 21 |
|
|||||
|
3 |
|
|
|
|
|
( 15 |
|
|||||
10 |
|
|
2 |
|
|||||||||
|
|
|
|
|
/ 0, |
|
/ 0 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
l 2 4 |
|
|
T min |
|
||||||||
|
|
|
|
|
2 |
|
/ 6 |
|
|||||
|
|
|
|
|
|
|
|
/ 1 |
|
||||
|
% |
2 |
|
|
|
|
|
||||||
|
3 |
|
|
|
|
|
|
|
|
||||
11 |
|
|
2 / 5 |
|
|||||||||
|
|
|
|
|
/ 0, |
|
/ 0 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
l 5 |
|
T max |
|
|||||||||
|
|
|
2 |
|
|
( 6 |
|
||||||
|
|
2 |
|
|
|
|
|
|
|||||
|
% |
|
|
( 11 |
|
||||||||
12 |
3 |
|
|
2 |
( 5 |
|
|||||||
|
|
|
|
|
/ 0, |
|
/ 0 |
|
|||||
|
l 2 |
|
|
|
5 |
|
|
T min |
|
||||
|
|
|
|
|
2 |
|
/ 1 |
|
|||||
|
|
|
|
|
|
|
|
/ 6 |
|
||||
|
% |
2 |
|
|
|
|
|
||||||
|
3 |
|
|
|
|
|
|
|
|
||||
13 |
|
|
2 / 5 |
|
|||||||||
|
|
|
|
/ 0, |
/ 0 |
|
|||||||
|
|
|
|
|
|
|
|
|
T max |
|
|||
|
l 3 |
3 |
|
||||||||||
|
|
3 |
|
|
4 |
|
|
( 6 |
|
||||
|
% |
|
|
|
3 |
|
|
( 11 |
|
||||
|
|
|
|
|
|
|
( 5 |
|
|||||
14 |
|
3 |
|
|
|
|
|
||||||
|
|
|
|
|
/ 0, |
|
/ 0 |
|
|||||
|
139 |
|
|
|
|
|
l 2 |
|
|
|
5 |
|
T min |
|
|||||
|
|
|
|
|
|
||||||||
|
|
|
|
|
2 |
|
|
/ 10 |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|||
15 |
|
2 |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
/ 6 |
|
|||||
|
%3 |
|
|
|
|
|
|
|
|
||||
|
|
|
|
2 |
|
/ 5 |
|
||||||
|
|
|
|
/ 0, |
/ 0 |
|
|||||||
|
l 2 |
8 |
T max |
|
|||||||||
16 |
|
5 |
2 |
( 3 |
|
||||||||
|
% |
2 |
3 |
( 1 |
|
||||||||
|
4 |
|
|
1 |
( 8 |
|
|||||||
|
|
|
|
|
/ 0, |
|
/ 0 |
|
|||||
|
l 2 |
|
|
|
5 |
|
T min |
|
|||||
|
|
|
|
|
2 |
|
/ 1 |
|
|||||
|
|
|
|
|
|
|
/ 6 |
|
|||||
|
% |
2 |
|
|
|
|
|
||||||
|
3 |
|
|
|
|
|
|
|
|
||||
17 |
|
|
2 / 5 |
|
|||||||||
|
|
|
|
|
/ 0, |
|
/ 0 |
|
|||||
|
l |
|
|
|
|
|
T max |
|
|||||
|
|
|
2 |
|
|
||||||||
|
|
|
|
|
2 |
|
|
( 6 |
|
||||
|
|
2 |
|
|
|
( 8 |
|
||||||
18 |
% |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
( 2 |
|
||
|
|
|
/ 0, |
/ 0 |
|
||||||||
|
l 6 |
|
|
|
|
|
|
T max |
|
||||
|
|
|
2 |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
6 |
2 |
|
|
( 10 |
|
|||||||
|
% |
4 |
|
|
|
|
( 18 |
|
|||||
|
|
|
|
|
|
|
|
2 |
|
|
( 12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
/ 0 |
|
|
|
|
|
|
/ 0, |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
l |
3 |
|
|
|
|
T max |
|
|||||
|
|
|
|
|
|||||||||
|
|
|
|
1 |
|
||||||||
20 |
% |
3 |
4 |
( 8 |
|
||||||||
|
2 |
|
|
7 |
|
|
( 4 |
|
|||||
|
|
|
|
|
|
|
3 |
( 11 |
|
||||
|
|
|
|
/ 0, |
|
/ 0 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
140