Введение

Branch and cut – это метод комбинаторной оптимизации для решения задач целочисленного линейного программирования (ILP), то есть задач линейного программирования (LP), в которых некоторые или все переменные должны принимать целые значения. Метод branch and cut включает в себя выполнение алгоритма ветвей и границ и использование сечений для усиления релаксаций линейного программирования. Следует отметить, что если сечения используются только для усиления исходной релаксации LP, алгоритм называется cut and branch.

Стратегии разветвления

Важным шагом в алгоритме ветвей и границ является шаг ветвления. На этом этапе существует множество эвристик ветвления, которые могут быть использованы. Стратегии ветвления, описанные ниже, включают в себя так называемое ветвление по переменной. Ветвление по переменной включает в себя выбор переменной с дробным значением в оптимальном решении текущей LP-релаксации и затем добавление ограничений и .
Наиболее невыполнимое ветвление. Эта стратегия ветвления выбирает переменную с дробной частью, наиболее близкой к 0.5. Ветвление по псевдостоимости. Основная идея этой стратегии заключается в отслеживании для каждой переменной изменения в целевой функции, когда эта переменная была ранее выбрана в качестве переменной для ветвления. Затем стратегия выбирает переменную, которая, как прогнозируется, окажет наибольшее влияние на целевую функцию, основываясь на предыдущих изменениях, когда она была выбрана в качестве переменной для ветвления. Следует отметить, что ветвление по псевдостоимости изначально неинформативно в процессе поиска, поскольку было выполнено ветвление по небольшому числу переменных. Сильное ветвление. Сильное ветвление включает в себя проверку того, какая из переменных-кандидатов дает наилучшее улучшение целевой функции, прежде чем фактически выполнять ветвление по ней. Полное сильное ветвление проверяет все переменные-кандидаты и может быть вычислительно затратным. Вычислительные затраты можно снизить, рассматривая только подмножество переменных-кандидатов и не доводя решение каждой соответствующей LP-релаксации до конца. Существует также большое количество вариаций этих стратегий ветвления, таких как использование сильного ветвления на ранних этапах, когда ветвление по псевдостоимости относительно неинформативно, а затем переход к ветвлению по псевдостоимости позже, когда накопится достаточно истории ветвления для того, чтобы псевдостоимость стала информативной.