Целочисленное
программирование
Математическая формулировка целочисленной
задачи линейного программирования
(1)
при ограничениях
(2)
(3)
(4)
Методы целочисленной оптимизации можно разделить на три основные группы:
методы отсечения;
комбинаторные методы;
приближенные методы.
Методы отсечения
Метод отсекающих плоскостей впервые разработан Р. Гомори в 1957- 1958 гг. для задач линейного целочисленного программирование (ЛЦП).
Алгоритм решения по методу Гомори:
1.Отбросив на определенное время условие целочисленности (4), найдем оптимальное решение симплекс-методом. Если окажется, что он удовлетворяет также и условию целочисленности, то это решение является искомым.
2.В противном случае нужно выбрать компоненту оптимального решения с наибольшей целой частью (иногда наибольшей дробной частью, иногда другой критерий эффективности отсечения) и по соответствующему уравнению на основе последней симплекс- таблицы сформировать 'правильное отсечение' на основе неравенства
{Вi опт.} – {Ai m+1} X m+1 - … - {Ain} Xn <= 0, |
(5) |
где Х m+1, …, Xn - неосновные переменные,
{} означают дробную часть числа, например: {4/3} = 4/3 – 3/3 = 1/3,
{-4/3}= – 4/3 – (– 2) = 2/3
3.В неравенство (5) вводим дополнительную неотрицательную целочисленную переменную Хn+1; преобразовываем (5) в уравнение и включаем в систему ограничений (2).
4.Полученную новую задачу решают симплекс-методом. Если найденный новый оптимальный план – целочисленный, то задача ЛЦП решена. Иначе переходят к п.2 алгоритма.
Пример решения методом Гомори
(1)
При условии
(2)
|
(3) |
– целые |
(4) |
Для определения оптимального плана задачи (1) – (4) сначала находим оптимальный план задачи (1) – (3).
На основе симплекс-таблицы получим:
продолжение
Оптимальный план задачи (1) – (3) не является оптимальным планом задачи (1) – (4), поскольку две компоненты Х1 и Х2 имеют нецелочисленные значения. При этом целая часть больше для компоненты Х1.
1. Составим ограничение для переменной Х1 из последней симплекс– таблицы:
или
{Вi опт.} – {Ai m+1} X m+1 - … - {Ain} Xn <= 0,
2.Добавим к системе ограничений задачи (1) – (4).
3.Вводим новую дополнительную переменную и решаем симплекс- методом (точнее, модифицированным симплекс-методом, т.к. первое БР – будет недопустимое).
После решения получим
Целевая функция = 35.
Метод ветвей и границ
Впервые метод ветвей и границ был предложен в работе Лэнда и Дойга в 1960 г. применительно к задаче линейного целочисленного программирования. Второе рождение метода связано с работой Литтла, Мурти, Суини и Кэрел, 1963 г., посвященной задаче о коммивояжере.
Алгоритм решения методом ветвей и границ:
1.Отбросив на определенное время условие целочисленности (4), находят оптимальное решение симплекс-методом. Если окажется, что он удовлетворяет также и условию целочисленности, то это решение является искомым.
2.В противном случае производят ветвление задачи на две, для каждой из задач вводят дополнительные ограничения по одной из нецелочисленных переменных Хi<=Аi, Хi>=Вi, где Аi – наибольшее целое, не превосходящее Хi, а Вi – наименьшее целое, большее Хi,
например, при нецелочисленной компоненте исходной задачи Х2=2,3 доп. ограничение в одной ветви будет Х2>=3, а по другой – Х2<=2.
3.Снова решаются задачи в обеих ветвях с накладыванием последующих ограничений по другим переменным. На каждом шаге проверяется выполнения условия целочисленности.
