- •ВВЕДЕНИЕ
- •1.3.1. Задача линейного программирования
- •1.3.2. Классическая транспортная задача линейного программирования
- •1.3.3. Транспортная задача по критерию времени
- •1.3.4. Задача параметрического линейного программирования
- •1.3.6. Задача нелинейного программирования
- •1.3.7. Дискретная задача математического программирования
- •1.3.8. Задача целочисленного линейного программирования
- •1.3.10. Задача коммивояжера
- •1.4.2. Задания для самостоятельной работы
- •2. ЗАДАЧА О НАЗНАЧЕНИЯХ
- •3. ЗАДАЧА О КОММИВОЯЖЕРЕ
- •4. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
- •4.5.3. Задания для решения задачи о распределении ресурсов
- •4.6.3. Задания для решения задачи о замене оборудования
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК
3.ЗАДАЧА О КОММИВОЯЖЕРЕ
3.1.МАТЕМАТИЧЕСКАЯМОДЕЛЬ ЗАДАЧИ О КОММИВОЯЖЕРЕ
Содержательная постановка задачи
Имеется ряд городов. Известны расстояния между любой парой городов. Вообще говоря, расстояние, пройденное в одну сторону, не обязательно совпадает с расстоянием, пройденным в обратную сторону. Если между двумя городами нет дороги, то это расстояние равно бесконечно большой величине. По тем же соображениям расстояние из города «назад в этот город» равно бесконечно большой величине. Коммивояжер, выезжая из какого-либо города, должен посетить все города, побывав в каждом из них ровно один раз, и вернуться в исходный город. Объезд городов, удовлетворяющий этим требованиям, называется маршрутом коммивояжера (в теории графов – это гамильтонов контур). Необходимо определить маршрут минимальной длины, понимая под длиной маршрута сумму длин входящих в него дуг.
Построение математической модели 1. Определение размерности:
n – количество городов, из которых выезжает коммивояжер,i = 1,…,n, – индекс (номер) города;
n – количество городов, в которые въезжает коммивояжер, j = 1,…,n, – индекс (номер) города.
Следует обратить внимание, что два разных параметра (города для въезда и для выезда) имеют одну и ту же размерность, но разные индексы, что позволяет при построении модели различать эти параметры.
2. Выбор постоянных параметров:
сij – расстояние, которое проедет коммивояжер из города с номером i (i = 1,…,n) в город с номером j (j = 1,…,n).
51
3. Выбор переменных параметров:
для каждой пары городов i (i = 1,…,n) и j (j = 1,…,n) введем переменную xij, которая может принимать всего два значения (0 или 1):
1, есликоммивояжередет изгорода i вгород j, xij = 0, если иначе.
4. Запись условий (ограничений):
n
j∑1xij =1, i =1, , n –
=
из каждого города i выезжать можно ровно один раз;
n
i∑1xij =1, j =1, ,n –
=
въезжать в каждый город j можно ровно один раз;
0 ≤ xij ≤1, i, j =1, , n ,
xij – целочисленные, i, j =1, , n –
условия нахождения каждой переменной xij в интервале от 0 до 1 и целочисленность переменных xij обеспечивают переменным xij альтернатив-
ные значения 0 или 1.
Полученных условий недостаточно для полного описания маршрутов, так как возможны неполные обходы городов, к примеру, как на рис. 9.
2 |
3 |
||
1 |
|
|
4 |
|
|
||
|
|
||
|
|
|
|
|
|
|
|
6 |
|
5 |
|
|
|||
Рис. 9. Два подцикла в задаче коммивояжера
52
Поэтому для исключения подциклов необходимо добавить дополнительное условие, состоящее в следующем. Пусть S – некоторое подмножество заданного множества городов {1,…,n}, S – остальные города. Так как коммивояжер должен объехать все n городов, то во всяком его маршруте должна присутствовать хотя бы одна дуга с началом во множестве S и с концом во множестве S . Аналитически это требование можно записать так:
∑ ∑ |
x |
≥1 для любого S из {1,…,n }. |
|
i S j |
|
ij |
|
S |
|
||
5. Запись критерия моделирования (целевой функции):
n n
L = i∑1 j∑1cij xij → min –
= =
минимизация суммарной длины маршрута.
Таким образом, математической моделью задачи коммивояжера является задача целочисленного(альтернативного) линейного программирования.
3.2.МЕТОДВЕТВЕЙ И ГРАНИЦ
Метод ветвей и границ относится к группе комбинаторных методов – это методы перебора возможных вариантов решения задачи дискретного программирования. Методы этой группы основаны, прежде всего, на ко-
нечности множества допустимых решений задачи, поэтому центральную идею комбинаторных методов составляет замена полного перебора всех допустимых решений их частичным направленным перебором.
53
Впервые метод ветвей и границ был предложен в 1960 году в работе А. Лэнд и А. Дойг для решения задачи целочисленного линейного программирования. Настоящую известность этот метод приобрел лишь после выхода в 1963 году работы четырех американских математиков (Д. Литтл и др.), в которой метод был применен к задаче коммивояжера. В этой работе было впервые предложено и общепринятое теперь название метода – ветвей и границ.
Различные модификации методов типа ветвей и границ существенно используют специфику конкретных задач и поэтому заметно отличаются друг от друга. Однако все они основаны на последовательном разбиении допустимого множества на подмножества (ветвлении) и вычислении оценок (границ), позволяющем отбрасывать подмножества, заведомо не содержащие оптимальные решения задачи.
Изложим идею метода ветвей и границ для следующей комбинаторной задачи:
f (x) → min |
(4) |
|
x D, |
||
|
где D – конечное множество.
Пусть D' есть подмножество D . В зависимости от специфики задачи выбирается некоторый способ вычисления нижней оценки (границы) значений целевой функции f, т. е. такого числа ϕ(D'), что для любого x D' имеет место неравенство
f (x) ≥φ(D ').
По некоторому правилу множество D разбивается на конечное число (обычно попарно не пересекающихся) подмножеств. Получается началь-
54
ное дерево ветвления с корнем D и листьями (висячими вершинами)
D11, D21, , Dk11 (рис. 10).
D
D1 |
D21 … Dk1 |
1 |
1 |
Рис. 10. Начальное дерево ветвления с корнем D |
|
Множество для дальнейшего ветвления выбирается по определенно- |
|
му правилу среди множеств D1j , |
j =1, ,k1. Обычно это подмножество |
с наименьшей оценкой, так как именно в нем естественно искать оптимальное решение в первую очередь. Далее для подмножеств, полученных после разбиения выбранного множества, вычисляется множество, еще не подвергавшееся разбиению, т. е. множество, которое соответствует висячей вершине дерева ветвления.
Через некоторое количество шагов в результате разбиения очередного подмножества или в ходе вычисления оценки для одного из подмножеств будет получено x D – допустимое решение исходной задачи. Значение
f (x) объявляется рекордом целевой функции, |
frec = f (x) . Если для л ю- |
бого подмножества D', для которого еще не выполнялось ветвление, име- |
|
ет место соотношение |
|
ϕ(D') ≥ frec , |
(5) |
то x – оптимальное решение исходной комбинаторной задачи (4) и процесс решения завершается. Иначе решение задачи продолжается с некоторого подмножества, для которого (5) не выполняется. При этом подмножества, для которых (5) имеет место, объявляются неперспективными и исключаются из последующего рассмотрения.
55
В дальнейшем при получении допустимого решения, на котором значение целевой функции меньше frec , рекорд обновляется. Оптимальным решением задачи является лучшее из найденных решений.
3.3.МЕТОДВЕТВЕЙ И ГРАНИЦДЛЯРЕШЕНИЯЗАДАЧИ
ОКОММИВОЯЖЕРЕ
Подготовительный этап. Пусть x = (i1,i2 , ,in ,i1) – некоторый до-
пустимый маршрут коммивояжера (гамильтонов контур), где числа i1,i2, ,in ,i1 указывают порядок обхода городов. Переезды коммивояжера (i1,i2 ),(i2 ,i3), ,(in ,i1) называются дугами маршрута. Через D обозначим множество всех допустимых маршрутов коммивояжера, а через l(x) – дли-
ну |
известного |
допустимого |
|
маршрута |
x, |
|
которая |
равна |
||||||||||||||||||||
ci i |
+ci i + +ci i . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
1 2 |
2 3 |
|
n 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Шаг 1. Вычисление оценки для множества D. |
|
|
|
|
|
|
|
||||||||||||||||||||
|
Положим α |
i |
= min c |
|
|
. Тогда |
c' |
= c |
|
−α |
i |
≥ 0 |
для любого j и длина |
|||||||||||||||
|
|
j |
|
ij |
|
|
|
|
|
ij |
|
|
ij |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
известного маршрута x = (i1,i2 , ,in ,i1) будет равна |
|
|
|
|
|
|
||||||||||||||||||||||
|
l(x) = ∑n α |
i |
|
+(c' |
i |
+c' |
i |
|
+ +c |
' |
i |
+c' |
i |
|
). |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
i |
|
i |
3 |
|
|
|
|
i |
i |
|
|
|
|
|
||||||
|
|
|
i=1 |
|
|
|
1 2 |
|
2 |
|
|
|
|
|
|
|
n−1 n |
|
n 1 |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
Положим β |
j |
= min c' |
|
. Тогда |
c'' |
= c' |
|
− β |
j |
|
≥ 0 |
для любого i и длина |
|||||||||||||||
|
|
i |
|
|
ij |
|
|
|
|
ij |
|
|
ij |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
маршрута x = (i1,i2 , ,in ,i1) равна |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
n |
|
+ |
|
|
n |
|
+(c'' |
+c'' |
|
|
+ +c'' |
+c'' |
|
). |
(6) |
||||||||||
|
l(x)= ∑α |
i |
|
∑β |
i |
i |
|
i |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
i i |
|
|
i |
|
|
|
|
|
i i |
|
|
i |
|
|
||||
|
|
|
i=1 |
|
|
|
j=1 |
|
|
|
1 2 |
|
|
2 3 |
|
|
|
|
n−1 n |
|
|
n 1 |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
56
Матрицу С''= (cij'' )n×n называют приведенной, операцию ее построения – приведением матрицы C, а величины αi , β j – константами приведе-
ния. Таким образом, приведенная матрица C'' получается вычитанием из всех элементов каждой строки матрицы C минимального элемента этого столбца. Отметим, что в каждой строке и в каждом столбце матрицы C'' получится хотя бы один нулевой элемент. Положим
n |
n |
γ(D) = ∑αi + ∑βi . |
|
i=1 |
j=1 |
Тогда из (6) следует, что для любого допустимого маршрута выполняется оценка
l(x) ≥γ(D).
Очевидно, что после операции приведения длины всех маршрутов уменьшаются на одну и ту же величину γ(D). Следовательно, оптимальный маршрут, найденный с использованием приведенной матрицы, оптимален и для исходной задачи. При этом длины оптимальных маршрутов задачи с матрицей C и задачи с матрицей C'' связаны соотношением
lC* =lC* '' +γ(D).
Шаг 2. Выбор множества для ветвления.
На первом шаге это множество D. Его нижняя оценка ϕ(D) =γ(D) . На остальных шагах из числа кандидатов на ветвление (это множества висячих вершин дерева ветвления) выбирается множество D' с наименьшей оценкой.
57
Шаг 3. Разбиение множества D' на подмножества (ветвление).
Через E обозначим приведенную матрицу, соответствующую множеству D'. Описанным на шаге 5 способом выбирается дуга (p,q). Множество D' разбивается на два подмножества D1' и D2' , и множество D' исключается из числа кандидатов на ветвление. Подмножество D1' состоит из всех маршрутов множества D', не содержащих дугу (p,q); подмножество D2' – из всех маршрутов, содержащих дугу (p,q) (рис. 11).
D'
(
D1' D2'
Рис. 11. Разбиение множества D' на подмножества (ветвление)
Шаг 4. Преобразование матрицы стоимостей и вычисление оценок.
Матрица E1, соответствующая множеству D1' , получается из E заменой
epq = ∞.
Для множества D2' соответствующая матрица E2 получается из E вычеркиванием p-й строки и q-го столбца. Кроме того, требуется запрещение дуги из q-го города в p-й (длина дуги равна бесконечности)
для исключения из D2' замкнутого маршрута, проходящего по уже включенным в маршрут дугам, но не являющегося полным (т. е. не содержащим все n городов).
58
Оценки для вновь образованных множеств вычисляются следующим образом:
ϕ(D1' ) =ϕ(D') +γ(D1' ),
ϕ(D2' ) =ϕ(D') +γ(D2' ),
где γ (D1' ) и γ (D2' ) есть суммы констант приведения матриц Легко показать, что
γ(D' |
) = min e |
pj |
+mine . |
1 |
j: j≠q |
i:i≠p iq |
E1 и E2 .
(7)
Шаг 5. Выбор дуги для ветвления.
По-прежнему E – приведенная матрица, соответствующая множеству D'. Выбор дуги для ветвления основан на стремлении сделать оценку ϕ(D1' ) больше для того, чтобы увеличить вероятность выбора для дальнейшего ветвления множества D2' . Исходя из первого условия, будем рассматривать лишь дуги (k,l), для которыхвыполняется равенство
ekl = 0. |
(8) |
Чтобы выполнить второе условие, среди дуг, удовлетворяющих (8), выберем дугу (p,q), для которой значение γ (D1' ) будет максимальным. Для этого, используя (7), вычислим функцию
∆(k,l) = min e |
+ min e |
j: j≠l kj |
i:i≠k il |
для каждой дуги (k,l) такой, что ekl = 0. В качестве дуги (p,q) выберем ту, для которой
∆( p,q) = max ∆(k,l) .
(k,l):ekl =0
59
3.4.ПРИМЕРРЕШЕНИЯ ЗАДАЧИ ОКОММИВОЯЖЕРЕ
Решить задачу о коммивояжере с матрицей расстояний
∞ |
4 |
10 |
13 |
||
|
2 |
∞ |
9 |
7 |
|
|
|
||||
C = |
8 |
5 |
∞ |
5 |
. |
|
|
||||
|
5 |
8 |
5 |
∞ |
|
|
|
||||
Решение
1. Шаг 1. Вычисление оценки ϕ(D). Выполним операцию приведения матрицы С:
|
|
1 |
2 |
3 |
4 |
|
αi |
|
|
1 |
2 |
3 |
4 |
|
|
|
1 |
2 |
3 |
4 |
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
1 |
∞ 0 |
6 |
9 |
|
|
|
|
|
|
||
|
1 |
∞ 4 |
10 13 |
|
4 |
|
|
1 |
∞ 0 |
6 |
9 |
|||||||||
2 |
2 |
∞ 9 |
7 |
|
2 |
2 |
0 |
∞ 7 |
5 |
|
2 |
0 |
∞ 7 |
5 |
||||||
3 |
8 |
5 |
∞ 5 |
|
5 |
3 |
3 |
0 |
∞ 0 |
3 |
3 |
0 |
∞ 0 |
|||||||
4 |
5 |
8 |
5 |
∞ |
|
5 |
4 |
0 |
3 |
0 |
∞ |
4 |
0 |
3 |
0 |
∞ |
||||
|
|
|
|
|
|
|
|
|
β j |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Отсюда находим
i+∑β j = (4 +2 +5 +5) +0 =16.
ij
2.Шаг 5. Выбор дуги для ветвления. Для всех нулей приведенной матрицы C вычислим ∆(k,l) :
∆(1,2) = 6 +0 = 6, |
∆(2,1) =5 +0 =5, |
∆(3,2) = 0 +0 = 0, |
∆(3,4) = 0 +5 =5, |
∆(4,1) = 0 +0 = 0, |
∆(4,3) = 0 +6 = 6. |
60
Максимальное значение равно 6 и достигается на дугах (1,2) и (4,3). Выберем для ветвления, например, дугу (1,2), потому что c12 < c43.
3. Шаг 3. Ветвление. Множество D разбиваем на два подмножества D11 и D21 . Верхний индекс указывает на номер итерации, а нижний – на наличие выбранной дуги в маршрутах данных множеств. Множество D11 состоит из всех маршрутов коммивояжера, не содержащих дугу (1,2). Весь процесс решения данной задачи изображен на рис. 12. Рядом с каждой вершиной указано значение оценки целевой функции для соответствующего множества маршрутов.
16 D
|
|
|
|
|
|
|
|
|
|
(1,2) |
|
|
||
|
|
|
(1,2) |
|
|
|
|
|||||||
|
22 D11 |
|
|
|
D21 |
22 |
|
|||||||
|
|
|
|
|
(2,1) |
|
|
|
(3,4) |
|||||
|
|
|
|
|
(3,4) |
|||||||||
(2,1) |
|
|
||||||||||||
27 D13 |
|
|
22 D23 |
D12 24 |
D22 23 |
|||||||||
|
|
|
|
|
|
|
(1,3) |
|
|
|
|
|||
|
|
|
(1,3) |
|
|
|
|
|
||||||
25 |
D |
4 |
|
|
D4 |
25 |
|
f (x) = 23 |
||||||
|
||||||||||||||
|
|
|
|
|
|
|
2 |
|
|
|
|
|||
|
|
|
1 |
|
|
|
|
|
|
|
|
|
||
Рис. 12. Дерево решений задачи
4. Шаг 4. Вычисление оценки ϕ(D11). Выполним операцию приведения матрицы, соответствующей D11. Она получается из приведенной матрицы C заменой элемента (1,2) на ∞.
61
|
|
1 |
2 |
3 |
4 |
|
αi |
|
|
1 |
2 |
3 |
4 |
|
|
1 |
2 |
3 |
4 |
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|||||||||||||
|
1 |
∞ |
∞ 6 |
9 |
|
6 |
|
1 |
∞ |
∞ 0 |
3 |
|
1 |
∞ |
∞ 0 |
3 |
|||
2 |
0 |
∞ 7 |
5 |
|
0 |
2 |
0 |
∞ 7 |
5 |
2 |
0 |
∞ 7 |
5 |
||||||
3 |
3 |
0 |
∞ 0 |
|
0 |
3 |
3 |
0 |
∞ 0 |
3 |
3 |
0 |
∞ 0 |
||||||
4 |
0 |
3 |
0 |
∞ |
|
0 |
4 |
0 |
3 |
0 |
∞ 4 |
0 |
3 |
0 |
∞ |
||||
|
|
|
|
|
|
|
|
|
βi |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
Получаем:
γ(D11) = ∑iαi + ∑ jβ j = 6 +0 = 6, ϕ(D11) =ϕ(D) +γ(D11) =16 +6 = 22.
Следует заметить, что γ (D11) = ∆(1,2). Значит, оценку для D11 можно вычислить проще, а именно: ϕ(D11) =ϕ(D) + ∆(1,2) =16 +6.
5. Шаг 4. Вычисление оценки ϕ(D21 ). Матрица, соответствующая D21 , получается из приведенной матрицы С вычеркиванием 1-й строки, 2-го столбца и запрещением элемента (2,1).
|
|
1 |
3 |
4 |
|
αi |
|
|
1 |
3 |
4 |
|
|
|
1 |
3 |
4 |
|
|
|
|
|
|
|
|
||||||||||
|
2 |
∞ 7 |
5 |
|
5 |
|
2 |
∞ 2 |
0 |
|
|
2 |
∞ 2 |
0 |
|||
3 |
3 |
∞ 0 |
|
0 |
3 |
3 |
∞ 0 |
3 |
3 |
∞ 0 |
|||||||
4 |
0 |
0 |
∞ |
|
0 |
4 |
0 |
0 |
∞ |
4 |
0 |
0 |
∞ |
||||
|
|
|
|
|
|
|
|
βi |
0 |
0 |
0 |
|
|
|
|
|
|
Итак, γ (D21 ) = 5 +0 = 5, ϕ(D21 ) =ϕ(D) +γ (D21 ) =16 +5 = 21.
62
6. Шаг 2. Выбор множества для ветвления. Так как
ϕ(D21 ) = 2 <ϕ(D11) = 22 ,
то для ветвления выбираем множество D21 .
7. Шаг 5. Выбор дуги ветвления. Для приведенной матрицы D21 вычислим
∆(2,4) = 2 +0 = 2, |
∆(3,4) = 3 +0 = 3, |
∆(4,1) = 0 +3 = 3, |
∆(4,3) = 0 + 2 = 2. |
Максимальное значение достигается на дугах (3,4) и (4,1). Выберем для ветвления дугу (3,4).
8. Шаг 3. Ветвление. Множество D21 разбиваем на два подмножества D12 и D22 . Множество D12 состоит из всех маршрутов множества D21 , не содержащих дугу (3,4), а D22 – из всех маршрутов множества D21 , содержащих дугу (3,4) (см. рис. 6).
9.Шаг 4. Вычисление оценки ϕ(D12 ).
ϕ(D12 ) =ϕ(D21 ) +γ (D12 ) = 21+3 = 24.
10.Шаг 4. Вычисление оценки ϕ(D22 ). Матрица, соответствующая
D22 , получается из приведенной матрицы, найденной в п. 5, вычеркиванием 3-й строки, 4-го столбца и запрещением элемента (4,3).
|
|
1 |
3 |
|
αi |
|
|
1 |
3 |
|
|
|
1 |
3 |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
2 |
∞ |
0 |
|
|
|
|
|
|
|
2 |
∞ |
2 |
|
2 |
|
|
|
2 |
∞ |
0 |
|
||||
4 |
0 |
∞ |
|
0 |
4 |
0 |
∞ |
4 |
0 |
∞. |
||||||
|
|
|
|
|
|
|
|
β j |
0 |
0 |
|
|
|
|
|
|
Значит, γ (D22 ) = 2 +0 = 2, |
ϕ(D22 ) =ϕ(D21 ) +γ (D22 ) = 21+ 2 = 23. |
|||||||||||||||
63
11. Получено допустимое решение задачи. В п. 10) получена матрица размером 2×2 с двумя незапрещенными элементами (2,3) и (4,1). Это
означает, что множество D22 состоит из единственного маршрута, который содержит дуги (1,2), (2,3), (3,4), (4,1). Его длина равна 23, т.е.
frec = 23.
12. Делаем отсев неперспективных множеств. Так как
ϕ(D12 ) = 24 > frec ,
то множество D12 не содержит оптимального решения и выбывает из числа кандидатов на ветвление.
13. Шаг 2. Выбор множества для ветвления. Кандидатом на ветвле-
ние является только множество D11.
14. Шаг 5.Выбор дуги для ветвления.Для приведенной матрицы из п. 4) вычислим:
|
∆(1,3) =3 +0 =3, |
∆(2,1) =5 +0 =5, |
∆(3,2) = 0 +3 =3, |
|
∆(3,4) = 0 +3 =3, |
∆(4,1) = 0 +0 = 0, |
∆(4,3) = 0 +0 = 0.. |
|
Выберем для ветвления дугу (2,1). |
|
|
|
15. Шаг 3. Ветвление. Множество D11 разбиваем на два подмножества |
||
D3 |
и D3 . |
|
|
1 |
2 |
|
|
16. Шаг 4. Вычисление оценки ϕ(D13) .
ϕ(D13) =ϕ(D11) +γ (D13) = 22 +5 = 27.
Так как ϕ(D13) > frec , то D13 объявляется неперспективным.
64
17. Шаг 4. Вычисление оценки ϕ(D23) . Матрица, соответствующая D23 , получается из приведенной матрицы, найденной в п. 4, вычеркиванием 2-й строки, 1-го столбца и запрещением элемента (1,2).
|
|
2 |
3 |
4 |
|
αi |
|
|
2 |
3 |
4 |
|
|
|
2 |
3 |
4 |
|
|
|
|
|
|
|
|
|
|
||||||||||
|
1 |
∞ 0 |
3 |
|
0 |
|
1 |
∞ 0 |
3 |
|
|
1 |
∞ 0 |
3 |
|
|||
2 |
0 |
∞ 0 |
|
0 |
3 |
0 |
∞ 0 |
3 |
0 |
∞ |
0 . |
|||||||
4 |
3 |
0 |
∞ |
|
0 |
4 |
3 |
0 |
∞ |
4 |
3 |
0 |
∞ |
|||||
|
|
|
|
|
|
|
|
βi |
0 |
0 |
0 |
|
|
|
|
|
|
|
Итак, ϕ(D23) =ϕ(D11) +γ (D23) = 22 +0 = 22 .
18. Шаг 2. Выбор множества для ветвления. Единственным кандида-
том на ветвление является D23 .
19. Шаг 5. Выбор дуги для ветвления. Для приведенной матрицы из п. 15 вычислим:
∆(1,3) = 3, ∆(3,2) = 3, ∆(3,4) = 3, ∆(4,3) = 3.
Выберем для ветвления дугу (1,3).
20.Шаг 3. Ветвление. Множество D23 разбивается на D14 и D24 .
21.Шаг 4. Вычисление оценки ϕ(D24 ).
ϕ(D24 ) = 22 +3 = 25.
22.Шаг 4. Вычисление оценки ϕ(D14 ). Матрица, соответствующая
D14 , получается из приведенной матрицы, найденной в п. 15, вычеркиванием 1-й строки, 3-го столбца и запрещением элемента (3,2) (исключаем подцикл (2,1,3,2).
65
|
|
2 |
4 |
|
αi |
|
|
2 |
4 |
|
|
|
2 |
4 |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
3 |
∞ |
0 |
|
|
|
|
|
|
|
3 |
∞ 0 |
|
0 |
|
|
3 |
∞ |
0 |
|
|||||
4 |
3 |
∞ |
|
3 |
4 |
0 |
∞ |
4 |
0 |
∞. |
|||||
|
|
|
|
|
|
|
β j |
0 |
0 |
|
|
|
|
|
|
Значит, ϕ(D4 ) |
=ϕ(D3) +γ (D4 ) = 22 |
+3 |
= 25. |
|
|
|
|||||||||
|
|
1 |
|
2 |
1 |
|
|
|
|
|
|
|
|
||
23. Шаг 2. Выбор множества для ветвления. Кандидатами на ветвле-
ние являются D14 и D24 . Так как для обоих множеств нижняя оценка больше рекорда целевой функции, то они являются неперспективными. Других кандидатов на ветвление нет. Следовательно, процесс решениязадачи окончен. Оптимальным решением является маршрут (1,2,3,4,1), его длина равна 23.
3.5.ЗАДАНИЯДЛЯ РЕШЕНИЯ ЗАДАЧИО КОММИВОЯЖЕРЕ
1. |
|
|
|
|
|
|
|
2. |
|
|
|
|
|
|
|
|
|
∞ |
16 |
17 |
18 19 |
|
|
∞ |
11 |
12 |
13 |
10 |
|
||
|
|
|
4 ∞ 2 |
1 18 |
|
|
|
6 |
∞ 6 |
7 |
10 |
|
|||
|
|
|
|
|
|
|
|||||||||
A |
= |
|
6 4 ∞ |
2 17 |
|
A = |
|
1 |
6 |
∞ |
3 |
|
|
||
|
|
|
11 |
||||||||||||
|
|
|
2 1 4 |
∞ 16 |
|
|
|
1 |
2 |
9 |
∞ 12 |
|
|||
|
|
|
1 2 3 |
4 ∞ |
|
|
|
1 |
2 |
3 |
9 |
∞ |
|
||
|
|
|
|
|
|
|
|||||||||
L* = 27 |
|
|
|
|
L* = 22 |
|
|
|
|
|
|||||
3. |
|
|
|
|
|
|
|
4. |
∞ |
11 |
12 |
13 |
10 |
|
|
|
|
∞ |
11 |
12 |
13 10 |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
1 ∞ 5 |
7 10 |
|
|
6 ∞ 4 |
3 |
10 |
||||||
|
|
|
|
|
|||||||||||
A = |
3 4 ∞ |
8 11 |
A = |
|
5 |
6 |
∞ |
8 |
|
|
|||||
|
11 |
||||||||||||||
|
|
|
|
|
|
|
|
|
4 |
5 |
6 |
∞ |
12 |
|
|
|
|
7 |
6 |
5 |
∞ 12 |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
1 1 2 |
3 ∞ |
|
3 4 5 |
6 |
∞ |
||||||||
|
|
|
|
|
|||||||||||
L* =36 |
|
|
|
|
L* = 28 |
|
|
|
|
|
|||||
66
5.
∞ |
11 |
12 |
13 |
10 |
|
|
|
1 |
∞ |
1 |
3 |
10 |
|
|
|
|||||
A = |
2 |
1 |
∞ |
1 |
11 |
|
|
3 |
2 |
1 |
∞ |
12 |
|
|
|
|||||
|
3 |
2 |
1 |
1 |
∞ |
|
|
|
|||||
L* =14
7.
∞ |
11 |
12 |
13 |
10 |
|
|
|
2 |
∞ |
2 |
3 |
10 |
|
|
|
|||||
A = |
1 |
2 |
∞ |
2 |
11 |
|
|
1 |
2 |
2 |
∞ |
12 |
|
|
|
|||||
|
4 |
5 |
6 |
2 |
∞ |
|
|
|
|||||
L* =17
9.
∞ |
11 |
12 |
13 |
10 |
|
|
|
4 |
∞ |
6 |
7 |
10 |
|
|
|
|||||
A = |
5 |
4 |
∞ |
2 |
11 |
|
|
3 |
5 |
4 |
∞ |
12 |
|
|
|
|||||
|
2 |
3 |
4 |
5 |
∞ |
|
|
|
|||||
L* = 24
11.
∞ |
16 |
17 |
18 |
19 |
|
|
|
1 |
∞ |
3 |
4 |
16 |
|
|
|
|||||
A = |
2 |
1 |
∞ |
6 |
17 |
|
|
1 |
2 |
1 |
∞ |
18 |
|
|
|
|||||
|
5 |
6 |
7 |
8 |
∞ |
|
|
|
|||||
L* =30
6.
∞ |
11 |
12 |
13 |
10 |
|
|
|
7 |
∞ |
6 |
5 |
10 |
|
|
|
|||||
A = |
6 |
7 |
∞ |
6 |
11 |
|
|
5 |
6 |
7 |
∞ |
12 |
|
|
|
|||||
|
4 |
5 |
6 |
7 |
∞ |
|
|
|
|||||
L* = 29
8.
∞ |
11 |
12 |
13 |
10 |
|
|
|
6 |
∞ |
6 |
5 |
10 |
|
|
|
|||||
A = |
1 |
6 |
∞ |
6 |
11 |
|
|
1 |
2 |
8 |
∞ |
12 |
|
|
|
|||||
|
1 |
2 |
3 |
8 |
∞ |
|
|
|
|||||
L* = 25
10.
∞ |
11 |
12 |
13 |
14 |
|
|
|
7 |
∞ |
4 |
3 |
10 |
|
|
|
|||||
A = |
1 |
6 |
∞ |
1 |
11 |
|
|
1 |
2 |
5 |
∞ |
12 |
|
|
|
|||||
|
1 |
3 |
6 |
4 |
∞ |
|
|
|
|||||
L* = 26
12.
∞ |
16 |
17 |
18 |
19 |
|
|
|
3 |
∞ |
2 |
3 |
18 |
|
|
|
|||||
A = |
2 |
3 |
∞ |
5 |
17 |
|
|
1 |
2 |
3 |
∞ |
16 |
|
|
|
|||||
|
5 |
4 |
3 |
3 |
∞ |
|
|
|
|||||
L* = 28
67
13.
∞ |
13 |
55 |
19 |
16 |
||||
|
58 |
∞ |
23 |
54 |
48 |
|||
|
||||||||
|
25 |
53 |
∞ |
38 |
59 |
|||
|
|
11 |
16 |
∞ |
60 |
|||
A = 17 |
||||||||
|
1 |
38 |
18 |
36 |
∞ |
|||
|
||||||||
|
19 |
11 |
32 |
44 |
3 |
|||
|
||||||||
L* =81 |
|
|
|
|
|
|
|
|
15. |
|
|
|
|
|
|
|
|
∞ |
11 |
15 |
13 |
10 |
|
|||
|
1 |
∞ |
5 |
7 |
|
|
||
|
13 |
|||||||
A = |
3 |
5 |
∞ |
8 |
11 |
|||
|
8 |
6 |
5 |
∞ |
12 |
|
||
|
|
|||||||
|
1 |
1 |
2 |
3 |
∞ |
|
||
|
|
|||||||
L* = 22 |
|
|
|
|
|
|
|
|
17. |
|
|
|
|
|
|
|
|
∞ |
11 |
12 |
13 |
10 |
|
|||
|
2 |
∞ |
1 |
3 |
10 |
|
||
|
|
|||||||
A = |
2 |
2 |
∞ |
1 |
11 |
|||
|
3 |
3 |
1 |
∞ |
12 |
|
||
|
|
|||||||
|
3 |
2 |
1 |
1 |
∞ |
|
|
|
|
|
|
||||||
L* =16 |
|
|
|
|
|
|
|
|
19. |
|
|
|
|
|
|
|
|
∞ |
14 |
15 |
16 |
10 |
|
|||
|
2 |
∞ |
2 |
3 |
10 |
|
||
|
|
|||||||
A = |
1 |
2 |
∞ |
2 |
11 |
|||
|
1 |
2 |
2 |
∞ |
12 |
|
||
|
|
|||||||
|
4 |
5 |
6 |
2 |
∞ |
|
|
|
|
|
|
||||||
L* = 25
19
45
24
53
1
∞
14.
∞ |
12 |
13 |
14 |
10 |
|
|
|
6 |
∞ |
8 |
7 |
10 |
|
|
|
|||||
A = |
2 |
6 |
∞ |
3 |
11 |
|
|
1 |
2 |
9 |
∞ |
12 |
|
|
|
|||||
|
1 |
2 |
3 |
9 |
∞ |
|
|
|
|||||
L* =12
16.
∞ |
11 |
12 |
13 |
10 |
|
||
|
7 |
∞ |
4 |
3 |
10 |
|
|
|
|
||||||
A = |
6 |
7 |
∞ |
8 |
11 |
||
|
4 |
6 |
7 |
∞ |
12 |
|
|
|
|
||||||
|
3 |
4 |
6 |
7 |
∞ |
|
|
|
|
||||||
L* =18 |
|
|
|
|
|
|
|
18. |
|
12 |
13 |
14 |
10 |
|
|
∞ |
|
||||||
|
7 |
∞ |
6 |
5 |
10 |
|
|
|
|
||||||
A = |
6 |
7 |
∞ |
6 |
11 |
||
|
5 |
6 |
7 |
∞ |
12 |
|
|
|
|
||||||
|
4 |
5 |
6 |
7 |
∞ |
|
|
|
|
|
|||||
L* =17 |
|
|
|
|
|
|
|
20. |
|
14 |
15 |
16 |
10 |
|
|
∞ |
|
||||||
|
6 |
∞ |
6 |
5 |
10 |
|
|
|
|
||||||
A = |
1 |
6 |
∞ |
6 |
11 |
||
|
1 |
2 |
8 |
∞ |
12 |
|
|
|
|
||||||
|
1 |
2 |
3 |
8 |
∞ |
|
|
|
|
|
|||||
L* =30
68
21. |
|
|
|
|
|
|
22. |
∞ |
14 |
15 |
17 |
12 |
∞ |
14 |
15 |
16 |
11 |
|
|||||||
|
|
|
|
|
|
|||||||
|
4 ∞ |
|
|
|
|
|
7 ∞ |
4 3 10 |
||||
|
6 7 10 |
|
||||||||||
A = |
5 4 |
∞ 2 11 |
A = |
|
|
|
|
|
||||
1 6 |
∞ 1 11 |
|||||||||||
|
|
|
|
|
|
|
|
1 |
2 |
5 |
∞ |
12 |
3 |
5 |
4 |
∞ |
12 |
|
|||||||
|
1 |
3 |
6 |
4 |
∞ |
|||||||
|
2 |
3 |
4 |
5 |
|
|
|
|||||
|
∞ |
|
|
|
|
|
|
|||||
L* = 29 |
|
|
|
|
|
L* =15 |
|
|
|
|
||
23. |
|
|
|
|
|
|
24. |
∞ |
15 |
16 |
17 |
18 |
∞ |
15 |
16 |
17 |
18 |
|
|
||||||
|
|
|
|
|
|
|||||||
|
1 ∞ |
3 4 16 |
|
|
3 ∞ |
2 3 18 |
||||||
|
|
|
||||||||||
A = |
2 1 |
∞ 6 |
17 |
|
A = |
|
|
|
|
|
||
2 3 |
∞ 5 17 |
|||||||||||
|
|
|
|
|
|
|
|
1 |
2 |
3 |
∞ |
16 |
1 |
2 |
1 |
∞ |
18 |
|
|||||||
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
||
5 |
6 |
7 8 |
∞ |
|
5 4 |
3 3 ∞ |
||||||
|
|
|
||||||||||
L* = 30 |
|
|
|
|
|
L* = 28 |
|
|
|
|
||
69
