Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
msepmenj (2) / Практические занятия / Методы оптимизации управления и принятия решений.pdf
Скачиваний:
201
Добавлен:
12.02.2015
Размер:
6.63 Mб
Скачать

Зайцев М.Г., Варюхин С.Е.

51

устойчивости не дает. Однако, ориентиром в таком исследовании может служить, например, теневая цена ресурса

Дейчтвие 3-е. Проблема учета постоянных издержек

После проведенного анализа, сын владельца фабрики принес свой первый оптимальный план в цех и с гордостью показал мастеру. Мастер на мгновенье нахмурился («ишь, какой умный нашелся!»), но затем с облегчением вздохнул и громко засмеялся:

- Ну, что ж, молодой человек, замечательно! Будем реализовывать! Только учти, что по технологии до (или после) производства конфеты Белка (особенно в таком количестве как ты рекомендуешь), надо остановить производственную линию и тщательно ее вычистить, а то будет брак! А стоит такая очистка 400 у.е.! Так что с премией своей можешь попрощаться.

Вот это удар!

Что же делать? Надо срочно пересчитать оптимальный план с учетом этой постоянной издержки. Тем более (вспомнил мальчик), что для этого существует очень изящный метод, использующий целочисленные переменные.

Анализ Действия 3-его.

Прежде чем приступить непосредственно к анализу неожиданно возникшей проблемы сына хозяина кондитерской фабрики заметим, что попытка учета постоянных издержек наталкивается на фундаментальное ограничение моделей линейного программирования. Действительно, линейная целевая функция P (будь то прибыль или издержки) в линейной модели должна быть представлена как сумма произведений целевых коэффициентов на переменные решения:

P c1 X1 c2 X 2 cn X n .

Если трактовать Xj как количества произведенных единиц продукта j-го типа, а коэффициенты сj как издержки на единицу произведенного продукта (или прибыль на единицу продукта, т.е. цена минус издержки на производство одного изделия), то очевидно, что принимаются в расчет только те издержки, которые пропорциональны количеству выпущенных изделий. Эти издержки называются переменными. К таким издержкам относятся оплата сдельного труда, расход материалов, электроэнергии и пр.

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

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

Представим, однако, что на одной и той же производственной линии можно производить различные продукты, причем для производства каждого

нового продукта нужно произвести переналадку оборудования, что для каждого продукта характеризуется своими затратами (устойчивый английский термин для таких затрат - «setup cost»). В таком случае вид целевой функции должен быть существенно изменен.

Заметим, что встречающаяся в бухгалтерском учете практика «размазывания» постоянной издержки по всей партии выпущенных изделий и увеличение таким образом величины издержек на одно изделие, совершенно неприменима при решения ЛП-задачи об оптимальном плане. В этой задаче количество выпущенных изделий данного типа – это переменная Xj, подлежащая определению (т.е. заранее неясно на какое количество изделий нужно «размазать» постоянную издержку), а издержка (или прибыль) на одно произведенное изделие cj должна быть постоянной (т.е. независящей от количества выпущенных изделий).

Вернемся теперь к анализу ситуации на кондитерской фабрике. Введем в рассмотрение величину постоянных издержек 400 у.е., связанную с производством конфеты «Белка» (Рис. 28).

Будем считать, что постоянная издержка появляется, когда произведен хотя бы один пакет этой конфеты. Она не зависит от того, как много пакетиков «Белки» произведено. Однако если «Белка» не производится вообще, то этой издержки нет.

В этих условиях целевую функцию – прибыль, можно записать «по Excel’евски» следующим образом: =СУММПРОИЗВ(C13:G13;C9:G9)-

ЕСЛИ(F13>0;F10;0).

 

A

B

C

D

E

F

G

 

1

 

 

На кондитерской фабрике

 

 

 

2

 

 

 

 

Продукты

 

 

 

 

 

 

Ореховый

 

 

 

 

 

3

Сырье

Запасы

звон

Райский вкус

Батончик

Белка

Ромашка

 

4

Темный шок.

=1411+I4

0,8

0,5

1

2

1,1

 

5

Светлый шок.

=149+I5

0,2

0,1

0,1

0,1

0,2

 

6

Сахар

=815,5+I6

0,3

0,4

0,6

1,3

