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

 

Требу-

 

 

 

 

 

 

 

 

 

 

Посто-

Времен

 

11-19

 

10-14

11-15

12-16

13-17

14-18

15-19

Всего

янных

ется

9-17

9-13

-ной

персо-

служащих

служа-

период

нала

 

 

 

 

 

 

 

 

 

в этот час

щих

 

 

 

 

 

 

 

 

 

 

 

 

 

9—10

16

1

 

1

 

 

 

 

 

 

18

18

10—11

30

1

 

1

1

 

 

 

 

 

30

18

11—12

31

1

1

1

1

1

 

 

 

 

55

22

12—13

45

0

1

1

1

1

1

 

 

 

45

4

13—14

66

1

1

 

1

1

1

1

 

 

66

22

14—15

72

1

0

 

 

1

1

1

1

 

72

18

15—16

61

1

1

 

 

 

1

1

1

1

61

22

16—17

34

1

1

 

 

 

 

1

1

1

53

22

17—18

16

 

1

 

 

 

 

 

1

1

32

4

18—19

10

 

1

 

 

 

 

 

 

1

10

4

Оплата

в час

8

8

6

7

9

10

8

6

6

 

4

Оплата за день

64

64

24

28

36

40

32

24

24

 

 

Временной

9-17

11-19

9-13

10-14

11-15

12-16

13-17

14-18

15-19

Целевая

Всего

период

функция

служащ

 

 

 

 

 

 

 

 

 

 

 

 

их

Количество

18

4

0

12

21

8

3

22

6

3588

94

требуемого

персонала

 

 

 

 

 

 

 

 

 

 

 

Рис. 61

 

 

 

 

 

 

 

 

 

 

 

При учете всех требований общий дневной фонд зарплаты вырастет до 3588 долларов, что на 208 долларов больше, чем при найме 108 служащих, и на 368 долларов больше, чем при найме 112 служащих.

1.П-9. Последовательность выполнения заказов

Небольшая мастерская, изготавливающая сварные изделия из листовой нержавеющей стали, перед началом недели имеет 10 заказов. В таблице приведено время, требующееся рабочим, чтобы выполнить каждый из заказов.

 

A

B

C

D

E

F

G

H

I

J

Длительность

 

 

 

 

 

 

 

 

 

 

исполнения,

 

 

 

 

 

 

 

 

 

 

часов

8

6

9

10

6

2

6

5

5

3

Мастер обычно назначает срок выполнения заказа – 5 дней со дня его поступления. Т.к. заказы поступали в разное время, то и сроки их исполнения различны: заказы А и В должны быть выполнены в течение 2 дней, С, D и E – в течение 3 дней, F, G, H, I – 4 дней, и заказ J – через 5 дней. Рабочий день в мастерской длится 8 часов (т.е. первые два заказа нужно сделать по крайней мере за 16 раб. часов и т.д. ).

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

153

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

Правило FCFS – Первый заказ, принятый исполнителем - первым и выполняется, а далее по очереди.

Правило EDD – Заказ с более ранним сроком исполнения выполняется раньше, при равенстве сроков раньше исполняют заказ с меньшей длительностью исполнения.

Правило SPT – Более короткий по времени исполнения заказ выполняется раньше, при равенстве времени работы раньше делают более срочный заказ.

Правило LPT – Так как более длительные по затратам рабочего времени заказы часто более важны, чем быстро исполняемые заказы, то начинают с самого длительного, а затем переходят к более коротким.

a.Сформируйте последовательности исполнения заказов, рекомендуемые каждым из правил.

b.Рассчитайте сроки исполнения заказов и возникающие при этом задержки для полученных последовательностей исполнения. Каковы будут суммарные задержки для каждого плана?

c.Сформулируйте задачу линейной оптимизации, которая позволяет построить план, для которого суммарные задержки исполнения заказов будут минимальны. Отличается ли оптимальный план от четырех предыдущих? На сколько удается уменьшить задержки по сравнению с лучшим из простых эмпирических планов?

Решение задачи.

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

Фактически мы должны разработать вычислительную схему, позволяющую для любой последовательности выполнения заказов рассчитать времена задержки заказов, чтобы иметь возможность построить целевую функцию.

Для начала сделаем таблицу, которая поможет строить и исследовать разные очереди выполнения заказов. Пример такой таблицы приведен ниже (Рис. 62).

Разберем подробно, как получилась такая таблица. В ячейках E3-N12 должны находиться двоичные значения. Единица в ячейке E3, например, показывает, что работа A (строка 3), будет выполняться первой по порядку (столбец E). То же самое с прочими ячейками. Разумеется, в каждом столбце, определяющем номер заказа по порядку выполнения, должна стоять только одна 1, остальные 9 ячеек должны содержать 0. Это можно учесть, просуммировав значения всех 10 ячеек каждого столбца (например, для ячейки E13 это будет формула =СУММ(E3:E12)). Формулы для ячеек F13-N13 содержат такую же формулу и получены протяжкой формулы из ячейки E13.

