 
        
        Кол. методы МБА 2012 / 2. Оптимизация / Книжка по ЛП / 2. Зад.лин.пр. 18-26
.pdf2. КЛАССИЧЕСКИЕ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
2.1. Введение
Задачи линейной программирования были впервые сформулированы в 30-х годах прошлого столетия. Большая роль в создании теории и разработке методов их решения принадлежит российским ученым: А.Н.Толстому (первая постановка задачи по формированию оптимального плана перевозок – 1930г.), академику Л.В. Канторовичу (систематические исследования и разработка общих методов решения
– 1939 г.), М.К. Гавурину (совместно с Л.В. Канторовичем в 1949 г. метод потенциалов для решения транспортных задач), В.В. Новожилову, А.Р. Лурье, академику А.Г. Аганбегяну, Д.Б. Юдину и многим другим. Среди зарубежных ученых необходимо отметить Б. Эгервари, Г.У. Куна (задачи о назначениях, транспортная задача, «Венгерский метод» - 1931 г.), Дж. Данцига (автора симплекс метода 19471949 гг.).
Модели линейного программирования отличаются относительной простотой и понятным содержательным смыслом. Их использование во многих практически важных задачах, связанных с принятием решений, показало высокую эффективность. Благодаря этому они получили довольно широкое распространение. К числу наиболее известных задач линейного программирования относятся следующие.
•Задачи о распределении ограниченных ресурсов (задачи оптимального планирования).
•Задачи об оптимальной корзине продуктов (задачи о диете, задачи оптимального смешения).
•Задачи оптимального раскроя (материалов, заготовок).
•Транспортные задачи.
•Задачи о назначениях.
Втеории линейного программирования перечисленные задачи часто называют классическими. Их традиционно считают «базовыми», или основными, поскольку большинство реальных управленческих ситуаций, сформулированных в терминах линейного программирования, как правило, относится к одному из вышеприведенных типов.
18
 
2.2. Задача о планировании производственной программы предприятия
Предприятие может выпускать n видов продукции P1, P2, … Pn , располагая для этого m различными ресурсами R1, R2,…Rm в количествах b1, b2, … bm соответственно. Известно, что для выпуска единицы продукции Pj необходимо затратить a ij единиц ресурса Ri ,
i=1,2,…m; j=1, 2, … n. Кроме того, известен доход от продажи единицы каждого вида продукции - c1, c2 ,...cn соответственно, где c j -
стоимость единицы продукта Pj , например, 1 штуки, 1 тонны и т.д.
Требуется так спланировать производственную программу – объемы выпуска каждого вида продукции (в штуках, тоннах и т.д.), чтобы максимизировать доход предприятия.
Для удобства дальнейших выводов и рассуждений сведем исходную информацию в единую таблицу 2.1, где через x j обозначим объ-
емы продукции P j , выпускаемой предприятием. Тогда набор пере-
менных {x1, x2,Kxn} представляет собой не что иное, как производственную программу предприятия.
Таблица 2.1.
| 
 | 
 | Продукция | 
 | Запасы | ||
| Необходимые | 
 | 
 | ресурсов | |||
| 
 | 
 | 
 | 
 | 
 | ||
| ресурсы | P1 | P2 | ... | 
 | Pn | 
 | 
| 
 | 
 | Объемы | выпуска | 
 | 
 | 
 | 
| 
 | x1 | x 2 | ... | 
 | x n | 
 | 
| R1 | a11 | a12 | ... | 
 | a1n | b1 | 
| R2 | a 21 | a22 | ... | 
 | a 2n | b2 | 
| ... | ... | ... | ... | 
 | ... | ... | 
| Rm | a m1 | a m2 | ... | 
 | a mn | bm | 
| Доход от реализации | c1 | c2 | ... | 
 | cn | 
 | 
| единицы продукции | 
 | 
 | ||||
Доход, полученный предприятием при производстве продукта Pj в количестве x j , составит c jx j, а при реализации производственной программы {x1, x2,Kxn} будет равен величине
19
Z = c1x1 +c2x2 +K+cnxn .
Подсчитаем, какое количество ресурсов будет израсходовано, если выбрать некоторый план {x1, x2,Kxn}.
Ресурса R1 потребуется: a11x1 +a12x2 +K+a1nxn , в то время, как в наличии имеется - b1.
Ресурса R2 потребуется: a21x1 +a22x2 +K+a2nxn , в то время, как в наличии имеется - b2.
. . . . . . . . . . . . . . . . . . . . . . . . .
Ресурса Rm потребуется: am1x1 +am2x2 +K+amnxn , в то время, как в наличии имеется - bm.
Очевидно, что производственная программа может быть выполнена только в том случае, если имеющихся ресурсов будет достаточно, т.е. при выполнении условий
| a11x1 +a12x | 2 +K+a1nxn ≤ b1, | 
 | 
 | |||||||||
