АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Алгоритм метода ветвей и границ

Читайте также:
  1. Cпособи опису алгоритмів
  2. II. Документация как элемент метода бухгалтерского учета
  3. III. Опубликованные за границей (в эпоху независимой Латвии, на латышском и русском языках)
  4. Абсолютная тупость сердца: понятие, методика определения. Границы абсолютной тупости сердца в норме. Изменения границ абсолютной тупости сердца в патологии.
  5. Автором опыта выделен алгоритм формирования умения работать с моделями.
  6. Акцизы: налогоплательщики и объекты налогообложения. Особенности определения налоговой базы при перемещении подакцизных товаров через таможенную границу РФ.
  7. Алгебраическое описание метода
  8. Алгоритм sum-product
  9. Алгоритм активного слушания
  10. Алгоритм Беллмана
  11. Алгоритм ва хосиятёои он
  12. Алгоритм використання ІКТ в роботі з дошкільниками

Задача о ранце

У нас есть ранец и набор из N вещей, каждую из которых мы можем либо взять, либо не взять с собой в полет в этом ранце. i-я вещь имеет вес wi и цену ci. Мы можем взять любой набор вещей суммарным весом не более W кг. Требуется найти набор вещей наибольшей суммарной стоимости, удовлетворяющий этому условию.

Если все числа wi, ci, W натуральные, то мы можем решить эту задачу при помощи динамического программирования следующим образом: Рассмотрим для пары чисел (K,S) такой, что 0 ≤ K ≤ N, 0 ≤ S ≤ W, задачу P(K, S): найти набор вещей максимальной суммарной стоимости при условии, что мы можем выбирать из первых K вещей, и суммарный вес выбранных вещей не должен превосходить S. Ясно, что наша исходная задача — это в точности P(N, W).

Пусть A(K, S) — оптимальная суммарная стоимость для задачи P(K, S). Задача P(0,S) тривиальна: мы не можем взять ни одной вещи, следовательно A(0, S) = 0. Решим теперь задачу P(K+1, S) при условии, что известны решения задач P(K,T) для всех T. Заметим, что все наборы из вещей 1, …, K+1 суммарным весом не более S можно разделить на две группы:

  1. Наборы, в которые не входит вещь K+1. Такие наборы есть в точности наборы из вещей 1, …, K суммарным весом не более S. Наибольшая стоимость такого набора равна A(K, S).
  2. Наборы, в которые входит вещь K+1. Любой такой набор получается добавлением этой вещи к набору из вещей 1,…, K суммарным весом не более S-wK+1. Наибольшая стоимость такого набора равна A(K,S-wK+1) + cK+1. (Заметим, что этот случай возможен только когда S ≥ wK+1.)

Следовательно, искомая величина A(K+1, S) есть максимум из наибольших стоимостей для двух случаев, т. е. A(K+1, S) = max(A(K,S), A(K,S-wK+1) + cK+1).

Найдем теперь какой-либо оптимальный набор вещей. Для этого заметим, что оптимальный набор для задачи P(K,S) включает в себя вещь K тогда и только тогда, когда A(K,S)>A(K-1,S).

 

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

Впервые метод ветвей и границ был предложен Лендом и Дойгом [1] в 1960 для решения общей задачи целочисленного линейного программирования. Интерес к этому методу и фактически его “второе рождение” связано с работой Литтла, Мурти, Суини и Кэрела [2], посвященной задаче комивояжера [3]. Начиная с этого момента, появилось большое число работ, посвященных методу ветвей и границ и различным его модификациям. Столь большой успех объясняется тем, что авторы первыми обратили внимание на широту возможностей метода, отметили важность использования специфики задачи и сами воспользовались спецификой задачи коммивояжера.

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

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

Вычисление нижней границы является важнейшим элементом данной схемы. Для простейшей задачи размещения один из способов ее построения состоит в следующем.

Запишем исходную задачу в терминах целочисленного линейного программирования [4].

Введем следующие переменные:

 

 

 

 

С использованием введенных обозначений простейшая задача размещения записывается следующим образом

yi ³ xij, i Î I, j Î J,

xij, yi, yi Î {0, 1}, i Î I, j Î J.

Двойственная задача линейного программирования имеет вид:


vj £ gij + wij, i Î I, j Î J,

wij ³0, i Î I, j Î J.

Приближенное решение двойственной задачи используется в качестве нижней оценки.

Для сокращения размерности задачи применяется так называемый блок предварительной отбраковки. Он основан на применении условий дополняющей нежесткости для задач линейного программирования

Если для оптимального решения двойственной задачи выражение в скобках положительно для некоторого i Î I, то “скорее всего” в исходной целочисленной задаче yi = 0, и размерность можно уменьшить. Понятно, что данный эвристический прием не всегда приводит к правильному решению. Поэтому в качестве порога лучше брать не 0, а некоторую величину d ³ 0, выбор которой зависит от исходных данных. Эту величину называют порогом отбраковки. Очевидно, что при d ³max ci, размерность задачи не сокращается.

Другой способ уменьшения трудоемкости алгоритма состоит в искусственном завышении нижней оценки. Предположим, что нас интересует не только оптимальное решение, но и приближенные решения с относительной погрешностью не более e. Тогда завышение нижней оценки в (1 + e) раз приводит к желаемому результату.

Алгоритм метода ветвей и границ

  1. Находим решение задачи линейного программирования без учета целочисленности.
  2. Составляет дополнительные ограничения на дробную компоненту плана.
  3. Находим решение двух задач с ограничениями на компоненту.
  4. Строим в случае необходимости дополнительные ограничения, согласно возможным четырем случаям получаем оптимальный целочисленный план либо устанавливаем неразрешимость задачи.

Задача коммивояжёра (англ. Travelling salesman problem, TSP) (коммивояжёр — разъездной сбытовой посредник) — одна из самых известных задач комбинаторной оптимизации, заключающаяся в отыскании самого выгодного маршрута, проходящего через указанные города хотя бы по одному разу с последующим возвратом в исходный город. В условиях задачи указываются критерий выгодности маршрута (кратчайший, самый дешёвый, совокупный критерий и т. п.) и соответствующие матрицы расстояний, стоимости и т. п.


1 | 2 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)