Метод Лэнд и Дойг для решения целочисленных и частично-целочисленных задач
Дана задача линейного частично-целочисленного программирования:
(1)
(2)
(3)
(4)
Тот факт, что (1)-(3) – задача линейного программирования, сразу наталкивает на мысль, что границу (верхнюю) удобнее всего вычислять, решая именно эту задачу. Действительно, ведь всегда имеет место
Вопрос вычисления границы решен.
Как будем выполнять ветвление и какой признак оптимальности – станет ясно в процессе изложения алгоритма.
Рекордом будем называть допустимое решение задачи ЛЦП, доставляющее ЦФ значение, не меньшее, чем на любом известном на данный момент допустимом решении.
Шаг 1. Решим задачу ЛП (1)-(3). Если задача неразрешима, то и ЛЦП задача(1)-(4) неразрешима. Полагаем N=1 и в предварительно очищенный список задач S заносим задачу ЛП (1)-(3), дав ей обозначение . В этот же список заносим оптимальное решение задачи, которое принимается в качестве верхней границы .
Шаг 2. Имеем список задач S, в котором задачи упорядочены по невозрастанию оценок:
.
Если список пуст (S=), ЛЦП-задача не имеет решения. Конец.
В противном случае из списка выбирается задача - задача, имеющая максимальную оценку.
Шаг 3. Если оптимальный план выбранной задачи удовлетворяет требованию целочисленности (4), то - оптимальное решение исходной задачи, - оптимальное значение ЦФ. Конец.
Шаг 4. Выбираем нецелую координату решения . Пусть это будет координата , имеющая в решении значение . Формируем и последовательно решаем две задачи - и :
[]+1 |
[] |
По результатам решения каждой из задач и выполняются следующие действия:
Если задача имеет решение, то она вместе со своим оптимальным решением заносится в список задач S – в позицию, соответствующую полученному значению ЦФ (оценки). Таким образом, все задачи в новом списке S' упорядочиваются по невозрастанию оценок.
Шаг 5. Проводится сквозная перенумерация задач в новом списке. Этот список приобретает вид:
Из списка удаляются все бесперспективные задачи. Задача считается бесперспективной, если в списке есть задача , имеющая целочисленное решение и r > l , то есть, . Таким образом, срабатывает механизм рекордов. А именно, задача , имеющая целочисленное решение (если таковая есть), в новом списке будет занимать последнюю позицию. Этой задаче будет соответствовать рекорд.
В новом, очищенном от бесперспективных задач списке, будет N задач (NN'). Принимаем S= S' и переходим к шагу 2.
Пример. Дана задача ЛЦП Z=2x1+x2max. Область допустимых решений соответствующей ЛП-задачи задана графически.
Приведенный ниже рисунок иллюстрирует начало формирования списка задач по методу Лэнд и Дойг: из исходной задачи формируются две задачи. Ветвление осуществляется по координате x2, которая в оптимальном решении исходной задачи имеет нецелое значение (7/2) .
На следующем рисунке представлена полная схема процесса решения задачи.