Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций МП(рус).doc
Скачиваний:
109
Добавлен:
09.02.2016
Размер:
1.64 Mб
Скачать

6. Целочисленное линейное программирование

Целочисленное программирование – раздел математического программирования, рассматривающий оптимизационные задачи, в которых все или некоторые переменные могут принимать только целые значения. Как правило, требование целочисленности переменных значительно усложняет задачу. Целочисленное программирование систематически изучается с 1956 года, но и сейчас этот раздел находится в стадии развития.

6.1. Общая постановка задачи целочисленного линейного программирования (зцлп).

Мы будем рассматривать только полностью целочисленные задачи, в которых требование целочисленности наложено на все переменные. Общий вид такой ЗЦЛП отличается от ЗЛП только тем, что ко всем переменным предъявляется требование целочисленности. В частности, в каноническом виде ЗЦЛП ставится так:

(6.1)

Для ЗЦЛП используется та же терминология, что и для ЗЛП: целевая функция, допустимое решение, оптимальное решение и т.д. Если в ЗЦЛП отбросить требование целочисленности, то получится так называемая ослабленная задача. Ослабленная задача является ЗЛП, в то время как ЗЦЛП таковой не является. Дело в том, что требование целочисленности переменных нельзя записать в виде линейного ограничения. Аналитически его записать можно. Действительно, обозначим через [a] целую часть числа а, т.е. наибольшее целое, которое не больше а. Например, [3.4] =3; [-7.2]= -8. Требование целочисленности переменной xj можно записать так: xj -[xj ] =0. Однако это соотношение не является линейным. Таким образом, нельзя сказать, что ЗЦЛП – частный случай ЗЛП – она вообще не является ЗЛП.

Для ЗЦЛП не существует такого универсального эффективного метода решения, каким является симплекс-метод для ЗЛП. Из точных методов решения отметим метод отсечения Гомори и комбинированный метод ветвей и границ. Суть этого комбинированного метода мы изложим.

На практике большинство ЗЦЛП решается приближенно. При этом часто приходится разрабатывать приближенный метод, учитывающий специфические особенности задачи.

Приведем примеры ЗЦЛП.

6.2. Целочисленная задача об использовании сырья.

Предприятие выпускает n видов штучной продукции стоимостью за штуку. Для изготовления продукции используетсяm видов сырья, запасы которого на предприятии равны соответственно. Известна (m X n) – матрица (aij), в которой - расходi – го сырья на производство единицы продукции j –го вида. Требуется составить такой план производства, при котором выручка от реализации продукции была бы наибольшей.

Математическая модель задачи имеет вид:

f =→ max

при ограничениях:

Здесь - количество продукцииj –го вида.

Это задача целочисленного линейного программирования.

Целочисленность переменных существенна в тех случаях, когда речь идет о производстве дорогостоящей продукции.

6.3. Задача о рюкзаке.

Целочисленная задача об использовании сырья не является ярко выраженной ЗЦЛП. К типичным ЗЦЛП относятся т.н. комбинаторные оптимизационные задачи. В комбинаторных задачах имеется конечное множество вариантов, из которых нужно выбрать оптимальный. Примером такой задачи является задача о рюкзаке.

Имеется рюкзак вместимостью V и n предметов объемами v1, v2 , ...,vn и стоимостями с1, c2 ,..., c n . Требуется упаковать рюкзак так, чтобы стоимость упакованных предметов была максимальной.

Составим математическую модель этой задачи.

Пусть xj – переменная, принимающая только два значения: 0 или 1, причем xj =0, если j предмет не упаковывается в рюкзак; xj = 1, если j предмет упаковывается в рюкзак. Тогда задача записывается так:

при ограничениях

Это ЗЦЛП, называемая задачей булева программирования. Ограничения задачи можно записать иначе: