Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Сирл, С. Матричная алгебра в экономике

.pdf
Скачиваний:
20
Добавлен:
22.10.2023
Размер:
13.54 Mб
Скачать

мы приведем два примера такого рода приложений и сошлемся на ряд других.

Пример. Проблема выбора способов рекламы. Проблема размеще­

ния рекламных объявлений была сформулирована

как задача линей­

ного программирования

Бассом

и Лонсдейлом [1].

Рассмотрим упро­

щенный вариант этой

задачи.

Предположим, что

мы можем разме­

щать свои рекламные объявления на местной радиостанции или в еже­ месячном журнале. Далее предположим, что мы заинтересованы лишь в двух группах потребителей: домохозяйки из семей с годовым дохо­ дом свыше 10 000 долларов и домохозяйки из семей с доходом ниже 10 000 долларов. Мы принимаем допущение, что лица первой группы покупают в два раза больше, чем лица второй группы, и желаем мак­ симизировать склонность к покупкам, основываясь на этом допущении. Одна единица рекламы на радио стоит 90 долларов и доходит (в сред­ нем) до двух человек из первой группы и семи из второй. Одна едини­ ца рекламы в журнале стоит 120 долларов; она достигает шести чело­ век из первой группы и трех из второй1. Управляющий требует, чтобы было использовано не менее шести единиц радиорекламы и не более двенадцати единиц журнальной рекламы (т. е. не более одной единицы в месяц). В целом затраты на рекламу равны 1740 долларам в год.

Мы формулируем эту задачу как задачу линейного программиро­ вания! Положим, что

хх= количеству единиц радиорекламы и

х2 = количеству единиц журнальной рекламы.

Тогда задача состоит в

максимизировании

склонности к покупкам

' при соблюдении деловых и бюджетных ограничений:

максимизировать z =

[2 (2) + 1

(7)] хх +

[2 (6) + 1 (3)] х2

при условии, что

 

хх >

6,

 

 

х2 <

12>

 

90*! +

1 2 0 х 2 <

1740,

 

 

хх >

0,

 

 

х2 >

0.

Введя избыточную переменную, две дополнительные и одну искусст­ венную переменную, получаем:

максимизировать г = Илу + 15х2 — Ю 000xd

при условии, что хг Xsi + xd — 6,

х2 + Xs2 = 12,

XB данном примере предполагается, что круг читателей журнала не пере­ секается с аудиторией радио.

240

90xx -f- 120х3 “Ь xs3 = 1 740,

Х-! > 0,

х2 > 0.

После записи в такой форме можно применять симплекс-метод для решения задачи.

Пример. Транспортные задачи. Особым типом задач линейного программирования являются так называемые транспортные задачи (иногда их называют задачами Хичкока—Купманса, по фамилиям тех, кто впервые их решил). Созданный Данцигом симплекс-метод был на самом деле сформулирован для решения именно этого типа задач, хотя он с неменьшим успехом может применяться и для решения более общих задач линейного программирования. Любая задача, в которой речь идет о т пунктах отправления, п пунктах назначения, о постоян­ ных затратах на производство единицы продукта в каждом из пунктов отправления и на ее перевозку из любого пункта отправления в любой пункт назначения, может решаться как транспортная задача линей­ ного программирования. Существуют специальные методы решения таких задач, но мы приведем лишь пример задачи, относящейся к это­ му классу.

Предположим, что некоторый производитель изготовляет некоторый продукт на трех заводах, при этом затраты на производство единицы продукта на этих заводах составляют 0,50; 0,60 и 0,45 доллара соот­ ветственно. Он владеет также четырьмя крупными магазинами, через которые он должен удовлетворить спрос на 50, 55, 40 и 60 единиц продукта соответственно. Затраты на транспортировку единицы про­

дукта

с любого завода в любой

из магазинов приведены в табл. 1 .

Завод

А может изготовить

не более 40 единиц, завод В — не более

70 единиц, завод С — не

более

140 единиц. Эта задача может быть

сформулирована как транспортная задача линейного программиро­ вания.

 

 

 

 

Таблица

1

 

