Московский государственный университет путей сообщения
Опубликован: 10.10.2014 | Доступ: свободный | Студентов: 866 / 193 | Длительность: 22:10:00
Лекция 2:

Генетические алгоритмы для задач комбинаторной оптимизации

2.3.4.2. Матрица предшествования

Рассмотрим представление тура в виде двоичной матрицы предшествования [4]. В этом случае элемент матрицы m_{ij} равен 1, если и только если город i предшествует (встречается в туре раньше) городу j. В противном случае m_{ij}=0. Отметим, что здесь имеется в виду не только непосредственное предшествование (город i связан непосредственно с городом j) но и более "глубокое". Например, тур T_3=(3-1-2-8-7-4-6-9-5) представляется бинарной матрицей предшествования, которая показана в табл.2.5 Здесь элементы главной диагонали m_{ij}=0 и m_{ij}=1, если i-й город предшествует в туре j-му городу. Например, в первой строке город 1 предшествует в туре городам 2, 4, ….,9, но не предшествует городу 3.

Таблица 2.5.
1 2 3 4 5 6 7 8 9
1 0 1 0 1 1 1 1 1 1
2 0 0 0 1 1 1 1 1 1
3 1 1 0 1 1 1 1 1 1
4 0 0 0 0 1 1 0 0 1
5 0 0 0 0 0 0 0 0 0
6 0 0 0 0 1 0 0 0 1
7 0 0 0 1 1 1 0 0 1
8 0 0 0 1 1 1 1 0 1
9 0 0 0 0 1 0 0 0 0

В этом представлении тура матрица M размерности n\times n обладает следующими свойствами:

  1. число единиц в матрице равно точно \frac{n(n-1)}{2};
  2. m_{ij}=0 для всех 1\le i\le n;
  3. если m_{ij}=1 и m_{jk}=1, то m_{ik}=1.

Если число единиц в матрице меньше чем \frac{n(n-1)}{2}, а два других требования выполняются, то города частично упорядочены. Это означает, что можно получить матрицу (по крайней мере одним способом), которая представляет правильный тур. На этой форме представления вводятся два новых генетических оператора кроссинговера: пересечение и объединение.

Оператор пересечения основан на том, что побитовое пересечение матриц дает матрицу, где:

  1. число единиц не больше \frac{n(n-1)}{2};
  2. выполняются два других требования.

Таким образом, можно получить матрицу, представляющую правильный тур. Например, для двух родителей P_1= (1-2-3-4-5-6-7-8-9) и P_2= (4-1-2-8-7-6-9-3-5), представляемых матрицами табл.2.6 и табл.2.7 соответственно, поэлементное пересечение этих матриц дает матрицу табл.2.8.

Частичный порядок городов определяемый матрицей табл.2.4 следующий:

Город 1 предшествует городам 2, 3, 5, 6, 7, 8, 9;

Город 2 предшествует городам 3, 5, 6, 7, 8, 9;

Город 3 предшествует 5;

Город 4 – 5, 6, 7, 8, 9

Города 6, 7, 8 предшествуют 9.

Таблица 2.6.
1 2 3 4 5 6 7 8 9
1 0 1 1 1 1 1 1 1 1
2 0 0 1 1 1 1 1 1 1
3 0 0 0 1 1 1 1 1 1
4 0 0 0 0 1 1 1 1 1
5 0 0 0 0 0 1 1 1 1
6 0 0 0 0 0 0 1 1 1
7 0 0 0 0 0 0 0 1 1
8 0 0 0 0 0 0 0 0 1
9 0 0 0 0 0 0 0 0 0

На заключительном этапе выполнения этого оператора выбирается один из родителей и в промежуточную матрицу (полученную после пересечения) добавляются некоторые единицы (чтобы их число было равно \frac{n(n-1)}{2}) путем анализа сумм строк и столбцов, которые восстанавливают полный тур с учетом соответствующего родителя.

В табл.2.8 для удобства показано число единиц по строкам и столбцам матрицы, которое, например, позволяет города разбить на подтуры или в некотором смысле эквивалентные группы. Анализ числа единиц в строках показывает, что тур должен начинаться с (1-2-4), остальные города можно разбить на группы (3,6,7,8) и (5,9). Анализ числа единиц по столбцам позволяет "выстроить" подтур (3-5-9), а для остальных трех городов можно выбрать, например, порядок (8-7-6). В результате получаем для потомка полный тур (1-2-4-8-7-6-3-5-9), который представлен матрицей табл.2.9, которая может быть получена из предыдущей табл.2.8.

Таблица 2.7.
1 2 3 4 5 6 7 8 9
1 0 1 1 0 1 1 1 1 1
2 0 0 1 0 1 1 1 1 1
3 0 0 0 0 1 0 0 0 0
4 1 1 1 0 1 1 1 1 1
5 0 0 0 0 0 0 0 0 0
6 0 0 1 0 1 0 0 0 1
7 0 0 1 0 1 1 0 0 1
8 0 0 1 0 1 1 1 0 1
9 0 0 1 0 1 0 0 0 0
Таблица 2.8.
1 2 3 4 5 6 7 8 9 N1
1 0 1 1 0 1 1 1 1 1 7
2 0 0 1 0 1 1 1 1 1 6
3 0 0 0 0 1 0 0 0 0 1
4 0 0 0 0 1 1 1 1 1 5
5 0 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0 1 1
7 0 0 0 0 0 0 0 0 1 1
8 0 0 0 0 0 0 0 0 1 1
9 0 0 0 0 0 0 0 0 0 1
N1 0 1 2 0 4 3 3 3 6

Оператор объединения основан на том, что подмножество бит из одной матрицы может быть комбинировано с подмножеством бит из другой матрицы без потери свойства быть туром, если эти подмножества имеют пустое пересечение. Оператор разбивает множество городов на две непересекающиеся группы. При этом для первой группы городов копируются биты из первой матрицы, а для второй группы копируются биты из второй матрицы.

На заключительном этапе матрица достраивается путем анализа сумм для строк и столбцов аналогично операции пересечения. Например, два родителя P_1 и P_2, которые представлены табл.2.6 и табл.2.7, и разбиения городов {1, 2, 3, 4,} и {5, 6, 7, 8, 9} порождают матрицу табл.2.10.

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

Таблица 2.9.
1 2 3 4 5 6 7 8 9
1 0 1 (1) 1 1 1 1 1 1
2 0 0 1 (1) 1 1 1 1 1
3 0 0 0 0 1 0 0 0 (1)
4 0 0 (1) 0 1 1 1 1 1
5 0 0 0 0 0 0 0 0 (1)
6 0 0 (1) 0 (1) 0 0 0 1
7 0 0 (1) 0 (1) (1) 0 0 1
8 0 0 (1) 0 (1) (1) (1) 0 0
9 0 0 0 0 0 0 0 0 0
Таблица 2.10.
1 2 3 4 5 6 7 8 9
1 0 1 1 1 X X X X X
2 0 0 1 1 X X X X X
3 0 0 0 1 X X X X X
4 0 0 0 0 X X X X X
5 X X X X 0 0 0 0 0
6 X X X X 1 0 0 0 1
7 X X X X 1 1 0 0 1
8 X X X X 1 1 1 0 1
9 X X X X 1 0 0 0 0