Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
21 matmetody.docx
Скачиваний:
25
Добавлен:
26.09.2019
Размер:
29.86 Кб
Скачать

5. Решение задач о рюкзаке методом ветвей и границ.

Имеется n предметов. Вес i -го предмета равен p i ,его ценность выражается числом c i. Требуется найти совокупность предметов минимального веса при условии, что ценность этой совокупности не должна быть меньше заданного числа C . (Другой вариант задачи – найти совокупность предметов максимальной стоимости, вес которой не превосходит P ).

Введем переменные xi , i =1,n. Будем считать, что x i =1 означает, что i -й предмет вкладывается в рюкзак, x i =0– не вкладывается. Тогда математическая модель задачи запишется так:

т.е. суммарный вес всех предметов в рюкзаке – минимальный,

а суммарная ценность не меньше требуемой, где x 1,..., x n{0,1} .

Выберем следующий метод ветвления: выбирается некоторая переменная xk, после чего в одной части вариантов полагается x k0 , а в другое

множество поместим все планы наполнения рюкзака, в которых x k1. В результате в каждом из случаев получается задача, аналогичная начальной, количество переменных при этом уменьшается на 1, и изменяются целевая функция и неравенство-ограничение.

Для получения оценки снизу будем находить минимум функции f (x) на более широком множестве, чем требуется в задаче: вместо условий x 1,..., x n прин{0,1} будем использовать условия x 1,..., x n принадлежит[0,1] . При этом получается обычная задача линейного программирования, решение которой можно найти даже без применения симплекс-метода.

6. Решение задач коммивояжера методом ветвей и границ

Вначале для множества R всех гамильтоновых контуров определяется некоторая оценка снизу (нижняя граница) ф(R) их длины. Затем множество всех гамильтоновых контуров разбивается на два подмножества. Первое подмножество состоит из гамильтоновых контуров, которые включают некоторую дугу (i, j) , – обозначим его {(i, j)}, а второе состоит из гамильтоновых контуров, которые не включают эту дугу, – обозначим его {(i, j)}.

Для каждого из подмножеств {(i, j)} и {(i, j)} определяется нижняя граница длины гамильтоновых контуров {(i, j )} и {(i, j )}. Каждая новая нижняя граница оказывается не меньше нижней границы всего множества гамильтоновых контуров ф(R). Среди двух подмножеств маршрутов {(i, j)} и {(i, j)} выбирается подмножество с меньшей нижней границей. Это подмножество снова разбивается на два и для вновь образованных подмножеств находятся нижние границы. Процесс разбиения подмножеств аналогичным образом продолжается до тех пор, пока не будет выделено подмножество, содержащее единственный гамильтонов контур. Взаимосвязь подмножеств, полученных в результате разбиения, изображается в виде дерева (графа), вершинам которого приписываются нижние границы. Получив гамильтонов контур, просматривают оборванные ветви дерева и сравнивают нижние границы подмножеств, соответствующих оборванным ветвям, с длиной полученного гамильтонова контура. Если нижние границы подмножеств, соответствующих оборванным ветвям, окажутся меньше длины гамильтонова контура, то эти ветви разбивают по тому же правилу. Процесс продолжается до тех пор, пока нижние границы вновь полученных подмножеств меньше длины гамильтонова контура. В результате могут быть получены новые гамильтоновы контуры. В этом случае сравниваются длины всех гамильтоновых контуров и среди них выбирается контур с наименьшей длиной. Решение задачи считается законченным, если нижние границы оборванных ветвей не меньше длины гамильтонова контура. В качестве оптимального выбирается гамильтонов контур с наименьшей длиной.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]