Имитационная модель производственного предприятия

Рассмотренный в предыдущем параграфе пример имитационной модели GPSS является простейшим. Для построения более сложных имитационных моделей необходимо использовать такие дополнительные элементы, как собственные переменные (V$ имя переменной), ячейки, функции (FUNCTION), переходы к меткам (TRANSFER), процедуры на языке PLUS и др.

Далее рассматривается пример реализации системы массового обслуживания в среде GPSS World.

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

  • • производственная линия 1: изготовление продукции первого вида (Line 1);
  • • производственная линия 2: изготовление продукции второго вида (Line'L) из продукции первого вида;
  • • производственная линия 3: изготовление продукции третьего вида (Line'S) из продукции второго вида.
Схема построения имитационной модели производственного предприятия

Рис. 10.7. Схема построения имитационной модели производственного предприятия

Продукты второго вида представляют собой переработку продуктов первого вида, а продукты третьего вида — переработку продуктов второго вида.

Известными характеристиками в модели являются:

  • • объем сырья, подаваемого на вход первой производственной линии — s;
  • • время, необходимое на изготовление одной единицы продукции в каждой производственной линии (т^ т2, т3), и общий лимит времени Г;
  • • затраты на изготовление единицы продукции, зависящие от объема производства (бДх,), Ь22), Ь:>1(х-Л))
  • • постоянные производственные затраты (ct, с2, с3);
  • • стоимость единицы конечной продукции и р2, р3).

Необходимо составить оптимальный план выпуска продукции

и х2, х3) и промежуточного потребления (г/12, г/23), при котором прибыль будет максимальна при ограничении на общее время выпуска (табл. 10.1). Допущением модели является неограниченный спрос (т.е. предполагается, что вся выпускаемая продукция будет реализована).

Таблица 10.1

Ключевые характеристики имитационной модели производственного предприятия

Количество

единиц

продукции

Стоимость изготовления единицы продукции, зависящая от объема производства

Постоянные

производственные

затраты

Стоимость

единицы

конечной

продукции

Время изготовления единицы продук- ции

Количество

единиц

промежуточной

продукции

р2

Рз

*i

*i(*i)

ci

р

#12*1

-

*2

thix-i)

с2

Pi

*2

-

#23*2

*3

Ь3(хз)

с3

Рз

Т3

-

-

Имеется следующая система ограничений:

При выполнении условий суммарная прибыль составит

Сформулируем постановку задачи.

Задача. Найти такой план выпуска продукции Х = (х1; х2, х3) и промежуточного потребления Y = {уп23), удовлетворяющий системе (10.1) и условию (10.2), при котором функция (10.3) принимает максимальное значение.

Далее рассмотрим реализацию модели (10.1) — (10.3) в системе имитационного моделирования GPSS World.

Вначале необходимо инициализировать значения искомых параметров модели: плана выпуска продукции (xj, х2, х3) и промежуточного потребления (г/12, г/гз), а также функции прибыли {Profit) и общего времени, затрачиваемого на производство продукции {Time):

INITIAL X$VX 1,1 INITIAL X$VX2,1 INITIAL X$VX3,1 Y12 EQU 0.5 Y23 EQU 0.5 INITIAL X$Profit,0 INITIAL X$Time,0

Здесь VX1, VX2, VX3 — это план выпуска продукции (xt, х2, х3), а У12 и У23 — промежуточное потребление. При этом У12 и У23 являются управляющими параметрами системы. Поэтому они инициированы с помощью специального оператора EQU (определить эквивалетность).

Вначале зададим функции переменных затрат {Ь{х{), /?22), 633)) на некоторых фиксированных интервалах значений объемов продукции:

* для продукции первого вида B1 FUNCTION X$VX1,C11

  • 0.0,0.0/1.0,1000.0/2.0,1900.0/3.0,2500.0/4.0,4200.0/5.0,4500/6.0,5000.0/
  • 7.0. 6000.0/8.0,7000.0/9.0,7000.0/10.0,7000.0

