Шаг 1. Исходная ЗЦП решается как задача линейного программирования (ЗЛП) (снимаем ограничения вида (г)). При этом за «рекорд» в ЗЦП принимают значение целевой функции, полученное при решении ЗЛП .
Шаг 2. Если все переменные приняли целочисленные значения, то получено оптимальное решение в ЗЦП, уход на шаг 8. Если нет, то в решенной на шаге 1 ЗЛП выбирают одну из переменных, которая приняла нецелочисленное значение. Пусть это будет переменная . Для нее вводят следующие два дополнительных ограничения.
(1),
(2),
где — целая часть нецелочисленного значения переменной , полученной при решении ЗЛП.
Шаг 3. Решаются уже две новые ЗЛП вида (а)–(в) п. 3.5 , в каждой из которых введены по одному дополнительному ограничению (1) и (2). Другими словами, исходная задача ЛП разбивается на две новые ЗЛП (происходит ветвление). Обозначим их соответственно ЗЛП–II и ЗЛП–III. Результаты решения получает , .
Шаг 4. Если в ЗЛП–II получаем целочисленное значение всех переменных, то .
Шаг 5. Если в ЗЛП–III получаем целочисленное значение всех переменных, то .
В том случае, когда в ЗЛП–II и ЗЛП–III получены целочисленные решения, то происходит их сравнение.
, выбирается то решение, которому соответствует максимальное значение целевой функции. Переход на шаг 8.
Шаг 6. Если в сформированных на шаге 3 решения не являются целочисленными, то происходит проверка следующих двух условий
, .
Если указанные ограничения выполняются, то дальнейшее ветвление в ЗЦП прекращается, т. к. введение дополнительных ограничений на целочисленность переменных будет только ухудшать значения ЦФ.
Если , , то уход на шаг 7, а ЗЛП вида (II) дальше не решается.
Если , , то уход на шаг 7, а ЗЛП вида (III) дальше не решается.
Шаг 7. Осуществляется проверка все ли нецелочисленные переменные, полученные на шаге 2, просмотрены. Если нет, то формирование новых условий вида (6) в ЗЛП–II и III и переход на шаг 3, если да, то переход на шаг 8.
Шаг 8. Вывод оптимальных целочисленных значений переменных, соответствующих задаче I, либо констатация того, что целочисленных решений в данной задаче нет.
Пример.
Решение. В результате решения задачи симплекс-методом найдём оптимальное решение: ; L1 = 29,5; где верхний индекс переменных – номер задачи.
В полученном решении х2 = 7,5 – нецелочисленное. Поэтому для дальнейшего решения составляем две новые задачи с различными граничными условиями.
Задача 2: | Задача 3: |
Результаты решения симплекс-методом задачи 2: ; L2 = 29,4; задачи 3: ; L3 = 29,25.
В задаче 1 переменная х11=1 – целочисленная, а в последующих задачах при целочисленности х2, х1 перестала быть целочисленной. Затем следует накладывать ограничения целочисленности на х1 и т.д. (рис.3.6.1).
Рис.3.6.1
Результаты решения непрерывной и целочисленной задачи вводятся в табл.3.6.1. В качестве оптимального принимается решение задачи 5, которое даёт наибольшее из целочисленных решений значение целевой функции.
Таблица 3.6.1
№ задачи | х1 | х2 | L |
7,5 | 29,5 |
Из примера видно, что метод ветвей и границ достаточно трудоёмкий. При этом оптимальное решение может быть получено в результате сравнения всех допустимых целочисленных решений.
Поэтому при решении задач реальной размерности может потребоваться память, не имеющаяся даже у современных компьютеров или потребоваться практически неприемлемое время решения.
Обязательное условие метода – наличие верхних границ на значения переменных Dj. Если Dj не назначена, то её определяют по зависимости:
,
где - минимальные значения всех хj, для которых определяется верхняя граница Dj.