
- •Экономическая кибернетика
- •Задачі динамічного програмування
- •Основні принципи динамічного моделювання
- •2. Загальна постановка задачі динамічного програмування
- •Пример решения задачи о дилижансе
- •Варианты задачи 1 «Задача о дилижансе»
- •Метод ветвей и границ
- •Задача о коммивояжере
- •Варианты «Задачи о комивояжере»
- •Задача Джонсона
- •Алгоритм решения
- •Пример решения задачи Джонсона (задачи о трех станках)
- •Решить с помощью табличного редактора Excel
Метод ветвей и границ
К задачам целочисленного программирования относятся задачи комбинаторного вида, т.е. такие задачи в которых решение ищется на конечном множестве возможных значений переменных.
Например. Задача Коммивояжера (конечное число маршрутов (n!), задача о ранце (конечное число предметов), задача о максимальном потоке или кратчайшем пути в сетевых задачах (конечное число вершин графа).
Метод Гомори решения целочисленных задач линейного программирования не всегда дает удовлетворительные результаты, из-за слабой сходимости или вообще расходится из-за накопления ошибок вычислений. Другим методом, который вообще не связан с накоплением вычислительной погрешности, является метод ветвей и границ (МВиГ). МВиГ впервые был предложен Лендом и Дойгом в 1960 г., но получил широкое распространение в связи с применением этого метода в работе Литтла, Мурти, Суини и Кэрел в 1963 г., посвященной задаче о коммивояжере.
Идея метода состоит в следующем.
Рассмотрим задачу дискретного программирования:
требуется min Z=f(Х) (1)
при условии, что ХG (2)
где G некоторое конечное множество.
Функция f(Х) и конечное множество G произвольного вида.
В основе метода лежат построения, позволяющие в ряде случаев существенно уменьшить число перебора вариантов. Введем обозначение G0 = G. Пусть нам удалось каким-либо образом найти такое значение (G0), для которого можно сказать с уверенностью, что выполняется условие
f(x) (G0), при xG0 (3)
т.е. какое бы xG0 мы не взяли, значение f(x) всегда будет (G0), т.е. (G0) является нижней граню для Z. Значение (G0) может и не достигаться на G0, но если оно достигается, т.е. существует Х* такой, что f(Х*)= (G0), т.е. Х* – оптимальное решение (f(x) не может быть > (G0), к.к. это нижняя грань, но если мы вышли на эту нижнюю грань оставаясь в G0 то задача решена).
Производим
разбиение G0
на подмножества
так,
чтобы
,
i, j , ij (4)
Для
каждого из полученных
определяем нижнюю грань
.
Причем, если
,
то
(G0)
нижняя грань
на множестве Gi
устанавливается более точно чем на G0.
Определяем:
(5)
Если
существует план Х*
f(x*)=
,
то Х* оптимальный план (существенным
является не только то, что Х*
,
но и то, что Х* является планом (1)-(2)).
Если
,
,
то множество
считается перспективным и его разбивают
аналогично G0
(4) на подмножества
.
Переобозначим все множества
и
на
.
(6)
и переходим к (5) и т.д., до тех пор пока не будет найден оптимальный план. Здесь следует отметить тот факт, что в первую очередь ветвлению подвергаются только перспективные подмножества, при этом к ранее не перспективным можно вернуться на одном из последующих шагов, когда их оценка нижней грани будет оценки перспективного множества на этом шаге.
П
6
3
4
3
1
4
6
4
1
1
3
2
4
Требуется найти кратчайший путь из вершины 1 в 7, проходящий через вершины 4 или 5.
Планом задачи здесь является путь ведущий из вершины 1, через вершину 4 или 5 в вершину 7.
Шаг 1. Разбиваем множество всех путей ведущих из вершины 1 на 2 не пересекающихся подмножества:G1 – множество всех путей проходящих из вершины 1 в вершину 2 и далее к вершине 7;G2 – множество всех путей проходящих из вершины 1 в вершину 3 и далее к вершине 7.
В
качестве оценки
возьмем длину ребер [1,2] и [1,3], т.к. это
части пути, то длина полного пути всегда
i.
1)
1=3
2=1
2)
1=9
2=5
3=5
4=3
3)
не проходят через 4 или 5
4)
1=11
2=11
3=6
4=6
5=7
не проходят через
4 или 5
На третьем шаге получен путь [1,3,5,7], являющийся планом, т.е. ведущим из начальной вершины 1 в конечную – 7 и проходящий через вершину 5, но его оценка хуже двух других возможных маршрутов: [1,3,2] = [1,3,4] = 5 < f([1,3,5,7]) = 7, поэтому процесс продолжаем, ветвлением вершин [1,3,2] и [1,3,4].
На четвертом шаге получен план [1,3,4,7] и f(X) = 6 т.к. (G)=6 и существует план с f(X)=6, то решение найдено.
Пути из всех остальных вершин с =6 могут только увеличиваться, т.к. эти маршруты еще не являются планами.
МВиГ является универсальным методом решения комбинаторных задач. Сложность практического применения метода заключается в трудности нахождения способа ветвления множеств на подмножества и вычисления соответствующих оценок, которые зависят от специфики конкретной задачи.
Методом ветвей и границ решаются классические задачи «О коммивояжере» и «Задача Джонсона».