Затраты на транспортировку единицы продукта (долл.)

 

К уда

М агазин 1

М агазин 2

М агазин 3

М агазин

4

Откуда

0,05

0,17

0 ,1 2

0,01

 

Завод А

 

Завод В

0,17

0,06

0,13

0,04

 

Завод.С

0,06

0,26

0 ,1 2

0 ,1 0

 

Пусть ха 1 — число единиц продукта, произведенных на заводе А и отправленных в магазин 1 ; затраты на единицу типа ха i будут складываться из затрат на производство в Л и затрат на транспорти­ ровку из А в 1, т. е. 0,50 + 0,05 = 0,55. Пусть хв 2 равно числу еди­ ниц, произведенных в В и отправленных в 2; соответствующие затра-

241

гы равны 0,60 + 0,06 = 0,66 и т. д. Всего мы имеем 12 таких пере-- менных. Целью является минимизация затрат. Формулировка данной задачи на языке линейного программирования выглядит так:

минимизировать г = 0,55хл1 + Q J7xB\ Ц 0,5 lxci +

-f 0,67х.42 -г 0,66хв2 Ч~ 0,71хс2 +

0,62л:лз + 0,73хвз + 0,57хСз +

; 0,51хд4 Ч- 0,64хд4 Ч- 0,56 хс4

при условии, что Ха i Ч- хв 1 Ч- Хс 1 = 50 (т. е. общее количество продукта, отправленного в магазин 1, равно 50),

Х д2 Ч~ %В2 Ч~ Х С2 = 5 5 ,

Хаз Ч~ Хвз Ч' хсз = 40,

 

 

-^Л4

Х ВА 4 “ ХС4 — 60,

 

Х д 1 + Х А 2 +

хл 3 +

Х а

4 <

40 (т. е. общее количество продукта,

отправленного с завода А,

не превышает 40),

 

 

Х в \ 4 “ Х В 2

Х в з ~Г Х в ь ^ 7 0 ,

 

 

Хс1 + Хс2 + хсз Ч” х а ^ 140,

 

 

x;j-> 0 ,

i = A,~B,C и / = 1 , 2 , 3 ,

4.

Ограничения

показывают,

что спрос должен

быть удовлетворен

и при этом не могут быть превышены производственные возможности заводов. Обратите внимание на то, какую форму имеет матрица А, когда эта задача записывается в матричной форме:

1

1

1

0

0

0

0

0

0

0

0

0 "

 

0

0

0

1

1

1

0

0

0

0

0

0

 

0

0

0

0

0

0

1

1

1

0

0

0

 

0

0

0

0

0

0

0

0

0

1

1

1

 

1

0

0

1

0

0

1

0

0

1

0

0

 

0

1

0

0

1

0

0

1

0

0

1

0

_0

0

1

0

0

1

0

0

1

0

0

1_

Эта форма типична для транспортных задач. Можно пополнить спи* сок переменных дополнительными и избыточными переменными и обра­ зовать матрицу А *, если необходимо, можно с помощью искусственных переменных получить первоначальное решение.

242

Интересное свойство приведенной матрицы А состоит в том, что

каждая

из ее квадратных

подматриц имеет определитель, равный

+ 1, —1

или 0 (см. главу

IV, упражнение 10). Как будет показано

в параграфе 5, при применении симплекс-метода последовательно прибегают к обращению текущего базиса для получения решения. Единственное различие, которое следует. принимать во внимание, связано со значением определителя, но если он всегда равен + 1 или

1 (0 не используется в расчетах, так как для соответствующих под­ матриц не существует обратных), то мы начинаем расчет с целочислен­ ной матрицы и далее будем иметь дело лишь с целочисленными матри­ цами. Это важный аспект транспортных задач линейного программиро­ вания: они гарантируют целочисленность решения, хотя в общем, случае для задач линейного программирования такая гарантия невоз­ можна. Существуют алгоритмы получения наилучшего целочисленно­ го решения для произвольной задачи линейного программирования,, но до сих пор не выяснены их вычислительные возможности для боль­ шинства задач (см. Хедли [10]). Таким образом, этот аспект транспорт­ ных задач представляет известный интерес.

Некоторые задачи планирования производства, расстановки персо­ нала и планирования работы машин имеют форму транспортных задач линейного программирования, а это общая форма широкого круга задач, решение которых обычно требует малого объема вычислений.

Приведенные примеры иллюстрируют лишь две области возможных, приложений линейного программирования. Упомянем некоторые дру­ гие: оно было применено в проблемах финансирования капиталовло­ жений (см. Вейнгёртнер [13], Чарнес, Купер и Миллер [4]); широкий класс проблем планирования производства был сформулирован в виде задач линейного программирования; проблема составления авиарасписанпя с учетом случайных вызовов была решена с помощью мето­ дов линейного программирования; экономическая теория равновесия анализировалась по схеме линейного программирования; это же от­ носится и к играм двух лиц с постоянной суммой (см. упражнения главы II). Этот список ни в коей мере не является исчерпывающим,, но он дает некоторое представление о возможных областях приложе­ ния и типах задач, решаемых с применением методов линейного про­ граммирования. Для дальнейшего изучения роли линейного програм­ мирования в экономической теории мы отсылаем читателя к работе Дорфмана, Самуэльсона и Солоу [7]; что касается приложения к про­ блемам хозяйства, то мы сошлемся на Бирмана, Бонини и Госмана [3], Хедли [9] или на Данцига [6].

5. МОДИФИЦИРОВАННЫЙ СИМПЛЕКС-МЕТОД

Хотя существуют машинные программы, пригодные для решения задач линейного программирования в самой общей постановке, было бы весьма полезно рассмотреть в данной работе процесс их решения с применением симплекс-метода. Модифицированный симплекс-ме­ тод отличается в отношении некоторых деталей расчетного характера

243»

от обычного симплекс-метода, но основные идеи совпадают. Мы пред­ почитаем привести здесь модифицированный вариант, поскольку имен­ но он лежит в основе многих машинных программ, применяемых для ' решения задач линейного программирования.

а) МОДИФИЦИРОВАННАЯ ФОРМА СИМПЛЕКС-МАКСИМИЗАЦИИ

 

При применении

модифицированного симплекс-метода

начинают

с базиса В = 1 (т. е.

с последних т столбцов матрицы Л*);

этот базис

соответствует угловой точке х = О (нулевому вектору, представляю­ щему начало координат), которая является допустимой в силу предпо­

ложения bt

> 0 для всех i. Тогда выбирается столбец (переменная),

с тем чтобы

ввести его в базис. Выбирают такой столбец, что соответ­

ствующая ему переменная в х* из числа небазисных переменных (т. е. на предшествующем шаге приравненных нулю) обеспечила возраста­ ние значения целевой функции. Затем выбирают столбец (переменную), который должен быть изъят из существующего базиса; при этом необходимо, чтобы для получаемого нового Хв = В^1Ь сохранилось свойство допустимости; хв представляет базисные переменные, а все прочие переменные равны нулю. Это завершает процесс замены, мы получили новый базис Внов и соответствующее ему решение Х в , новНовому базису соответствует новая угловая точка, и, как мы увидим впоследствии, значение z в новой угловой точке не меньше, чем значе­ ние г в предыдущей угловой точке (а на самом деле обычно больше). Процесс повторяют (итерируют) до тех пор, пока можно найти новую замену (допустимую угловую точку), при которой возрастает (или по крайней мере не убывает) значение целевой функции; когда подоб­ ные замены уже невозможны, найденная угловая точка представляет собой оптимальное решение. Каждая допустимая угловая точка участвует в процессе не более чем один раз, и, поскольку множество всех допустимых угловых точек конечно, данный процесс выйдет на оптимальное решение за конечное число итераций1.

Для того чтобы применить модифицированный симплекс-метод, необходимо записать вместе целевую функцию и ограничения А*х* =

= b из формулировки (3)

в форме расчлененной матрицы:

 

1

с*'

---

" Z

' 0

 

 

 

0

* ^

X*

Ъ

 

 

 

-

)

 

 

 

 

 

 

0.

В выражении (16)

пока не принимая во внимание ограничения х* >