0,05

 

7

Карамель

=466+I7

0,2

0,3

0,3

0,7

0,5

 

8

Орехи

=1080+I8

0,7

0,1

0,9

1,5

0

 

9

Прибыль

 

1

0,7

1,1

2

0,6

 

10

Постоянная издержка

 

 

 

400

 

 

11

Есть\Нет

Y =

 

 

 

0

 

 

 

 

 

Ореховый

 

 

 

 

 

12

 

 

звон

Райский вкус

Батончик

Белка

Ромашка

 

13

 

Переменные

0,00

0,00

0,00

0,00

0,00

 

14

 

 

 

 

Цель

 

 

 

15

 

Расход

 

P =

=СУММПРОИЗВ(C13:G13;C9:G9)-F10*F11

 

 

 

 

 

 

 

 

 

16Темный шок. =СУММПРОИЗВ($C$13:$G$13;C4:G4)

17Светлый шок. =СУММПРО

18

Сахар

=СУММПРО

Вместо функции =если() =F13-10000*F11

19

Карамель

=СУММПРО

 

 

 

20

Орехи

=СУММПРОИЗВ($C$13:$G$13;C8:G8)

 

 

Рис. 28

Однако, такой вид функции («ступенька») совершенно не соответствует принципам линейной модели. Более того, если убрать флажок в окне «Линейная модель», задача все равно не будет решаться. Функция ЕСЛИ – это «смерть» любого алгоритма оптимизации: он обязательно «застрянет» возле этой ступеньки и оптимального решения не найдет.

Зайцев М.Г., Варюхин С.Е.

53

Для подобных случаев, существует специальный метод, позволяющий явно не использовать функцию =ЕСЛИ(..).

Для этого вместо каждой такой функции вводят одну дополнительную переменную и одно дополнительное ограничение.

Запишем в ячейке F10 величину постоянной издержки (400) для конфеты «Белка», а в ячейку F11 поместим новую переменную Y, показывающую, выпускается «Белка» или нет. Чтобы показывать нам это переменная Y будет принимать всего два значения: 0 и 1.

При этом для корректного расчета прибыли нужно написать: =СУММПРОИЗВ(C13:G13;C9:G9)-F11*F10.

Если «Белка» выпускается, то переменная Y=1, и из прибыли вычитаются 400 у.е. постоянной издержки очистки линии. Если «Белка» не выпускается, то переменная Y=0 и из прибыли не вычитается ничего.

Разумеется, без дополнительного ограничения Поиск решения заведомо не станет присваивать переменной Y значение 1, ибо это невыгодно. Поэтому запишем формулу =F13-10000*F11 , т.е. объем выпуска «Белки» - 10000 умноженное на переменную Y – и, затем, потребуем в установках Поиска решения, чтобы это выражение было не больше 0!

В этом случае, если объем выпуска «Белки» хоть как-нибудь отличается от нуля, Поиск решения сможет удовлетворить заданное ограничение, только если задаст Y=1. И 10000 здесь, это просто произвольное большое число, превышающее любой возможный (при данных ресурсах) объем выпуска конфет. В первоначальных решениях мы видели, что выпускается от 1000 до 1500 пакетов, значит, даже если будет выпускаться только одна «Белка», условие выполнится только при Y=1. Если «Белка» не выпускается и значение ячейки F13 равно нулю, то Поиск решения волен выбрать в качестве значения переменной Y и ноль, и единицу. Но при выборе в качестве цели максимума прибыли, алгоритм, конечно, и теперь уже совершенно правомерно, оставит переменную Y равной нулю.

Фактически, речь идет о том, что если оптимизационный алгоритм «согласен» положить Y = 1 и уменьшить прибыль P на величину 400 у.е., то ограничений на производство «Белки» нет. Если же, алгоритм «желает» положить Y = 0, то ему придется отказаться от производства «Белки».

Чтобы переменная Y принимала только значения 1 и 0 добавим соответствующее ограничение - «F11=двоичное». Не забудьте только перед вводом этого ограничения добавить ячейку F11 в список переменных.

Замечание.

Чтобы указать в качестве переменных несвязанные ячейки или диапазоны, нужно сначала выделить один диапазон, затем нажать на клавиатуре кнопку Ctrl и, удерживая ее, выделить второй диапазон, третий и т.д.

