Автор работы: Пользователь скрыл имя, 03 Июня 2012 в 11:43, реферат
Впервые метод ветвей и границ был предложен Лендом и Дойгом в 1960 для решения общей задачи целочисленного линейного программирования. Интерес к этому методу и фактически его “второе рождение” связано с работой Литтла, Мурти, Суини и Кэрела, посвященной задаче комивояжера. Начиная с этого момента, появилось большое число работ, посвященных методу ветвей и границ и различным его модификациям.
Введение 3
1. Понятие о методе ветвей и границ 5
2. Общая схема метода ветвей и границ 6
3. Применение метода ветвей и границ в решении прикладных задач 8
3.1. Задача о ранце 8
3.1.1. Математическая модель задачи. 8
3.1.2. Пример решения задачи о ранце 9
3.2. Задача Коммивояжера 13
3.2.1 Определения 14
3.2.2. Постановка задачи 15
3.2.3. Решение задачи 15
3.2.4. Разбиение множества маршрутов на подмножества 17
3.2.5. Пример решения задачи коммивояжера методом ветвей и границ 17
3.3. Решение целочисленных задач линейного программирования 24
3.3.1. Алгоритм решения: 24
3.3.2 Иллюстрация метода ветвей и границ на примере 27
Заключение 31
Список использованных источников: 32
Рис. 3
Ветвление на третьем шаге
Приведенная платежная матрица для
2 | 3 | 5 | |
3 | 8 | ∞ | 0 |
4 | ∞ | 7 | 0 |
6 | 0 | 0 | ∞ |
Степени Θij нулевых элементов этой матрицы Θ35 = 8, Θ45 = 7, Θ62 = 8, Θ63 =7. Выбираем Θ35 = 8. Разбиваем на и .
Нижняя граница для равна 55 + 8 = 64. В матрице для вычеркиваем строку 3 и столбец 5 и полагаем c63= ∞. Получим
2 | 3 | |
4 | ∞ | 7 |
6 | 0 | ∞ |
Для приведения надо вычесть минимум по строке 4: r4=7. При этом нижняя граница станет равной 55+7 = 62. После приведения получим
2 | 3 | |
4 | ∞ | 0 |
6 | 0 | ∞ |
Из матрицы 2´2 получаем два перехода с нулевой длинной: (4, 3) и (6, 2).
Рис. 4 Ветвление на четвертом шаге
Рис. 5
Дерево ветвления с оценками
Полученный маршрутом коммивояжера z0 = (1, 4, 3, 5, 6, 2, 1) или (A-D-C-E-F-B-A).
По смыслу значительной части экономических задач, относятся к задачам линейного программирования, компоненты решения должны выражаться в целых числах, т.е. быть целочисленными. К ним относятся, например, задачи, в которых переменные означают количество единиц неделимой продукции, число станков при загрузке оборудования, число судов при распределениях по линиям, число турбин в энергосистеме, число вычислительных машин в управляющем комплексе и многие другие.
Задача линейного целочисленного программирования формируется следующим образом: найти такое решение (план) X = (x1,x2,...,xn), при котором линейная функция
(1)
принимает
максимальное или минимальное значение
при ограничениях
=bi ,
i=1, 2…, m.
хj ³ 0, j=1, 2,..., п. (3)
xj — целые числа (4)
Первоначально находим симплексным методом (метода последовательного улучшения плана) или методом искусственного базиса оптимальный план задачи без учета целочисленности переменных. Пусть им является план X0. Если среди компонент этого плана нет дробных чисел, то тем самым найдено искомое решение данной задачи и Fmax = F(Xo).
Если же среди компонент плана X0 имеются дробные числа, то X0 не удовлетворяет условию целочисленности и необходимо осуществить упорядоченный переход к новым планам, пока не будет найдено решение задачи. Покажем, как это можно сделать, предварительно отметив, что F(X0) ³ F(X) для всякого последующего плана X.
Предполагая,
что найденный оптимальный план
X0 не удовлетворяет условию
целочисленности переменных, тем самым
считаем, что среди его компонент есть
дробные числа. Пусть, например, переменная
приняла в плане X0
дробное значение. Тогда в оптимальном
целочисленном плане ее значение будет
по крайней мере либо меньше или равно
ближайшему меньшему целому числу
, либо больше или равно ближайшему
большему целому числу
+ 1. Определяя эти числа, находим симплексным
методом решение двух задач линейного
программирования:
Н
Найдем решение задач линейного программирования (I) и (II). Очевидно, здесь возможен один из следующих четырех случаев:
1.
Одна из задач неразрешима,
а другая имеет целочисленный
оптимальный план. Тогда этот
план и значение целевой
2. Одна из задач неразрешима, а другая имеет оптимальный план, среди компонент которого есть дробные числа. Тогда рассматриваем вторую задачу и в ее оптимальном плане выбираем одну из компонент, значение которой равно дробному числу, и строим две задачи, аналогичные задачам (I) и (II).
3.
Обе задачи разрешимы. Одна
из задач имеет оптимальный
целочисленный план, а в оптимальном
плане другой задачи есть
Если же значение целевой функции больше на плане, среди компонент которого есть дробные числа, то следует взять одно из таких чисел и для задачи, план которой рассматривается, необходимо построить две задачи, аналогичные (I) и (II).
4. Обе задачи разрешимы, и среди оптимальных планов обеих задач есть дробные числа. Тогда вычисляем значение целевой функции на данных оптимальных планах и рассматриваем ту из задач, для которой значение целевой функции является наибольшим. В оптимальном плане этой задачи выбираем одну из компонент, значение которой является дробным числом, и строим две задачи, аналогичные (I) и (II).
Таким образом, описанный выше итерационный процесс может быть представлен в виде некоторого дерева, на котором исходная вершина отвечает оптимальному плану Х0 задачи (1)-(3), а каждая соединенная с ней ветвью вершина отвечает оптимальным планам задач (I) и (II). Каждая из этих вершин имеет свои ветвления. При этом на каждом шаге выбирается та вершина, для которой значение функции является наибольшим. Если на некотором шаге будет получен план, имеющий целочисленные компоненты, и значение функции на нем окажется больше или равно, чем значение функции в других возможных для ветвления вершинах, то данный план является оптимальным планом исходной задачи целочисленного программирования и значение целевой функции на нем является максимальным.
Итак, процесс нахождения решения задачи целочисленного программирования (1)-(4) методом ветвей и границ включает следующие основные этапы:
1). Находят решение задачи линейного программирования (1)-(3).
2). Составляют дополнительные ограничения для одной из пере-менных, значение которой в оптимальном плане задачи (1)-(3) является дробным числом.
3). Находят решение задач (I) и (II), которые получаются из задачи (1)-(3) в результате присоединения дополнительных ограничений.
4). В случае необходимости составляют дополнительные ограничения для переменной, значение которой является дробным, формулируют задачи, аналогичные задачам (I) и (II), и находят их решение. Итерационный процесс продолжают до тех пор, пока не будет найдена вершина, соответствующая целочисленному плану задачи (1)-(3) и такая, что значение функции в этой вершине больше или равно значению функции в других возможных для ветвления вершинах.
Рассмотрим задачу, состоящую в определении максимального значения функции
Z = Зх1 + х2
при ограничениях:
Решение. За нижнюю границу линейной функции примем, например, ее значение в точке (0,0), т.е. Z0 = Z (0; 0) = 0.
I
этап. Решая задачу симплексным методом,
получим Zmax = 13 при Х1*
= (4,5; 0; 0; 1,5; 0,5; 4); так как первая компонента
х1* дробная, то из области
решения исключается полоса, содержащая
дробное оптимальное значение х1*,
т.е. 4 < х1 < 5. Поэтому задача 1 разбивается
на две задачи 2 и 3:
Задача 2 | Задача 3 |
Z=3x1+x2→max
при ограничениях: 4xl + Зх2 < 18 x1 + 2x2 £ 6 0 £ x1 £ 4 0 £ x2 £ 4 х1, x2 — целые числа. |
Z=3x1+x2→max
при ограничениях: 4xl + Зх2 < 18 x1 + 2x2 £ 6 5 £ x1 £ 5 0 £ x2 £ 4 х1, x2 — целые числа. |
Список задач: 2 и 3. Нижняя граница линейной функции не изменилась: Z0= 0.
II этап. Решаем (по выбору) одну из задач списка, например задачу 3 симплексным методом.
Получим, что условия задачи 3 противоречивы.
III этап. Решаем задачу 2 симплексным методом. Получим Zmax = 14/3 при X3*= (4; 2/3; 0; 2/3; 0; 10/3). Хотя Z(X3*) = 14/3 > Z0 = 0, по-прежнему сохраняется Z0 = 0, ибо план нецелочисленный. Так как х2* — дробное число, из области решений исключаем полосу 0 < x2 < 1 и задачу 2 разбиваем на две задачи 4 и 5.
Задача 4 | Задача 5 |
Z=3x1+x2→max
при ограничениях: 4xl + Зх2 < 18 x1 + 2x2 £ 6 0 £ x1 £ 4 0 £ x2 £ 0 х1, x2 — целые числа. |
Z=3x1+x2→max
при ограничениях: 4xl + Зх2 < 18 x1 + 2x2 £ 6 0 £ x1 £ 4 1 £ x2 £ 4 х1, x2 — целые числа. |
Список задач: 4 и 5. Значение Z0 = 0.
IV этап. Решаем задачу 4 симплексным методом.
Получим Zmax = 12 при X4* = (4; 0; 2; 2; 0; 0). Задачу исключаем из списка, но при этом меняем Z0; Z0 = Z(X4*) = 12, ибо план Х4* целочисленный.
V этап. Решаем задачу 5 симплексным методом.
Получим
Zmax = 12,25 при X5* = (3,75; 1;
0; 0,25; 0,25; 0; 3). Z 0
не меняется, т.е. Z0
= 12, ибо план X5* нецелочисленный.
Так как х1* — дробное, из области
решений исключаем полосу 3<x1<4,
и задача 5 разбивается на две задачи: 6
и 7.