Методы отсечений
Соединение крайних точек прямыми позволило получить целочисленное многогранное множество, содержащее все допустимые решения целочисленной задачи. Без требования целочисленности допустимое множество данной задачи представляет собой выпуклый четырехугольник. Формализовал процедуру построения целочисленного множества Р. Гомори (1958 г.). Он предложил итерационную процедуру, по которой на каждой итерации отсекается часть множества непрерывной задачи (НЗ), не содержащая целочисленных решений, но включающая оптимальное решение НЗ, и на сокращенном таким способом непрерывном множестве отыскивается новое оптимальное решение одним из методов ЛП. Итерации заканчиваются, когда оптимальное решение очередной НЗ окажется целочисленным или обнаружится неразрешимость НЗ, а значит, и ЦЗ. При этом выпуклая оболочка может быть построена только частично.
Пусть получено оптимальное решение НЗ. Уравнение, соответствующее строке оптимальной симплекс-таблицы с i- й базисной переменной: для нецелого aij всегда 0 < Оставим в левой части только целые части коэффициентов. Учитывая неотрицательность
Пример: Выведем условие отсечения для задачи L= 2 x 1 +x 2 ® max; 15 x 1 + 30 x 2 £ 96; " xj ³ 0, int. Приводим неравенство к каноническому виду 15 x 1 + 30 x 2 + x 3 = 96 и решаем непрерывную задачу симплекс-методом. Получаем оптимальную симплекс-таблицу:
Очевидно, что в оптимальном решении НЗ оно не выполняется (х 3 *= 0). Условие отсечения можно записать и через основные переменные. Так как х 3 = 96-15 х 1 - 30 х 2, то 96-15 х 1 - 30 х 2 ³ 6и окончательно имеем х 1 + 2 х 2 £ 6. Граница по этому ограничению показана на рис. пунктирной линией. Все вершины усеченного множества целочисленные. При многих нецелых переменных возникает вопрос выбора переменной, по которой следует строить отсечение. Рекомендуется брать переменную с наибольшей дробной частью. Второй вопрос относится к способу учета очередного условия отсечения: его можно добавить к условиям исходной задачи и решать задачу заново или после добавления продолжить симплекс-преобразования с полученного оптимального решения, которое стало недопустимым. В алгоритме Гомори применяется второй вариант как более экономичный. Перед добавлением условие отсечения приводится к равенству: 1. Преобразовать условия задачи так, чтобы все коэффициенты стали целыми. 2. Решить исходную задачу без учета целочисленности (НЗ) одним из методов линейного программирования. Если непрерывная задача неразрешима, то зафиксировать неразрешимость исходной задачи и перейти на 9. 3. Проверить решение на целочисленность: если решение целочисленное, то зафиксировать получение оптимального решения и перейти на 9. 4. Если не все переменные целые, то из оптимальной таблицы выбрать переменную с наибольшей дробной частью. 5. Выписать из симплекс-таблицы строку с выбранной базисной переменной. 6. Выделить дробные части коэффициентов в полученном уравнении и записать условие отсечения. 7. Привести условие отсечения к равенству, умножить его на –1 и добавить полученную строку к оптимальной симплекс-таблице. При этом размерность базиса увеличивается на единицу. В качестве недостающей базисной переменной принимается дополнительная переменная из новой строки. 8. Решить расширенную задачу двойственным симплекс-методом. Если задача разрешима, перейти на 3. Иначе зафиксировать неразрешимость целочисленной задачи. 9. Конец.
|