* для продукции второго вида В2 FUNCTION X$VX2,C11

  • 0.0,0.0/1.0,2000.0/2.0,3900.0/3.0,5500.0/4.0,6200.0/5.0.8000.0/6.0,9000.0/
  • 7.0. 10000.0/8.0,10000.0/9.0,10000.0/10.0,10000.0

* для продукции третьего вида ВЗ FUNCTION X$VX3,C11

  • 0.0,0.0/1.0,3000.0/2.0,5900.0/3.0,8000.0/4.0,10000.0/5.0,12000.0/6.0,15000.0/
  • 7.0. 18000.0/8.0,18000.0/9.0,18000.0/10.0,18000.0

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

* дискретная числовая {D);

* непрерывная числовая (С);

  • • табличная числовая (L);
  • • дискретная атрибутивная (?);
  • • табличная атрибутивная (М).
Пример зависимости переменных затрат от объема продукции

Рис. 10.8. Пример зависимости переменных затрат от объема продукции

Соответственно, в рассматриваемой модели для построения функций переменных затрат применяются непрерывные числовые фикции (С).

Далее в программе GPSS задаются значения постоянных издержек:

* Постоянные затраты на продукцию

VC1 FVARIABLE 500.0

VC2 FVARIABLE 700.0

VC3 FVARIABLE 900.0

Здесь VC 1, VC2, VC3 — это переменные постоянных производственных затрат модели {, с2, с3), принимающие значения 500, 700, 900 соответственно. Отметим, что в системе GPSS поддерживаются различные типы переменных, в частности использование FVARIABLE позволяет создавать переменные вещественного типа, a VARIABLE — переменные целого типа. Также поддерживаются логические (булевы) переменные.

Отметим, что в GPSS также можно использовать константы, задавая их с помощью следующего синтаксиса:

N EQU Л

где N — имя объекта GPSS или константы; EQU — параметр эквивалентности; А — числовое значение константы.

При этом к'онстанта, так же как и переменная, может быть вещественного типа. Отличие констант от переменных заключается в том, что значения последних могут быть переопределены в программе GPSS. Поэтому если такие важные характеристики модели, как производственные затраты, цены на продукцию и др., в дальнейшем станут вариативными, то целесообразнее их задавать с помощью переменных типа FVARIABLE, а другие характеристики модели, которые точно останутся постоянными, например время изготовления единицы продукции, лучше задавать с помощью констант параметром EQU.

Далее задаются значения цен на продукцию:

*Цены на продукцию

VP1 FVARIABLE 2000.0

VP2 FVARIABLE 4000.0

VP3 FVARIABLE 5000.0

Здесь VP 1, VP2, VP3 — это цены на выпускаемую продукцию (Pl. Ръ Pi)-

Следует отметить, что использование операции INITIAL позволяет создать и инициализировать значения так называемых ячеек. Ячейки сохраняемых величин, а также матрицы используются для хранения некоторой пользовательской числовой информации, запись в эти объекты выполняют транзакты. Записанную в этих объектах информацию может считывать любой транзакт. Таким образом, данные объекты являются глобальными и доступны из любой части модели. Отметим, что в дальнейшем для записи значений в ячейки, в том числе в рамках оптимизационного эксперимента, можно использовать блоки SDECREMENT и SINCREMENT, а также SAVEVALUE. Блок SDECREMENT вычитает заданное значение из величины, содержащейся в ячейке. Блок SINCREMENT добавляет требуемое приращение к содержимому ячейки. Блок SAVEVALUE обеспечивает запись в ячейку произвольных данных.

Также с помощью параметров эквивалентности задается время изготовления единицы продукции:

VT1 EQU 10

VT2 EQU 20

VT3 EQU 15

и общий лимит времени Т

VT EQU 100

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

GENERATE(NORMAL( 1,2,1 ))„„ 1

Данный блок обеспечит формирование некоторого количества сырья в диапазоне от 1 до 3 единиц продукции в час в соответствии с нормальным законом распределения.