При правильном выборе значений в ячейках E3-N12 все ячейки E13-N13 должны содержать 1. Т.е. строка E13-N13 должна совпадать со строкой E14-N14.

Следует учесть, что каждый заказ должен быть выполнен, причем только один раз. Для учета этого требования найдем суммы ячеек по строкам с 3-ей по 12-ую. В ячейке O3 введем формулу =СУММ(E3:N3) и протянянем ее затем вниз по столбцу до ячейки O12 включительно. Значения сумм в ячейках O3-O12 должны равняться 1. В столбце P3:P12 просто записаны единицы, как и в строке

E14-N14.

 

A

 

B

C

D

 

E

F

G

H

I

J

K

L

M

N

O

P

1

 

 

 

Длитель

Срок

 

 

 

 

Порядок выполнения

 

 

 

 

 

 

 

 

исполне-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ность

ния, через

 

1

2

3

4

5

6

7

8

9

10

 

 

 

 

 

 

исполне

сколько

 

 

 

2

 

 

 

ния

дней

 

 

 

 

 

 

 

 

 

 

 

 

 

3

65

 

A

8

16

 

1

 

 

 

 

 

 

 

 

 

1

1

4

66

 

B

6

16

 

 

1

 

 

 

 

 

 

 

 

1

1

5

67

 

C

9

24

 

 

 

1

 

 

 

 

 

 

 

1

1

6

68

 

D

10

24

 

 

 

 

1

 

 

 

 

 

 

1

1

7

69

 

E

6

24

 

 

 

 

 

1

 

 

 

 

 

1

1

8

70

 

F

2

32

 

 

 

 

 

 

1

 

 

 

 

1

1

9

71

 

G

6

32

 

 

 

 

 

 

 

1

 

 

 

1

1

10

72

 

H

5

32

 

 

 

 

 

 

 

 

1

 

 

1

1

11

73

 

I

5

32

 

 

 

 

 

 

 

 

 

1

 

1

1

12

74

 

J

3

40

 

 

 

 

 

 

 

 

 

 

1

1

1

13

 

 

 

 

 

 

1

1

1

1

1

1

1

1

1

1

 

 

14

 

 

 

 

 

 

1

1

1

1

1

1

1

1

1

1

 

 

15

 

Последовательность работ

 

A

B

C

D

E

F

G

H

I

J

 

 

16

 

 

 

Длительность

8

 

6

9

10

6

2

6

5

5

3

 

 

17

Практический срок окончания

 

8

14

23

33

39

41

47

52

57

60

 

 

18

 

 

 

Обусловленный срок

16

16

24

24

24

32

32

32

32

40

 

 

19

 

 

 

 

 

8

 

2

1

-9

-15

-9

-15

-20

-25

-20

-113

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

21

 

 

 

 

 

 

 

 

 

 

 

Суммарное время задержки

 

Рис. 62

Приведенный в таблице (Рис. 62) вариант значений двоичных чисел в ячейках E3-N12 удовлетворяет всем критериям и, следовательно, показывает допустимый порядок выполнения заказов. Более того, он соответствует правилу FCFS – выполнение в порядке поступления заказов.

Чтобы найти длительность заказа, выполняемого первым, следует использовать функцию =СУММПРОИЗВ( ). При этом нужно умножить столбец длительностей работы С3-С12 на столбец двоичных переменных E3-E12. Полученная для ячейки E16 формула: =СУММПРОИЗВ($C$3:$C$12;E3:E12). Протягивая эту формулу вдоль строки 16 до ячейки N16, получим длительности всех заказов по порядку их выполнения. Эти длительности помогут нам вычислить срок завершения каждого из заказов.

В самом деле, срок завершения первого по порядку выполнения заказа равен его длительности. Так как выполнение следующего заказа начинается

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

155

только после завершения предыдущего, срок завершения второго по порядку выполнения заказа равен сроку завершения первого плюс длительность второго. Это и отражено в формулах, записанных в ячейках E17 (=E16) и F17 (=E17+F16). Формула из ячейки F17 протянута вдоль строки до ячейки N17. Поэтому в ячейке N17 подсчитан срок завершения всех 10 заказов (в часах). Проверьте, что он равен 60 часам, как и должно быть.

Конечно, в данной задаче нас интересует не это. Нам нужно знать, насколько мы запоздали (или нет) с выполнением заказа.

Для этого подсчитаем договорные сроки выполнения для каждого из заказов по порядку их выполнения. Так как в ячейках D3-D12 таблицы (Рис. 62) записаны эти договорные сроки, то мы можем, так же как и при расчете длительностей заказов использовать функцию =СУММПРОИЗВ( ). Но в данном случае будем умножать столбец D3-D12 на столбцы двоичных переменных (формула =СУММПРОИЗВ($D$3:$D$12;E3:E12) для ячейки E18). Результат показан в ячейках E18-N18.