| 
 | 21x1 | +a22x2 +K+a2nxn ≤ b2 , | 
 | |||||||||
| a | 
 | |||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| M | 
 | 
 | M | 
 | 
 | M | 
 | 
 | M | 
 | 
 | |
| a x | +a | m2 | x | 2 | +K+a | mn | x | n | ≤ b | m | . | |
| 
 | m1 1 | 
 | 
 | 
 | 
 | 
 | 
 | |||||
Кроме того, понятно, что переменные решения x1, x2,Kxn долж-
ны быть неотрицательными числами, т.е.
x1 ≥ 0, x2 ≥ 0,Kxn ≥ 0 .
Объединяя полученные результаты, получаем следующую задачу линейного программирования.
Требуется найти совокупность значений {x1, x2,Kxn}, обращающих в максимум целевую функцию
| Z = c1x1 +c2x2 +K+cnxn | (2.1) | 
при условии, что переменные {x1, x2,Kxn} удовлетворяют системе ограничений
| a11x1 +a12x2 +K+a1nxn ≤ b1, | 
 | 
 | 
 | ||||||||||
| 
 | 21x1 | +a22x2 | +K+a2nxn | ≤ b2 | , | 
 | |||||||
| a | (2.2) | ||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
| M | 
 | 
 | M | 
 | 
 | M | 
 | 
 | M | 
 | 
 | 
 | |
| a x | +a | m2 | x | 2 | +K+a | mn | x | n | ≤ b | m | 
 | ||
| 
 | m1 1 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||
| x1 ≥ 0, x2 ≥ 0,Kxn ≥ 0 . | 
 | 
 | 
 | 
 | 
 | (2.3) | |||||||
20
 
Пример 2.1.
Химическая фабрика выпускает три разновидности стирального порошка марок A, B, C. Доход от реализации 1 килограмма порошка каждого наименования известен и составляет, соответственно сA=10, сB=12, cС=8 рублей. Недельные запасы и удельные расходы ресурсов, необходимых для производства 1 кг порошка каждой марки, приведены в табл. 2.2.
Таблица 2.2.
Ресурсы, необходимые для производства стиральных порошков
| Марка стирального | Недельные запа- | ||||
| 
 | порошка | 
 | 
 | сы ресурсов | |
| A | B | 
 | C | 
 | |
| 
 | 
 | ||||
Сырье (кг)
Оборудование (нормо-часы)
Трудозатраты (челчасы)
| 1,4 | 1,2 | 
 | 1,5 | 15 000 | 
| 0,2 | 0,7 | 0,3 | 2300 | |
| 
 | 
 | 
 | 
 | 
 | 
| 0,3 | 0,2 | 0,1 | 1600 | |
| 
 | 
 | 
 | 
 | 
 | 
Требуется построить оптимизационную модель, позволяющую так спланировать производственную программу (объемы выпуска порошка каждой марки), чтобы доход от реализации продукции был максимальным.
Решение
Обозначим через xA , xB , xC недельные объемы выпуска стираль-
ных порошков марок A, B, C (кг). Тогда доход от реализации порошков при производственной программе xA , x B , xC
Z = cA xA +cB xB +cC xC ,
или
Z =10xA +12xB +8xC .
Подсчитаем расходы ресурсов, необходимые для выполнения производственной программы xA , x B , xC .
•«Сырья» будет израсходовано 1,4xA +1,2xB +1,5xC (кг) при запасе, равном 15 000 кг. Следовательно, для того, чтобы программу
можно было реализовать, необходимо выполнить условие
1,4xA +1,2xB +1,5xC ≤15000 .
21
•Расход ресурса «оборудование» составит 0,2x A +0,7x B +0,3xC нормо-часов при запасе 2 300 нормо-часов. Следовательно, при выборе производственной программы необходимо выполнить условие
0,2xA +0,7xB +0,3xC ≤ 2300.
•Расход ресурса «трудозатраты» составит 0,3x A +0,2x B +0,1xC человеко-часов при запасе 1600 человеко-часов. Следовательно, при поиске оптимальной программы должно выполняться условие
0,3x A +0,2x B +0,1xC ≤1600.
•Кроме того, переменные xA , xB , xC не могут принимать отрицательных значений, т.е. x A ≥ 0, x B ≥ 0, x C ≥ 0 .
Объединяя результаты, получаем следующую задачу линейного программирования. Необходимо сформировать такую производственную программу xA , xB , xC (определить объемы выпуска продукции
каждой марки), при которой целевая функция (доход от реализации)
Z =10xA +12xB +8xC
будет максимальной, при условии, что переменные xA , xB , xC удовлетворяют системе ограничений
1,4xA +1,2xB +1,5xC ≤15000,0,2xA +0,7xB +0,3xC ≤ 2300,0,3xA +0,2xB +0,1xC ≤1600,
x A ≥ 0, x B ≥ 0, x C ≥ 0 .
Заметим, что и целевая функция и ограничения в рассмотренном примере линейны относительно переменных xA , xB , xC . Следова-
тельно, это задача линейного программирования.
2.3. Задача об оптимальной корзине продуктов (задача о диете)
Медициной установлена суточная потребность организма в питательных веществах T1, T2, … Tm (белки, жиры, углеводы и т.д.), а
22
 