Далее при использовании блок QUEUE транзакты сырья помещаются в очередь первой производственной линии Line 1. С выхода первой производственной линии часть транзактов (продукции первого вида) поступает на вторую производственную линию Line2, а другая часть продукции продается конечным потребителям. С выхода второй производственной линии Line2 часть транзактов (продукции второго вида) поступает на третью производственную линию Line3, а другая часть продукции продается конечным потребителям. При этом в блоке с меткой SALE рассчитываются прибыль предприятия и время, затрачиваемое на производство:

* Генерация потока транзактов (потока сырья на первую производственную линию)

GENERATE (NORMAL(l,2,l))„„l

* Расчет времени, затрачиваемого на производство

SALE SAVEVALUE Time,(X$VX1#V$VTl+X$VX2#V$VT2+X$VX3 #V$VT3)

SAVEVALUE

* Проверка выполнения модельных ограничений PROVERKA,(RESTRICTS((X$VXl#VTl+X$VX2#VT2+X$VX3#VT3),

VT,Y12,Y23))

* Расчет прибыли предприятия

PRIB FVARIABLE (X$VX1#(1-Y12)#V$VP1 + X$VX2#(1-Y23) #V$VP3 + X$VX3#V$VP3-X$VX1#FN$B1-X$VX3#FN$B3- (V$VC1+V$VC2+V$VC3))

*Сохранение значения прибыли предприятия в ячейке PROFIT

SAVEVALUE PROFIT,VSPRIB

^Первая производственная линия

QUEUE Linel

SEIZE Linel

DEPART Linel

ADVANCE VSVTl

RELEASE Linel

*Передача одной части транзактов на вторую производственную линию и другой части транзактов конечному потребителю TRANSFER Y12,SALE,L2

* Вторая производственная линия L2 QUEUE Line2

SEIZE Linc2 DEPART Line2 ADVANCE V$VT2 RELEASE Line2

* Передача одной части транзактов на третью производственную линию и другой части транзактов конечному потребителю

TRANSFER Y23,SALE,L3

*Третья производственная линия L3 QUEUE Linc3 SEIZE Line3 DEPART Line3 ADVANCE VSVT3 RELEASE Line3 TERMINATE 1

Для проверки данных ограничений можно использовать специальную процедуру, написанную на языке PLUS. Язык PLUS представляет собой мощный язык программирования, возможности которого можно использовать практически в любой точке модели GPSS World. Процедуры PLUS должны быть определены до их использования в программе GPSS. Определение происходит внутри команды PROCEDURE, а использование — путем помещения вызовов процедуры в выражения. Каждая процедура PLUS начинается с имени процедуры и формального списка аргументов. Под списком, как правило, подразумевается некоторое количество имен, определяющих, как будут использоваться аргументы, передаваемые при вызове процедуры. Каждый такой аргумент называется «актуальным параметром», при этом он может представлять собой сложное выражение, обрабатываемое в момент вызова процедуры. В таком случае в качестве «формального аргумента», определенного при объявлении процедуры, используется результат обработки данного выражения. Итоговое значение каждого аргумента определяется его позицией в списке параметров.

Итак, для проверки модельных ограничений в рассматриваемом примере используется следующая процедура:

PROCEDURE RESTRICTS(Argl, Arg2, Arg3, Arg4) BEGIN IF ((Argl <= Arg2) ‘AND’ (Arg3 >= 0) ‘AND’ (Arg4 >=0 ) ‘AND’ (Arg3 <= 1) ‘AND’ (Arg4 <= 1)) THEN BEGIN RETURN 1;

END;

ELSE BEGIN RETURN 0;

END;

END;

Данная процедура возвращает 1, если все ограничения выполнены, и 0 в противном случае. В данном примере аргументами процедуры являются:

  • Arg — общее время производства продукции + х2т2 + + x3x3);
  • Arg2 — лимит времени на производство продукции (7);
  • Arg3, ArgA — промежуточное потребление (уу12, г/23).

INITIAL XSVX1.1 INITIAL X$VX2,1 INITIAL X$VX3,1 Y12 EQU 0.5 Y23 EQU 0.5 INITIAL XSPROFIT.O INITIAL X$Time,0 INITIAL X$PROVERKA,0 B1 FUNCTION X$Y?X1,CI 1

  • 0.0,0.0/1.0,1000.0/2.0,1900.0/3.0,2500.0/4.0,4200.0/5.0,4000/6.0,5000.0/
  • 7.0. 6000.0/8.0,5000.0/9.0,5000.0/10.0,5000.0

* для продукции второго вида 132 FUNCTION X$VX2,C11

  • 0.0,0.0/1.0,2000.0/2.0.3900.0/3.0,5500.0/4.0,4200.0/5.0,8000.0/6.0,10000.0/
  • 7.0. 9000.0/8.0,9000.0/9.0,9000.0/10.0,9000.0

* для продукции третьего вида ВЗ FUNCTION X$VX3,C11

  • 0.0,0.0/1.0,3000.0/2.0,5900.0/3.0,8000.0/4.0,1000.0/5.0,12000.0/6.0,15000.0/
  • 7.0. 18000.0/8.0,18000.0/9.0,18000.0/10.0,18000.0 *Постоянные затраты на продукцию

VC1 FVARIABLE 500.0 VC2 FVARIABLE 700.0 VC3 FVARIABLE 900.0 *Цены на продукцию VP1 FVARIABLE 2000.0 VP2 FVARIABLE 4000.0 VP3 FVARIABLE 5000.0 VT1 FVARIABLE 10 VT2 FVARIABLE 20 VT3 FVARIABLE 15 VT FVARIABLE 100

PROCEDURE RESTRICTS(Arg1,Arg2,Arg3,Arg4) BEGIN IF ((Argl<=Arg2) ‘AND’ (Arg3>=0) ‘AND’ (Arg4>=0) ‘AND’ (Arg3<=l) ‘AND’ (Arg4<=l)) THEN BEGIN RETURN 1;

END;

ELSE BEGIN RETURN 0;

END;

END;

GENERATE (NORMAL( 1,2,1 ))„„1

SALE SAVEVALUETime,(X$VXl#V$VTl+X$VX2#V$VT2+X$VX3 #V$VT3)

SAVEVALUE PROVERKA,(RESTRICTS((X$VXl#V$VT1+X$VX2# V$VT2+X$VX3#V$VT3),V$YT,Y12,Y23))

PRIB FVARIABLE (X$VX1#(1-Y12)#V$VP1+X$VX2#(1-Y23)# V$VP3+X$VX3#V$VP3-X$VX1 #FN$B1 -X$VX3#FNSB3-(V$VC1 + V$VC2+V$VC3))

SAVEVALUE PROFIT,VSPRIB

* Первая производственная линия QUEUE Linel

SEIZE Linel DEPART Linel ADVANCE V$VT1 RELEASE Linel TRANSFER Y12,SALE,L2

* Вторая производственная линия L2 QUEUE Line2

SEIZE Line2 DEPART Line2 ADVANCE V$VT2 RELEASE Line2 TRANSFER Y23,SALE,L3 *Третья производственная линия L3 QUEUE Line3 SEIZE Linc3 DEPART Line3 ADVANCE V$VT3 RELEASE Line3 TERMINATE 1

Результаты симуляции в виде отчета представлены на рис. 10.9.

Отчет о выполнение имитационной модели производственного предприятия

Рис. 10.9. Отчет о выполнение имитационной модели производственного предприятия

На рис. 10.9 можно видеть, что при заданных значениях плана выпуска (VX1, VX2, VX3), промежуточного потребления (VY12, VY23) и др. значение прибыли PROFIT = 2400 уел. ед. При этом все ограничения выполнены (PROVERKA = 1) и транзакты проходят через все производственные линии (LINE 1, LINE2, LINE3).

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

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >