Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высшая матем курс..doc
Скачиваний:
4
Добавлен:
23.11.2019
Размер:
1.83 Mб
Скачать

Раздел 3 содержит материал, который будет полезен для правильного оформления курсовой работы.

1 РАСПИСАНИЯ

ДЛЯ ОДНОСТАДИЙНЫХ СИСТЕМ ОБСЛУЖИВАНИЯ

1.1 Задача о «бродячем торговце».

Метод «ветвей и границ»

Рассматриваемая в этом разделе задача представляет собой задачу минимизации суммы переналадок одного прибора.

Постановка задачи о «бродячем торговце»

(задачи коммивояжера)

Заданы n городов и расстояния между каждой парой городов. Бродячий торговец должен объехать все n городов так, чтобы в каждом городе побывать только один раз и вернуться в исходный город, преодолев при этом минимальный путь [1].

Эта задача решается сведением ее к поиску оптимальной перестановки, в данном случае к поиску такой перестановки n городов, при которой путь бродячего торговца будет минимальным. Пусть расстояния между городами заданы матрицей расстояний А={aij}, где элемент aij –расстояние между городами i и j. Эта матрица называется матрицей коммивояжера.

Пусть

Задача о коммивояжере может быть представлена в виде задачи целочисленного линейного программирования [3] с искомыми величинами хij из множества {0, 1}:

; (1.1)

; (1.2)

. (1.3)

Ограничения (1.2) обеспечивают построение маршрута, при котором коммивояжер въезжает в каждый город точно один раз, а ограничения (1.3) обеспечивают построение маршрута, при котором коммивояжер выезжает из каждого города точно один раз.

Замкнутый путь (контур), проходящий один и только один раз через каждую вершину графа, называется гамильтоновым контуром.

Если считать города вершинами графа, а коммуникации (i, j) – его дугами, то нахождение минимального пути, проходящего один и только один раз через каждый город, и возвращение обратно можно рассматривать как нахождение на графе гамильтонова контура минимальной длины. Таким образом, задача коммивояжера состоит в поиске на графе гамильтонова контура минимальной длины. Будем решать эту задачу методом «ветвей и границ». Алгоритм «ветвей и границ» часто обозначают B&B (сокращение от «Branch and Bound», что в переводе с английского означает «ветви и границы»).

Схема метода «ветвей и границ»

При нахождении на графе минимального гамильтонова контура принято использовать символ , если между соответствующими вершинами нет дуги. Этот символ ставится и по главной диагонали матрицы А, что означает запрет на возвращение в вершину, через которую уже проходил контур.

I. Вначале строится нижняя граница длин множества всех гамильтоновых контуров 0. Правило определения нижних границ вытекает из нижеследующих теорем.

Теорема 1.1

Если к элементам любого ряда (строки или столбца) матрицы коммивояжера прибавить или вычесть из них некоторое число, то оптимальность плана не изменится. При этом длина любого гамильтонова контура изменится на ту же величину.

Иными словами, если х*  оптимальный план задачи, определенной условиями (1.1) – (1.3) с критерием Z, то он также оптимален и для задачи с критерием Z* для матрицы . Опираясь на теорему 1.1, из элементов каждой строки матрицы коммивояжера вычитают число ui, равное минимальному элементу этой строки. Затем в полученной матрице , из элементов каждого столбца вычитают число vj, равное минимальному элементу этого столбца. Полученная матрица ,

, называется приведенной по строкам и столбцам.

В матрице А в каждой строке и каждом столбце содержится хотя бы один нуль. Все элементы матрицы А неотрицательны:  0. Величина называется константой приведения.

Теорема 1.2

Пусть дана задача коммивояжера с матрицей А={aij}. Тогда константой приведения 0 этой матрицы определяется нижняя граница гамильтоновых контуров (0) = 0, где 0 – множество всех контуров.

  • Сделав приведение матрицы коммивояжера А по строкам,

получаем новую матрицу где ui – минимальный элемент i-й строки.

  • Сделав приведение матрицы А по столбцам, получаем матрицу

где vj – минимальный элемент j-го столбца.

  • Найти константу приведения 0 = . Она принимается

за нижнюю границу длин всех гамильтоновых контуров.

II. Разбить множество всех гамильтоновых контуров 0 на два подмножества. Для этого надо сделать следующее.

  • Найти степени нулей матрицы. Для этого находится сумма

минимальных элементов строки и столбца нуля матрицы А без учета значения самого рассматриваемого в данный момент нуля.

  • Выбрать дугу (i0, j0), для которой степень нулевого элемента

наибольшая. Эта дуга будет претендентом на включение ее в искомый гамильтонов контур.

  • Множество всех контуров 0 разбить на два подмножества

таким образом, чтобы первое подмножество состояло из гамильтоновых контуров, содержащих дугу (i0, j0), а второе подмножество не содержало этой дуги. Включение дуги (i0, j0)

в контур приводит к сокращению матрицы на строку i0 и столбец j0.

Так как гамильтонов контур не может одновременно содержать дуги (i0, j0) и (j0, i0), то, включив дугу (i0, j0) в контур, следует дугу (j0, i0), исключить из него, т. е. путь (j0, i0) следует «блокировать бесконечностью». Для этого на место элемента матрицы (j0, i0), следует поставить символ . Таким образом, матрицу , соответствующую подмножеству , содержащему дугу (i0, j0), получают из матрицы А, приведенной по строкам и столбцам, путем вычеркивания i0-й строки и j0-го столбца и замены симметричного относительно главной диагонали элемента, стоящего в j0-й строке и

i0-м столбце, символом  для того, чтобы не допустить образования негамильтонова контура.

Матрицу подмножества , не содержащего дугу (i0, j0), получают из матрицы А путем замены элемента, стоящего

в j0-й строке и i0-м столбце, символом .

  • Произвести приведение матриц и по строкам и

столбцам. В результате получатся матрицы и ,

соответствующие подмножествам и . Для каждого из подмножеств определить нижние границы  ( ) и  ( ), где  ( ) = 0+ ;  ( ) = 0 , а и – это дополнительные константы приведения, равные константам приведения матриц и соответственно.

III. Выбрать направление дальнейшего ветвления. Для этого полученные нижние границы подмножеств и сравнить и выбрать из них то подмножество, для которого нижняя граница будет меньше и, значит, это подмножество с большей вероятностью будет содержать гамильтонов контур минимальной длины. Затем выбранное подмножество по аналогичному правилу разбивается на два новых подмножества и и так далее. Процесс ветвления продолжается до тех пор, пока не отыщется единственный гамильтонов контур. Его называют первым рекордом. Затем просматривают «оборванные» ветви (висячие вершины) дерева ветвлений. Если их нижние границы больше или равны длине первого рекорда, то задача решена. В противном случае (если есть вершины в дереве ветвлений, для которых нижние границы меньше, чем длина первого рекорда) подмножество с наименьшей нижней границей подвергается дальнейшему ветвлению, пока не станет ясно, что оно не содержит

лучшего гамильтонова контура. А если такой контур найдется, то анализ “оборванных” ветвей продолжается относительно нового значения длины этого контура. Его называют вторым рекордом. Процесс решения заканчивается, когда будут проанализированы все построенные подмножества.