мы переписали

целевую функцию в виде г с*'х*

= 0 и пополнили

уравнения А*х* = b этим новым уравнением.

Уравнения (16) пред­

ставляют собой

стандартную

расширенную форму постановки задачи

1Хотя можно построить примеры, когда этот процесс «зацикливается» (т. е. такие примеры, в которых некоторое заданное множество угловых точек пери­ одически участвует в процессе и при этом не происходит возрастания значений целевой функции), авторы выражают сомнение в том, что подобный случай ког­ да-либо встретится при решении практических задач.

244

линейного программирования; эта форма приспособлена для решения задачи с помощью модифицированного симплекс-метода.

Как отмечалось, мы получаем первоначальное решение, полагая, что переменные, соответствующие единичной матрице, равны соответ­ ствующим компонентам вектора Ь. В примере, приведенном на стр. 224,

xs 1 = 8;

X S 2 = 7.

Те столбцы Л*, которые порождают это решение, могут быть найдены из следующих уравнений:

'1

0

' *si'

" 8 '

(17)

0

1

Xs 2_

7

 

Первый шаг в таких задачах всегда начинают с базиса В = /, кото­ рому соответствует решение Хв = В~гЬ = I^ b = b. Поскольку b не­ отрицателен, а все остальные (небазисные) переменные равны нулю, это решение удовлетворяет ограничениям на неотрицательность.

Прежде чем продолжить описание, введем некоторые важные для модифицированного симплекс-метода обозначения. Рассмотрим по­ полнение матрицы В: поместим взятые с обратным знаком коэффициен­ ты целевой функции, связанные с базисными переменными, над соот­ ветствующими столбцами матрицы В и добавим первый столбец, у ко­ торого первый элемент равен 1 , а остальные т элементов равны нулю. Обозначим эту пополненную матрицу через В*, здесь звездочка ука­ зывает, что соответствующая матрица расширена. Таким образом,

 

В*'г-

— с'в

 

( 18)

 

В

*

 

 

 

где св — вектор

коэффициентов

целевой функции для| переменных

текущего базиса.

Например,

 

 

 

1

В* = 0

: о

о

I О

1

0

 

1

 

_

 

 

0

и для первого базиса также В*~х — 0

1

0

1

0

1 _

„0

0

L

Этот расширенный базис теперь дает нам возможность вычислить те­ кущее значение целевой функции z : z —c'BxB. Таким образом, мы можем получить это значение на каждом шаге модифицированной симплекспроцедуры. По-прежнему с помощью обозначений со звездочкой для расширенных матриц (и векторов) можно показать, что

Х в

Z

В*~ 1 ' О = В* - 1 ь*\

(19)

 

Хв

ь

 

245

в нашем примере на первом шаге

 

 

 

 

 

 

 

л

0

о-

' 0

"

' 0 '

 

 

Хв =

0

1

0

8

=

8

 

 

 

 

0

0

1

_ 7

 

_ 7

 

Формула (19) вытекает из следующего результата1:

 

если

 

1 св

 

 

 

 

1 с'в В -^

 

В*

=

, то В* - 1

=

 

0

В

о в -1

( 2 0 )

б) ЭТАПЫ МОДИФИЦИРОВАННОГО СИМПЛЕКС-МЕТОДА

 

Модифицированный

симплекс-метод

сводится к следующим шести

этапам:

 

 

 

 

 

 

 

 

 

1. Выберите единичную матрицу, чтобы образовать первый базис.

Тогда В-1 — / и хв =

Ь.

 

 

 

 

 

 

2. Используя

по очереди все столбцы а* матрицы Л*, не входящие

в базис, вычислите

набор скалярных

величин с'вВ~ха* — Cj (вспом­

ните, что сЬВ^1 получается

в первой строке матрицы В*-1).

Выбери­

те наибольшее

отрицательное

значение

свВ~га* — с,- и

пометьте

соответствующий столбец индексом k; именно этот столбец (перемен­

ная) войдет

в базис.

Если среди найденных значений нет отрицатель­

ных, значит текущее решение оптимально.

3. Для

столбца k,

