Скачиваний:
51
Добавлен:
08.04.2015
Размер:
309.23 Кб
Скачать

2. КЛАССИЧЕСКИЕ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

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