именно: человеку они необходимы в количествах не менее чем b1, b2, … bm некоторых условных единиц (например, миллиграмм). В прода-
же имеются продукты питания П1, П2, … Пn, стоимость которых известна и равна c1, c2 ,...cn (где c j - стоимость единицы продукта Пj ,
например 1 кг, 1 литра, 1 упаковки и т.д.). Известно также, что питательное вещество Ti содержится в единице продукта Пj в количестве
aij единиц (i=1,2,…m; j=1, 2, … n.).
Требуется составить продуктовую корзину с минимальной стоимостью, т.е. определить количество продуктов каждого вида {x1, x2 ,Kxn }, которые следует приобрести, для того, чтобы, с одной
стороны, удовлетворить суточную потребность организма в питательных веществах, а с другой израсходовать при этом минимум средств. Исходная информация, необходимая для формулировки задачи приведена в таблице 2.3.
Таблица 2.3.
| Необходимые | 
 | Продукты питания | 
 | Минимально | |||
| питательные | П1 | 
 | П2 | ... | 
 | Пn | необходимая | 
| вещества | x1 | 
 | x2 | ... | 
 | xn | потребность | 
| Т1 | a11 | 
 | a12 | ... | 
 | a1n | b1 | 
| Т2 | a 21 | 
 | a 22 | ... | 
 | a2n | b2 | 
| ... | ... | 
 | ... | ... | 
 | ... | ... | 
| Тm | am1 | 
 | a m2 | ... | 
 | a mn | bm | 
| Стоимость еди- | c1 | 
 | c2 | ... | 
 | cn | 
 | 
| ницы продукта | 
 | 
 | 
 | ||||
Обозначим стоимость искомой корзины через Z. Тогда для некоторого продуктового набора {x1, x2 ,Kxn }
Z =c1x1 +c2x 2 +K+cn x n .
Подсчитаем количество каждого питательного вещества Тi, i=1,2,…m, содержащегося в корзине {x1, x2 ,Kxn }.
23
•Вещества Т1 содержится: a11x1 +a12x2 +K+a1nxn , в то время, как его должно быть не менее, чем b1.
•Вещества Т2 содержится: a21x1 +a22x2 +K+a2nxn , в то время, как его должно быть не менее, чем b2.
. . . . . . . . . . . . . . . . . . . . . .
•Вещества Тm содержится: am1x1 +am2x2 +K+amnxn , в то время, как его должно быть не менее, чем bm.
•Кроме того, из смысла задачи следует, что переменные решения
{x1, x2 ,Kxn } не могут быть отрицательными числами, т.е.
x1 ≥ 0, x2 ≥ 0,Kxn ≥ 0 .
В результате приходим к следующей задаче линейного программирования. Необходимо найти такой набор значений для переменных {x1, x2 ,Kxn }, которые обращают в минимум целевую функцию
| Z = c1x1 +c2x2 +K+cnxn , | (2.4) | 
и одновременно удовлетворяют системе ограничений
| a11x1 +a12x2 +K+a1nxn ≥ b1, | 
 | 
 | ||||||||||
| 
 | 21x1 | +a22x2 | +K+a2nxn | ≥ b2, | 
 | |||||||
| a | (2.5) | |||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
| M | 
 | 
 | M | 
 | 
 | M | 
 | 
 | M | 
 | 
 | |
| a x | +a | m2 | x | 2 | +K+a | mn | x | n | ≥ b | m | , | |
| 
 | m1 1 | 
 | 
 | 
 | 
 | 
 | 
 | |||||