Итак, к нашему исходному групповому ограничению добавится еще два: новая переменная двоичная и конструкция =F13-10000*F11 в ячейке F18 меньше или равна нулю. Если вы все сделали правильно запуск Поиска решения на выполнение принесет следующий результат (Рис. 29).

На кондитерской фабрике

 

 

 

 

Продукты

 

 

 

 

Ореховый

 

 

 

 

Сырье

Запасы

звон

Райский вкус

Батончик

Белка

Ромашка

Темный шок.

1411

0,8

0,5

1

2

1,1

Светлый шок.

149

0,2

0,1

0,1

0,1

0,2

Сахар

815,5

0,3

0,4

0,6

1,3

0,05

Карамель

466

0,2

0,3

0,3

0,7

0,5

Орехи

1080

0,7

0,1

0,9

1,5

0

Прибыль

 

1

0,7

1,1

2

0,6

Постоянная издержка

 

 

 

400

 

Есть\Нет

Y=

 

 

 

0

 

 

 

Ореховый

 

 

 

 

 

 

звон

Райский вкус

Батончик

Белка

Ромашка

 

Переменные

0,00

283,66

1168,48

0,00

18,93

 

 

 

 

Цель

 

 

 

Расход

 

P=

1495,25

 

 

Темный шок.

1331,1

 

 

 

 

 

Светлый шок.

149,0

 

 

 

 

 

Сахар

815,5

 

Вместо функции =если()

0,00

<=0

Карамель

445,1

 

 

 

 

 

Орехи

1080,0

 

 

 

 

 

Рис. 29

Кроме очевидных изменений в оптимальном плане, следует отметить главное – целевая функция уменьшилась по сравнению с прежним результатом всего на 14 у.е.! Ну а если вспомнить план, в котором тоже было много «Батончика», то и вообще только на 3 у.е.

Мало этого, можно посоветовать молодому человеку напомнить отцу, что в исходном плане старого мастера так же предусматривался выпуск «Белки», стало быть прибыль была бы не 1080 у.е., а всего 680! Так что парень честно отыграл еще 400 у.е.

Возвращаясь к хитрому приему, который позволил нам обойти использование функции =ЕСЛИ(..), следует проверить, что алгоритм вообще захочет, хоть при каких-нибудь условиях включить «Белку» в план производства. Очевидно, что при достаточной прибыльности «Белки» это должно оказаться выгодным. Вот только мы теперь не имеем инструмента в виде отчета об устойчивости, который нам мог бы подсказать, сколько именно прибыльности не хватает «Белке», чтобы войти в оптимальный план. Ведь при использовании целочисленных ограничений такой отчет создать невозможно.

Придется действовать методом подбора. В первоначальном плане «Белка» производилась в количестве 504 пакетов. Значит, чтобы вернуться к этому плану, окупив постоянную издержку в 400 у.е., одной дополнительной единицы прибыльности должно хватить. И действительно, при изменении прибыльности «Белки» до 3 у.е. оптимальное решение включает эту конфету в оптимальный план почти в прежнем объеме (Рис. 30).

Зайцев М.Г., Варюхин С.Е.

 

 

 

55

 

 

 

 

 

 

 

 

Прибыль

 

1

0,7

1,1

3

0,6

 

Постоянная издержка

 

 

 

400

 

 

Есть\Нет

Y=

 

 

 

1

 

 

 

 

Ореховый

 

 

 

 

 

 

 

звон

Райский вкус

Батончик

Белка

Ромашка

 

 

Переменные

396,47

0,00

0,00

534,98

21,69

 

 

 

 

 

Цель

 

 

 

 

Расход

 

P=

1614,43

 

 

 

Темный шок.

1411,0

 

 

 

 

 

 

Светлый шок.

137,1

 

 

 

 

 

 

Сахар

815,5

 

Вместо функции =если()

-9465,02

<=0

 

Карамель

464,6

 

 

 

 

 

 

Орехи

1080,0

 

 

 

 

 

 

Рис. 30

При этом переменная Y оказывается равной 1 и из прибыли вычитаются 400 у.е. издержки очистки линии. Таким образом использованный нами прием способен не только запрещать выпуск конфет, но и разрешать его при подходящих условиях.