- •Оглавление
- •Введение
- •Работа №1. Графический метод решения задачи линейного программирования
- •Работа №2. Решение задачи линейного программирования симплекс-методом
- •Работа 3. Задача коммивояжера (метод ветвей и границ)
- •Матрица стоимостей (условные единицы)
- •Редукция строк
- •Редукция столбов
- •Значения АiиВj
- •Значения Фij
- •Преобразованная матрица стоимости
- •Вторая матрица решений
- •Третья матрица решений
- •Матрица стоимости возврата
- •Работа №4. Транспортная задача
- •Работа №5. Нелинейное программирование
- •Работа №6. Планирование рабочей силы
- •Работа №7. Оптимизация замены оборудования на предприятии
- •Варианты задания для выполнения работы
- •Работа №8. Задачи упорядочевания (алгоритм джонса)
- •Алгоритм джонсона для решения задачи упорядочения nх2
- •Варианты для задания №1
- •Варианты для задания №2
- •Вопросы к лабораторной работе №1
- •Список литературных источников
- •«Оптимизация инженерных решений»
- •400131, Г. Волгоград, пр. Им. В. И. Ленина, 28. Корп. 1
Работа 3. Задача коммивояжера (метод ветвей и границ)
Можно привести постановку коммивояжера общем виде. Некто решил, что настало время вырваться из дома и посмотреть на жизнь в других странах. Он выбрал семь мест, которые намеревался обязательно посетить, получил информацию о стоимости проезда самолетом в каждый из выбранных городов и стоимость проезда из одного города в другой. Учел все льготы, предоставляемые авиакомпаниями, и составил матрицу стоимостей (табл. 3.1) проезда в выбранные города и обратно. Зная матрицу стоимостей, путешественнику надо так составить маршрут путешествия, чтобы затраты на путешествие были минимальными и чтобы выполнялось естественное требование: каждый пункт посещается только один раз. Матрица стоимостей из-за льгот авиакомпаний оказалась несимметричной. При симметричной матрице стоимостей процедура решения задачи не изменяется.
Таблица 3.1
Матрица стоимостей (условные единицы)
Узел № |
Пункты |
Исходный пункт |
Токио |
Гонконг |
Лондон |
Сидней |
Рим |
1 |
2 |
3 |
4 |
5 |
6 |
||
1 |
Исходный пункт |
- |
270 |
430 |
160 |
300 |
260 |
2 |
Токио |
70 |
- |
160 |
10 |
300 |
300 |
3 |
Гонконг |
200 |
130 |
- |
350 |
50 |
0 |
4 |
Лондон |
210 |
160 |
250 |
- |
180 |
180 |
5 |
Сидней |
120 |
460 |
270 |
480 |
- |
50 |
6 |
Рим |
230 |
50 |
50 |
90 |
50 |
- |
Примечание. В процессе проведения расчетов все стоимости будут уменьшены в 10 раз.
Подобные задачи в математическом программировании носят название «задача коммивояжера». Ее формулируют следующим образом. Коммивояжер должен выехать из исходного пункта и побывать в каждом из остальных (n -1) пунктов ровно один раз и вернуться в исходный пункт. Задача заключается в определении последовательности объезда пунктов, при которой коммивояжеру требуется минимизировать некоторый критерий эффективности: стоимость проезда, время пути, суммарное расстояние и т.д. Здесь требуется выбрать один или несколько оптимальных маршрутов из (n-1)! возможных. Если некоторые города для коммивояжера недоступны, то минимальное значение целевой функции должно быть бесконечно большим.
Рассмотрим
решение задачи коммивояжера методом
ветвей
и границ. Вначале
определяют некоторое допустимое решение
(допустимый
маршрут).
После этого множество всех оставшихся
маршрутов разбивают на все более мелкие
подмножества и при каждом разбиении
вычисляют нижнюю
границу
целевой функции текущего наилучшего
маршрута. С помощью найденных границ
проводят дальнейшее разбиение подмножеств
допустимых маршрутов и в конечном итоге
определяют оптимальный маршрут. Это
разбиение подмножеств маршрутов можно
рассматривать как узлы дерева. Поэтому
данный метод называют методом
поиска по дереву решений,
или методом ветвей и границ. Матрица
стоимостей содержит неотрицательные
элементы сij.
Маршрут
Т
можно представить как множество
упорядоченных пар пунктов T={(i1,
i2),
(i2,
i3),…,(in-1,
in),
(in,
i1)}.Каждый
допустимый маршрут – это цикл, проходя
по которому коммивояжер посещает каждый
пункт один раз и возвращается в исходную
точку. Каждая упорядоченная пара (i,j)
является дугой,
или звеном маршрута.Стоимость
маршрутаТ
равна сумме соответствующих элементов
матрицы стоимостей, но только тех, что
лежат на маршруте Т:
ɀ(T)=
.
Величина ɀ(T) определена для любого допустимого маршрута и не может быть меньше стоимости оптимального маршрута, т.е. текущее значение ɀ(T)является верхней границей ɀв (T) стоимости оптимального маршрута Т.
Для вычисления нижних границ стоимости маршрута используют понятие редукции строк и столбцов матрицы стоимости. Процедуру вычитания из каждого элемента строки наименьшего элемента этой же строки и из каждого элемента столбца наименьшего элемента этого же столбца называют соответственно редукцией строк и редукцией столбцов. Матрицу с неотрицательными элементами, в каждой строке и в каждом столбце которой содержится по крайней мере один нулевой элемент, называют редуцированной. Она может быть получена в результате последовательной редукции ее строк и столбцов. Если вычесть из каждого элемента некоторой строки матрицы стоимости постоянную величину с, то стоимость любого маршрута, определяемая новой матрицей, меньше стоимости того же маршрута, определяемого старой матрицей, на величину с,так как для любого допустимого маршрута каждая строка и каждый столбец матрицы содержат по одному элементу, соответствующему этому маршруту. При редукции относительные стоимости всех маршрутов останутся неизменными. Следовательно, останутся неизменными и все оптимальные маршруты.
Если ɀ(T) – стоимость маршрутаТ, определяемая матрицей стоимости до выполнения редукции, ɀ1(T) – стоимость того же маршрута, определяемая редуцированной матрицей, Н – сумма всех констант, используемых при вычислении редуцированной матрицы, то ɀ(T)=ɀ1(T)+Н. поскольку редуцированная матрица содержит только неотрицательные элементы, то Н является нижней границей стоимости маршрута Т для нередуцированной матрицы стоимости.
В алгоритме метода ветвей и границ диагональные элементы исходной матрицы стоимости полагают равными ∞, т.е. сij=∞.
Выберем произвольный допустимый маршрут, например состоящий из звеньев (1,4) (4,5); (5,3); (3,6); (6,2); (2,1). Стоимость данного маршрута ɀв(T)=16+18+27+0+5+9=73, т.е. для оптимального маршрута стоимость поездки коммивояжера не может превышать ɀв(T).
Выполним редукцию строк, а затем столбцов матрицы и стоимости; для этого в каждой определим минимальный элемент и найденное значение сiвычтем из элементов соответствующей строки. Получим табл. 3.2.
Проведем редукцию столбцов в полученной табл. 3.2. Из таблицы видно, что следует осуществить только редукцию первого столбца, так как остальные столбцы содержат нулевые элементы. Редукция столбцов показана в таблице 3.3.
Таблица 3.2