выбранного на этапе 2, вычислите вектор a* fe:

 

 

 

~ c k+ c'BB —1a%

 

 

ch

a2,k

a | = В*->

at

®m+ l,~_k

4. Тот из столбцов (переменных) текущего базиса, который должен быть изъят из него, определяется при нахождении такого значения г, при котором достигается минимизация:

mm

1

( - Д — ' ПРИ а г ь >° ) .

i = 2 ........... т-у

I

aik

где хв/ — /-я переменная текущего базиса. Пометим столбец, найден­ ный с помощью этой минимизации, индексом I.

5. Матрицу, обратную к расширенной матрице нового базиса, и расширенный вектор решения (обозначаемые через Btoi и хв , н ов) вы­ числяют, используя результаты для предыдущего базиса, а именно:

нов = F x B~,

(21)

Вн*шЛ=ЕВ*-\

(22)

Расчлененная форма обратной матрицы рассмотрена

в параграфе 7 гла­

вы V.

2 4 6

где матрица F, приведенная далее, получена из единичной матрицы путем замены l-то столбца на столбец, состоящий из элементов вида

aih ( , „ 1 \

— |^за исключением 1-то элемента, который имеет вид — j

-

1

0

0

0 . . 0

(ск— с'в В -1а%)/а1к 0

0 ..

о-

 

 

0

1

0

0 . . 0

а2h l a lk

0

0 .. 0

 

 

0

0

1

0 . . 0

a 3 k /a lh

0

0 .. 0

 

 

0

0

0

0 . .

1

Ct-l— l , kl*Xlti

0

0 ..

0

 

F =

0

0

0

0 . . 0

( +

0

0 ..

0

(23)

 

0

0

0

0 ...

0

1, к ! щ к

1

0 ..

0

 

 

0

0

0

0 ...

0

a l + 2. k l& lk

0

1 .. . 0

 

 

0

0

0

0 ...

0

a l + 3, kl<Xlh

0

0 .. . 0

 

_0

0

0

0 ...

0

1,kl k

0

0 .. . 1 _

 

После получения х%. нов и В нов1 вернуться к этапу 2.

Сейчас мы кратко прокомментируем перечисленные этапы. Этап 1 дает нам допустимое решение (х = 0), с которого мы начинаем. Этап 2 проверяет предельные вклады*, связанные с единицей каждой из не­ базисных переменных. Если затраты на те ресурсы, которые такая единица забирает от других переменных (с'вВ^а*), меньше, чем прибыль (cj), то выражение свВ~га* cj будет отрицательным, и переменную следует ввести в базис. Если таких переменных нет, то мы не можем улучшить значение целевой функции и процедура заканчивается.

После того, как на этапе 2 найден новый столбец (переменная), который должен войти в базис, нам нужно выяснить, какой из столб­ цов следует из базиса удалить. Поскольку предельная прибыль, свя­ занная с единичным приращением переменной, которую вводят в ба­ зис, положительна, она должна получить наибольшее возможное зна­ чение. Этот уровень определяется величинами смещения каждого из элементов существующего решения х% (в сторону отрицательных зна­ чений) при вхождении в базис новой переменной, которая принимает

теперь

положительные

значения (напоминаем,

что А*х%, нов =

Ъ).

k-YL столбец матрицы А*

(входящий в базис столбец) может быть запи­

сан в виде линейной комбинации столбцов существующего базиса,

т. е

поскольку

 

 

 

 

 

 

а 2, к

 

 

a 2_, к

 

« 2 , k

 

 

= B ~ l a t ,

a % =

В

= [Pl-

 

 

 

• P m !

 

_ ^ п г

-f- 1, k

 

 

. a m + 1, k .

 

C l m -f- I, k

 

 

 

 

 

 

 

 

 

.

 

аи к P i- I.

 

 

 

*В значение целевой функции. — Прим, перев.

247

где р; ■— i-й столбец В. Следовательно, из последних т элементов a k на третьем этапе мы получаем нормы замещения входящей переменной каждого из элементов в текущем решении х%, т. е. вектор, состоя­ щий из элементов а к, показывает, насколько надо сдвинуть каждую из базисных переменных, чтобы ввести в решение единицу новой пе­ ременной. На этапе 4 сохраняется положительность всех перемен­ ных хв', это достигается выбором такой переменной, уходящей из ба­ зиса, которая первой достигает нуля, когда вводимая переменная на­ чинает принимать положительные значения. Для этого проверяют зна­ чения базисных переменных, поделенные на соответствующие элемен­ ты a k, которые тем самым показывают, как быстро каждая из базис­ ных переменных смещается к нулю при введении новой переменной.

На этапе 5 вычисляют с помощью разложения на множители матри­ цу, обратную к расширенной матрице нового базиса, Внов1 и новое решение х%, пов. Этап 6 возвращает процесс к этапу 2, и таким путем достигают оптимального решения.

Пример. Мы продемонстрируем сейчас применительно к примеру, приведенному на стр. 228, ход реальных вычислений и таблицы, ис­ пользуемые в модифицированном симплекс-методе:

максимизировать z = 20лу + 20ха

при условии, что Злу + 2лу + jcsi = 8,

2лу + Зха + Xsi = 7,

лу, х2, xSl, xS2 > 0.

3 2 1 0

Этап 1. Выбор единичной матрицы из Л*

.2 3 0 1.

достигается при x;si = 8, xSa 7.

Перем енны е в текущ ем расш иренном бази се

Z

1

0

0

xSl

0

1

0

XS2

0

0

1

Этап 2. По столбцам 1 и 2 матрицы Л* мы вычисляем с'вВ~1а*

с}, где свД-1 = [0 0] указаны в приведенной таблице. Таким обра­ зом, свВ^а*сг = —20 и chB^al — са = —20. Получилось совпадение. Мы выбираем для нового базиса переменную лу (можно было выбрать любую из этих двух переменных).

2 4 8

Этап 3.

 

 

 

 

 

 

 

 

 

 

ах = В*- 1

 

 

 

1

0

0

-20

 

 

 

0

1

0

3

 

 

 

 

 

 

 

 

 

 

 

 

а!

 

0

0

1

1

 

 

 

 

 

 

 

 

^—20"

“ — сг~\-СвВ-г а\ ~

 

 

 

3

=

 

«2,1

 

 

Этап 4.

 

 

2

 

 

«зд

 

 

 

 

 

 

 

 

 

 

 

Х г

ЛВ2

 

f

8

у

1

g

для

хВи что дает / = 2,

min '-в 1

min

— ,

= —

« 2,1

« 3 , 1

 

I 3

2

)

3

 

 

где хви Хв2

берутся из таблицы,

а а 21,

а зл, были вычислены на этапе

3. Таким образом, мы должны вывести из базиса первую базисную пе­ ременную, а именно xsi и соответствующий ей второй столбец матри­ цы В*-, alk = а 21 = 3.

Этап 5. Подставляя соответствующие величины вместо элементов столбца 2 единичной матрицы, получаем следующую матрицу F:

Тогда

и

Внов*-1

 

 

1

Щ-

0

 

 

 

 

3

 

 

 

 

0

4 -

о

 

 

 

 

3

 

 

 

 

0

— L

1

 

 

 

 

3

 

 

 

 

' i

щ.

о~

 

 

 

 

3

 

"0 "

Хв, нов = Fx*B =

 

 

 

о

 

о

8

 

 

о

— *

1

J

_

 

 

 

 

 

 

 

3

 

 

 

 

“ i

ц .

о '

 

О

О

 

 

3

 

 

 

 

 

 

 

 

1 __

О

 

О

о

 

о

 

_о -

о

 

о

о

 

 

 

 

 

 

 

4 - 1

 

 

 

- 1 6 0 -

3

8

3

_5_

3 _

1

20

0

3

0

_ 1_

0 .

тг

0

_2_

1

 

3

 

Сейчас мы получили решение задачи, использовав в базисе пере­ менные хх и Xsi, переменная xsi была выведена из базиса. При усло­

вии, что хх =

а прибыль равна 20 за единицу, целевая функция

 

о

249

Соседние файлы в папке книги из ГПНТБ