- •Глава 1. Логистика запасов 7
- •Глава 2. Логистика складирования 35
- •Глава 3. Транспортная логистика 78
- •Предисловие
- •Введение
- •Глава 1. Логистика запасов
- •1.1. Классическая модель управления запасами
- •Задача 1
- •Решение
- •Задача 2
- •Решение
- •1.2. Модель управления запасами с фиксированным размером заказа
- •Решение
- •1.3. Модель управления запасами с фиксированным интервалом времени между заказами
- •Решение
- •1.4. Модель управления запасами с разрывом цены
- •Решение
- •1.5. Многопродуктовая модель управления запасами с ограниченной вместимостью склада
- •Решение
- •Глава 2. Логистика складирования
- •2.1. Планирование складской сети
- •2.1.1. Стратегия формирования складской сети
- •2.1.2. Оперативный уровень формирования складской сети
- •2.2. Определение месторасположения склада
- •Решение
- •2.3. Определение границ рынка
- •Решение
- •2.4. Метод авс
- •2.4.1. Классический подход к авс классификации
- •Решение
- •2.4.2. Современный подход к авс классификации
- •Решение
- •Глава 3. Транспортная логистика
- •3.1. Транспортная задача
- •3.1.1. Методы построения начального решения Метод северо-западного угла (сзу)
- •Задача 1. Построение первоначального решения методом сзу
- •Решение
- •Метод наименьшей стоимости
- •Метод Фогеля
- •3.1.2. Методы построения оптимального плана Распределительный метод
- •Решение
- •Метод потенциалов
- •Решение
- •3.2. Задача о назначениях
- •Венгерский метод решения задачи о назначениях
- •Задача 1
- •Распределить машины между постами с максимальным доходом для автосервиса. Решение
- •Задача 2
- •Решение
- •Задача 3
- •Решение
- •3.3. Задача коммивояжера
- •3.3.1. Метод ближайшего соседа
- •Решение
- •3.3.2. Метод ветвей и границ
- •Решение
- •Литература
3.3.2. Метод ветвей и границ
Метод ветвей и границ относится к комбинаторным оптимизационным методам. Он предполагает направленный перебор вариантов и в ряде случае позволяет уйти от полного перебора. Метод основан на разбиении всего множества решений задачи на подмножества (ветвление) и оценивании стоимости решения на каждом подмножестве.
Рассмотрим общую идею и алгоритм решения задачи коммивояжера методом ветвей и границ с помощью алгоритма Литтла.
Пусть – множество всех замкнутых маршрутов, проходящих через все города по одному разу. Такие маршруты называют гамильтоновыми контурами. Для каждого маршрута известна его длина. Основная идея метода состоит в том, что вначале находят нижнюю границу длин всех гамильтоновых контуров 0, т.е. число, не большее, чем длина любого гамильтонова контура (нижняя оценка длины маршрута ). Это число может быть найдено до того, как найден сам наиболее короткий маршрут.
Далее все множество гамильтоновых контуров разбивается на два подмножества таким образом, чтобы любой контур в первом множестве содержал некоторую дугу (i, j), т.е. переход из города i в город j; второе множество состоит из контуров, эту дугу не содержащих. Для каждого из этих подмножеств определяются нижние границы длины входящих в них гамильтоновых контуров (нижняя оценка длины маршрута) аналогично тому, как это определялось для всего множества. Для дальнейшего рассмотрения выбирается подмножество с меньшей оценкой. Это подмножество в свою очередь подвергается ветвлению на два, для каждого из которых определяется нижняя оценка длины маршрута. Из всех не исследованных к данному моменту подмножеств (т. е. таких, которые еще не были подвергнуты разбиению, или ветвлению ) для дальнейшего рассмотрения выбирается подмножество с меньшей оценкой и т. д. пока не будет определен гамильтонов контур минимальной длины. Параллельно расчетам строится дерево ветвления.
Рассмотрим основные шаги решения.
1 шаг. Осуществить приведение матрицы по строкам: определить минимальный элемент каждой строки и вычесть из элементов строк найденный минимальный элемент.
2 шаг. Осуществить приведение матрицы по столбцам: определить минимальный элемент в каждом столбце и вычесть из элементов столбцов найденный минимальный элемент.
3 шаг. Найти константу приведения (0) как сумму найденных минимальных элементов строк и столбцов. Константа приведения 0 является нижней границей длины для множества гамильтоновых контуров.
4 шаг. Для каждого нуля приведенной матрицы определить его «степень» как сумму минимальных элементов строки и столбца, содержащих этот нуль.
5 шаг. Нулевой элемент с наибольшей степенью задает дугу (t0, j0), по которой проводится разбиение множества гамильтоновых контуров (t0 – строка, а j0 – столбец, на пересечении которых находится выбранный нулевой элемент). В множество включаются все контуры, содержащие эту дугу, в множество – не содержащие ее.
6 шаг. Матрицу, описывающую множество , получаем из приведенной матрицы путем вычеркивания строки to и столбца jo. На дереве ветвления обозначаем, что рассматриваются контуры, включающие дугу (t0, j0). Вводя в маршрут дугу (to, jo), следует заблокировать все изолированные контуры, которые могут содержать эту дугу. Для блокировки в соответствующую клетку матрицы вводится «». В частности, значение элемента (jo, to) в матрице заменяем на , так как рассматриваются маршруты, содержащие переход из города t0 в j0, а значит, обратный переход из города jo в to уже невозможен.
7 шаг. Выполнить приведение матрицы множества по строкам и столбцам и определить нижнюю границу этого множества по формуле:
,
где
– сумма минимальных элементов, используемых для приведения матрицы множества .
8 шаг. Матрицу множества получаем из исходной матрицы, рассматриваемой на шаге 4, заменой элемента (to, jo) на .
9 шаг. Для полученной матрицы множества определить константу приведения () и нижнюю границу множества по формуле
,
выполнить приведение матрицы.
10 шаг. Дальнейшему ветвлению подвергается подмножество, имеющее меньшее значение нижней границы.
11 шаг. Для выбранного множества повторить шаги 4–9.
12 шаг. Процесс считается завершенным, когда остается матрица размера 2х2. Для данной матрицы в гамильтонов контур включаются связи, соответствующие нулевым элементам.
13. шаг. Найти длину полученного гамильтонова контура и сравнить ее с оценками (нижними границами) еще не исследованных множеств. Если все нижние границы не исследованных множеств больше или равны длине найденного контура, задача считается решенной. В противном случае следует продолжить ветвление с множества, имеющего наименьшую нижнюю границу.
Задача
Решить методом ветвей и границ задачу коммивояжера со следующей матрицей расстояний (эта же задача решалась в предыдущем параграфе методом ближайшего соседа).
Города |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
|
10 |
12 |
8 |
9 |
11 |
2 |
21 |
|
7 |
5 |
21 |
3 |
3 |
13 |
19 |
|
13 |
4 |
15 |
4 |
15 |
20 |
14 |
|
10 |
10 |
5 |
7 |
15 |
9 |
12 |
|
23 |
6 |
16 |
3 |
11 |
8 |
17 |
|