| 
 | x1 ≥ 0, x2 ≥ 0,Kxn ≥ 0 . | 
 | 
 | 
 | (2.6) | |||||||
Как и ранее, целевая функция и ограничения линейны, следовательно, это задача линейного программирования.
Пример 2.2.
Месячная потребность организма в витаминах и питательных веществах типов A, B, C указана в таблице 2.4 (цифры условные). Содержание A, B, C в 1 килограмме доступных покупателю фруктов – яблок, апельсинов, бананов и лимонов - указано в табл. 2.4. Требуется построить оптимизационную модель для того, чтобы определить, какие продукты и в каких количествах следует покупать для удовлетворения потребности организма в витаминах и питательных веществах
24
 
A, B, C, при условии, что стоимость продуктового набора должна быть минимальной.
Таблица 2.4.
| 
 | Микроэлементы | 
 | 
 | Продукты | 
 | Потребность | 
 | ||
| 
 | и витамины | 1 | 2 | 3 | 4 | 
 | |||
| 
 | А | 1 | 0 | 2 | 5 | 50 | 
 | ||
| 
 | B | 3 | 5 | 0 | 4 | 60 | 
 | ||
| 
 | С | 0 | 4 | 7 | 0 | 40 | 
 | ||
| 
 | Цена за 1 кг | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 
 | 
 | 45 | 60 | 70 | 80 | 
 | 
 | |
| Решение | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||
| Обозначим через x1, x 2 , x3, x4 | количество | приобретаемых про- | |||||||
дуктов каждого вида (в кг). Тогда стоимость продуктового набора будет равна
Z = 45x1 +60x2 +70x3 +80x4 .
Содержание A в продуктовом наборе будет равно x1 +0 x2 +2x3 +5x4 . Причем, согласно требованиям, его количество
должно быть не менее 50. Тогда получаем первое ограничивающее условие – набор продуктов x1, x 2 , x3, x4 должен быть таким, чтобы
обеспечить количество A не менее чем 50 условных единиц x1 +0 x2 +2x3 +5x4 ≥50.
Рассуждая аналогично, получим ограничивающие условия по другим компонентам.
• 3x1 +5x2 +0 x3 +4x4 ≥ 60 - ограничение по удовлетворению потребности в B.
• 0 x1 +4x2 +7x3 +0 x4 ≥ 40 - ограничение по удовлетворению
потребности в C.
Кроме того, переменные x1, x 2 , x3, x4 не могут быть отрицатель-
ными числами. Следовательно,
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x 4 ≥ 0 .
Объединяя полученные результаты, получаем следующую оптимизационную задачу.
Необходимо найти такой набор значений переменных x1, x 2 , x3, x4 (количества продуктов каждого вида), который обраща-
ет целевую функцию (стоимость продуктового набора) в минимум
25
Z = 45x1 +60x2 +70x3 +80x4 min
и при этом удовлетворяет системе ограничений
x1 +0 x2 +2x3 +5x4 ≥ 50,3x1 +5x2 +0 x3 +4x4 ≥ 60,
0 x1 +4x2 +7x3 +0 x4 ≥ 40, x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x 4 ≥ 0 .
Так как и целевая функция и ограничения линейны, то это задача линейного программирования.
2.4. Формы записи задач линейного программирования
Несмотря на различный содержательный смысл, в рассмотренных задачах много общего, а именно: линейность целевой функции и ограничений, а также условие неотрицательности переменных. Отличие заключается в знаках неравенств и целях оптимизации – в одном случае требуется максимизировать целевую функцию, в другом – минимизировать.
Что касается знака неравенств в ограничениях (больше, меньше или равно), то в задачах, как первого, так и второго типа они могут быть любыми, в зависимости от реальных условий. Например, при формировании производственной программы часто присутствуют условия выполнения уже подписанных контрактных обязательств, на-
пример, продукцию Pк, нужно поставить в количестве не менее, чем dk. Тогда к системе ограничений (2.2) по ресурсам будет добавлено дополнительное ограничение по выполнению обязательств
xk ≥ dk .
Если ставится требование израсходовать один из ресурсов полностью, то соответствующее ограничение будет записано в виде равенства. В общем случае задачи линейного программирования могут содержать ограничения, как в виде неравенств разных знаков, так и в виде равенств.
При решении задач современными стандартными программными средствами в Excel или с помощью других специализированных пакетов выполнять процедуры приведения моделей к некоторому стандартному виду, как правило, не требуется.
26
