Кол. методы МБА 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