Так как в строке E18-N18 записаны договорные сроки выполнения для каждого заказа, а в строке E17-N17 – реальные, соответствующие данной комбинации двоичных чисел в ячейках E3-N12, то их разность покажет, есть ли опоздание с выполнением заказа или нет. Эти разности для всех заказов по порядку их выполнения записаны в ячейках E19-N19 (формула для ячейки E19: =E18-E17).

Если разность положительна или 0, заказ сделан раньше срока, или точно в срок. Если разность отрицательна, есть опоздание. В MS Excel есть функция, позволяющая автоматически подсчитать сумму этих опозданий. Это функция может быть записана следующим образом

=СУММЕСЛИ (E19:N19;”<0”;E19:N19)

Она означает, что нужно просуммировать значения тех из ячеек с E19 по N19, для которых выполняется условие: “значение < 0”.

Кроме этого, хоть и необязательно, но желательно для лучшего представления информации заставить MS Excel показать названия работ по порядку их выполнения. В нашей таблице показаны эти названия, в строке Последовательность работ (E15-N15). Для того, чтобы автоматизировать получение такой строки использованы функции вида =КОДСИМВ(B3) (ячейка A3), показывающая цифровой код для символа, находящегося в ячейке B3, и =СИМВОЛ( СУММПРОИЗВ($A$3:$A$12;E3:E12)) (ячейка E15)– сначала вычисляющая код работы, по произведению столбца кодов на столбец двоичных переменных, а затем возвращающая сам символ (букву), соответствующий выбранной работе. Столбец A3-A12 содержит функции =КОДСИМВ( B3), …, =КОДСИМВ(B12).

В строке E15-N15 формула =СИМВОЛ(СУММПРОИЗВ($A$3:$A$12;E3:E12)) протянута из ячейки E15 до ячейки N15.

Полученный в результате нашей работы результат, отраженный на Рис. 62, соответствует, как мы уже заметили, случаю выполнения заказов в порядке их поступления – FCFS первый вошел – первым обслужен.

Суммарное время задержки при этом получается 113 часов.

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

для каждого случая, отметим только, что в построенной нами таблице это делать очень удобно, просто изменяя данные в ячейках E3:N12. А результаты таких расчетов для всех правил приведены в следующей сводной таблице (Рис. 63):

Правило

Время

Порядок выполнения

 

 

 

 

 

 

задержки

 

 

 

 

 

 

 

 

 

 

FCFS

-113

A

B

C

D

E

F

G

H

I

J

EDD

-115

F

J

H

E

G

I

D

C

B

A

SPT

-107

B

A

E

C

D

F

H

I

G

J

LPT

-143

D

C

A

B

E

G

H

I

J

F

Рис. 63

А теперь нужно найти оптимальный порядок выполнения заказов. Чего же нам для этого не хватает?

На самом деле почти все есть, ведь и саму таблицу мы строили, предполагая ее использование для надстройки Поиск решения. Единственное, чего мы не знаем, это как подсчитать суммарное время задержки без использования нелинейной функции =СУММЕСЛИ( ).

Здесь следует отметить, что функции =КОДСИМВ( ) и =СИМВОЛ( ) мы также не можем использовать в линейной задаче. Но ведь мы их использовали только для иллюстрации результатов, в расчете времени задержки они не участвуют, поэтому надстройка Поиск решения просто не обратит на них внимания. А их итоговые значения пересчитает Excel после выдачи данных

Поиском решения.

Для того, чтобы обойти использование нелегитимной в линейной оптимизации функции =СУММЕСЛИ( ) введем дополнительные переменные. (Это, как вы могли бы заметить, вполне стандартный прием.). Расположим эти дополнительные переменные для удобства в ячейках E20-N20. Добавим их в список переменных. В ячейке O20 сложим все их значения с помощью функции =СУММ(E20:N20). И скажем, что это – целевая функция!

Теперь заполним задание для Поиска решения. Целевая функция – O20. Переменные – E3:N12;E20:N20.

Очевидные ограничения: переменные E3:N12 = двоичное, E13:N13 = E14:N14 – одновременно выполняется только одна работа, O3:O12 = P3:P12 – каждый заказ выполнен один раз, линейная модель.

Неочевидные ограничения: переменные E20:N20 <= E19:N19, E20:N20 <=

0.

При этом мы будем искать максимум целевой функции, так как задержки у нас отрицательные.

В этом случае Поиск решения в стремлении к максимуму присвоит переменным E20:N20 самые большие значения в рамках поставленных ограничений. Т.е. либо 0, если задержки нет и число в соответствующей ячейке строки 19 положительно или равно 0, либо величину задержки, если число в строке 19 отрицательно. В общем, в строке 20 мы получим правильные времена задержек!

Таким образом задача линейной оптимизации нами сформулирована полностью, осталось только запустить Поиск решения на выполнение.

В результате мы получим следующее решение

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

 

157

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Прави

Время

 

 

 

 

 

 

 

 

 

 

 

 

задерж

 

 

 

Порядок выполнения

 

ло

ки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Оптим

-69

 

F

B

A

E

I

H

G

J

C

D

 

альное

 

 

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