Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1сем Экон кибернетика Заочн Метод Указ.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.06 Mб
Скачать

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

К задачам целочисленного программирования относятся задачи комбинаторного вида, т.е. такие задачи в которых решение ищется на конечном множестве возможных значений переменных.

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

Метод Гомори решения целочисленных задач линейного программирования не всегда дает удовлетворительные результаты, из-за слабой сходимости или вообще расходится из-за накопления ошибок вычислений. Другим методом, который вообще не связан с накоплением вычислительной погрешности, является метод ветвей и границ (МВиГ). МВиГ впервые был предложен Лендом и Дойгом в 1960 г., но получил широкое распространение в связи с применением этого метода в работе Литтла, Мурти, Суини и Кэрел в 1963 г., посвященной задаче о коммивояжере.

Идея метода состоит в следующем.

Рассмотрим задачу дискретного программирования:

требуется min  Z=f(Х) (1)

при условии, что ХG (2)

где G некоторое конечное множество.

Функция f(Х) и конечное множество G произвольного вида.

В основе метода лежат построения, позволяющие в ряде случаев существенно уменьшить число перебора вариантов. Введем обозначение G0 = G. Пусть нам удалось каким-либо образом найти такое значение (G0), для которого можно сказать с уверенностью, что выполняется условие

f(x)  (G0), при xG0 (3)

т.е. какое бы xG0 мы не взяли, значение f(x) всегда будет  (G0), т.е. (G0) является нижней граню для Z. Значение (G0) может и не достигаться на G0, но если оно достигается, т.е. существует Х* такой, что f(Х*)= (G0), т.е. Х* – оптимальное решение (f(x) не может быть > (G0), к.к. это нижняя грань, но если мы вышли на эту нижнюю грань оставаясь в G0 то задача решена).

Производим разбиение G0 на подмножества так, чтобы

,  i, j , ij (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 могут только увеличиваться, т.к. эти маршруты еще не являются планами.

МВиГ является универсальным методом решения комбинаторных задач. Сложность практического применения метода заключается в трудности нахождения способа ветвления множеств на подмножества и вычисления соответствующих оценок, которые зависят от специфики конкретной задачи.

Методом ветвей и границ решаются классические задачи «О коммивояжере» и «Задача Джонсона».