Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач(Романов)Новичихин.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
98.14 Кб
Скачать

2.2. Имитационное моделирование (gpss)

GPSS (англ. General Purpose Simulation System — общецелевая система моделирования) — язык программирования, используемый для имитационного моделирования различных систем, в основном систем массового обслуживания.

Программа моделирования на языке GPSS:

************************Исходные данные**************************************

*-------------Описание структуры-----------------------------------

Sklad STORAGE 800 ;Емкость склада: min=2хQхW_oper/Emk_jas= 2х1000x6/15=800 (ячеек под ящики и паллеты)

Nak0_zag STORAGE 1 ;Емкость входного порта склада(ячеек под ящики с заготовками)

Nak0_det STORAGE 1 ;Емкость выходного порта склада(ячеек под ящики с готовыми дет.)

Nak1 STORAGE 1 ;Емкость выходного(готовых деталей)накопителя РП1(ячеек под паллеты)

Nak2 STORAGE 2 ;

Nak3 STORAGE 2 ;

Nak4 STORAGE 5 ;

Nak5 STORAGE 2 ;

Nak6 STORAGE 2 ;

*-------------Показ-ли назн.-----------

T_mod EQU 240000 ;Т моделирования =Тф =4000 ч

t_Tr_min EQU 1.5 ;Минимально возможное вр.цикла(рейс в оду сторону)тележки:2t_пер+t_езды_min)]= 1,5 мин

t_Tr EQU 0.9 ;Ср.приращение вр.цикла тележки (t_езды_ср-t_езды_min )]= 2,4-1,5=0,9 мин.

t_Kran EQU 1 ;Вр.цикла КШ склада (забрать или выдать)t_скл= 1 мин

N_zajav EQU 4000 ;Кол. заявок-паллет от каждого источника-РП = N/Q_tr = 60000/15=4000

Q_tr EQU 15 ;Р-р тр.партии, может совпадать с емкостью тр.оснастки

Q_jas EQU 66 ;Р-р партии в пересчете на ящики (Q/Emk_jas=1000/15=66)

*t_Tel EQU 2.4 ;Вр.цикла тр.тележки: перегр+туда+там+обратно+перегр

*T_post EQU 74.3 ;Ср.периодичность пост.заявок:[(t_маш+t_уст)хQ_tr+(t_тр+t_скл)]+(t_тр+t_скл)]=[(0,71+0,2)15+(2+2)]+(2+2)]=21,65 мин

*T_post EQU 151.5 ;Ср.периодичность пост.заявок:(t_маш/Кмаш)хQ_tr=(0,71/0,363)15=29,3мин

*-------------Время машинное tмаш-------------------------

T_1 EQU 2.32 ;Вр.t_маш

T_2 EQU 1.52 ;

T_3 EQU 6 ;

T_4 EQU 6 ;

T_5 EQU 0.19 ;

T_6 EQU 1 ;пост ОТК

T_0 EQU 0.016 ;порт склада внешний: t_пер/Q_tr=0,25/15=0,016, всего 2х4000 ящиков (отдельно заполнение партии заготовок и отд.освобож.от партии дет.)

*-------------Показатели надежности РП основных операций-------------------------

t_otk2 EQU 6000 ;Вр.наработки на отказ РП2 по сумме маш.вр.(100 ч). Учитываем имитационно

*t_otk1 EQU 6000 ;Для этой и ост. РП пока не используем. Учтено расчетно в T_post(i)через Кз(i), включающего Крем(i)

t_rem2 EQU 300 ; вр. ремонта РП2 (5 ч)

*t_rem1 EQU 300

;-------------Подготовка расчетных ИД-------

T_post1 FVARIABLE ((T_1)#Q_tr)/0.5 ;Ср.вр.между поступлением заявок-палет = tмаш(i)xQ_тр/Кз(i) = 2,32x15/0,7=49 мин

T_post2 FVARIABLE ((T_2)#Q_tr)/0.8 ;1,52x15/0.8=28

T_post3 FVARIABLE ((T_3)#Q_tr)/0.7 ;6x15/0,64=140

T_post4 FVARIABLE ((T_4)#Q_tr)/0.64 ;6x15/0,64=140

T_post5 FVARIABLE ((T_5)#Q_tr)/0.3 ;0,19x15/0,3=9,5

T_post6 FVARIABLE ((T_6)#Q_tr)/0.28 ;0.5x15/0,28=44.64

*T_post0 FVARIABLE ((T_0)#Q_tr)/0.17 ;0,016x15/0,17=1.4,

;Тпост.ср =67,4

*-------------Начальное состояние--------------------------------------

INITIAL X$N_zajav0,0 ;Тек.кол.выполненных заявок (Qт,паллет,ящиков) РП0, в год.плане Max=4000

INITIAL X$N_zajav1,0 ;Max=8000 (1600-прием заг.+1600-выдача дет.)

INITIAL X$N_zajav2,0 ;Max=4000

INITIAL X$N_zajav3,0 ;Max=4000

INITIAL X$N_zajav4,0 ;Max=4000

INITIAL X$N_zajav5,0 ;Max=4000

INITIAL X$N_zajav6,0 ;Max=4000

INITIAL X$T_nar2,0 ;Сумм.вр.маш.работы РП2 после последнего отказа (текущая наработка)

INITIAL X$Tt_otk2,t_otk2 ;Вр.,через которое откажет РП2

*-------------Изм.базы генерации для опр.дисперсии результатов и з-на распред.---------

N_G EQU 1 ;начальный № всех генераторов

************************Сегмент остановки моделирования***********************************

*-------------Задание вр. моделирования----------------------------

GENERATE T_mod

*-------------Расчет производных результатов после остановки моделирования---

* SAVEVALUE K_ocer2,(SR$Nak3/1000) ;К-т простоя в очереди для источника-РП3 - дублирование отчета

*-------------Окончание моделирования----------------------------

TERMINATE 1

START 1

************************Сегмент основной - генерация заявок-паллет *************

*-----------------------РП0(порт склада внешний)---------------------

*-------------Сегмент потока партий (внешнее заполнение и изъятие из склада)-----------------------

GENERATE (Exponential(N_G,0,4000)),0,1,60,1 ;Tф*60/N*Q=4000*60/60000*1000=4000 мин,принимаем 4000, т.е.14 раз в день, загр. и выгр. партий за раз.

*SPLIT (Q_jas-1),Met0 ;Генерация кол.ящиков для данной партии, всего с родителем 15 ящиков

Met0 ENTER Nak0_zag

ADVANCE ((T_0)#Q_tr) ;Вр.перегрузки ящика в накопитель порта склада 0,01x15=0,15

QUEUE Ocer_TNS

SEIZE Kran

DEPART Ocer_TNS

ADVANCE t_Kran

LEAVE Nak0_zag

ENTER Sklad ;Поместить ящик с заг. в склад

RELEASE Kran

SAVEVALUE N_zajav0+,1

TEST NE X$N_zajav0,(N_zajav#2),Stop0

GATHER Q_jas

QUEUE Ocer_TNS

SEIZE Kran

DEPART Ocer_TNS

ADVANCE t_Kran

LEAVE Sklad ;Удалить ящик с готовыми дет.из склада

ENTER Nak0_det

RELEASE Kran

ADVANCE ((T_0)#Q_tr)

LEAVE Nak0_det ;

SAVEVALUE N_zajav0+,1

TEST NE X$N_zajav0,(N_zajav#2),Stop0

ASSEMBLE Q_jas

TERMINATE

Stop0 SAVEVALUE T_stop0,AC1

TERMINATE

*-----------------------РП1(ток)-------------------------------------

GENERATE ,,,4000,1

Metka1 ADVANCE (Exponential(N_G,0,V$T_post1))

ENTER Nak1

QUEUE Ocer_TNS

SEIZE Telegka

SEIZE Kran

DEPART Ocer_TNS

ADVANCE ((Exponential(N_G,t_Tr_min,t_Tr))#2)

ADVANCE (t_Kran#2)

LEAVE Nak1

RELEASE Telegka

RELEASE Kran

SAVEVALUE N_zajav1+,1

TEST NE X$N_zajav1,N_zajav,Stop1

*SPLIT 1,Metka1

TERMINATE

Stop1 SAVEVALUE T_stop1,AC1

TERMINATE

*-----------------------РП2(ток)-------------------------------------

GENERATE ,,,4000,1

Metka2 ADVANCE (Exponential(N_G,0,V$T_post2))

ENTER Nak2

QUEUE Ocer_TNS

SEIZE Telegka

SEIZE Kran

DEPART Ocer_TNS

ADVANCE ((Exponential(N_G,t_Tr_min,t_Tr))#2)

ADVANCE (t_Kran#2)

LEAVE Nak2

RELEASE Telegka

RELEASE Kran

SAVEVALUE N_zajav2+,1

TEST NE X$N_zajav2,N_zajav,Stop2

*SPLIT 1,Metka2

TERMINATE

Stop2 SAVEVALUE T_stop2,AC1

TERMINATE

*-----------------------РП3(зубонарез)- ЛИМИТИРУЮЩАЯ------------------------------------

GENERATE ,,,3999,1 ;Генерация кол.объектов, выставляющих заявки и приоритета

SAVEVALUE T_post3,V$T_post3 ;Перевод пер. в сохраняемую

ENTER Nak3

Metka3 ADVANCE (Exponential(N_G,0,V$T_post2)) ;Обработка на РП

*-------------Отказы---------------

SAVEVALUE T_nar3+,(T_3#Q_tr) ;Для учета фактора отказов

TEST GE X$T_nar3,X$Tt_otk3,Met3 ;Проверка: РП3 уже должена отказать?

SEIZE Remontnik

ADVANCE (Exponential(N_G,0,t_rem2))

RELEASE Remontnik

SAVEVALUE T_nar3,0 ;Обнуление счетчика вр. после последнего отказа

SAVEVALUE Tt_otk3,(Exponential(N_G,0,t_otk2));Расчет нового значения вр.будущего отказа

*----------------------------------

Met3 QUEUE Ocer_TNS

SEIZE Telegka

SEIZE Kran ;

DEPART Ocer_TNS

ADVANCE ((Exponential(N_G,t_Tr_min,t_Tr))#2)

ADVANCE (t_Kran#2)

LEAVE Nak3

RELEASE Telegka

RELEASE Kran

*-------------Проверка на выполнение программы---------------

SAVEVALUE N_zajav3+,1

TEST NE X$N_zajav3,N_zajav,Metka3

SAVEVALUE T_stop3,AC1

TERMINATE

*-------------Замыкание потока-------

Cikl2 SPLIT 1,Metka3 ;Порождение от заявки-родителя (1 шт) доп.копий (1 шт)

TERMINATE

*-----------------------РП3(долб)--------

GENERATE ,,,4000,1

ENTER Nak4

Metka4 ADVANCE (Exponential(N_G,0,V$T_post4))

QUEUE Ocer_TNS

SEIZE Telegka

SEIZE Kran

DEPART Ocer_TNS

ADVANCE ((Exponential(N_G,t_Tr_min,t_Tr))#2)

ADVANCE (t_Kran#2)

LEAVE Nak4

RELEASE Telegka

RELEASE Kran

SAVEVALUE N_zajav4+,1

TEST NE X$N_zajav4,N_zajav,Stop4

*SPLIT 1,Metka4

TERMINATE

Stop4 SAVEVALUE T_stop4,AC1

TERMINATE

*-----------------------РП3(щлиф)--------

GENERATE ,,,4000,1

ENTER Nak5

Metka5 ADVANCE (Exponential(N_G,0,V$T_post5))

QUEUE Ocer_TNS

SEIZE Telegka

SEIZE Kran

DEPART Ocer_TNS

ADVANCE ((Exponential(N_G,t_Tr_min,t_Tr))#2)

ADVANCE (t_Kran#2)

LEAVE Nak5

RELEASE Telegka

RELEASE Kran

SAVEVALUE N_zajav5+,1

TEST NE X$N_zajav5,N_zajav,Stop5

*SPLIT 1,Metka5

TERMINATE

Stop5 SAVEVALUE T_stop5,AC1

TERMINATE

*-----------------------РП6(пост ОТК)-------------------------------------

GENERATE ,,,4000,1

Metka6 ADVANCE (Exponential(N_G,0,V$T_post6))

ENTER Nak6

QUEUE Ocer_TNS

SEIZE Telegka

SEIZE Kran

DEPART Ocer_TNS

ADVANCE ((Exponential(N_G,t_Tr_min,t_Tr))#2)

ADVANCE (t_Kran#2)

LEAVE Nak6

RELEASE Telegka

RELEASE Kran

SAVEVALUE N_zajav6+,1

TEST NE X$N_zajav6,N_zajav,Stop6

*SPLIT 1,Metka6

TERMINATE

Stop6 SAVEVALUE T_stop6,AC1

TERMINATE

Результаты программы:

GPSS Мировое Сообщение о Моделировании - Романов.916.1

Sunday, May 26, 2013 20:28:04

ВРЕМЯ ОКОНЧАНИЯ ВРЕМЕНИ НАЧАЛА БЛОКИРУЕТ УСЛУГИ STORAGES

0.000 240000.000 141 3 9

НАЗВАНИЕ ОЦЕНИВАЮТ

CIKL2 89.000

KRAN 10043.000

MET0 4.000

MET3 76.000

METKA1 32.000

METKA2 49.000

METKA3 68.000

METKA4 93.000

METKA5 110.000

METKA6 126.000

NAK0_DET 10002.000

NAK0_ZAG 10001.000

NAK1 10003.000

NAK2 10004.000

NAK3 10005.000

NAK4 10006.000

NAK5 10007.000

NAK6 10008.000

N_G 1.000

N_ZAJAV 4000.000

N_ZAJAV0 10031.000

N_ZAJAV1 10032.000

N_ZAJAV2 10033.000

N_ZAJAV3 10034.000

N_ZAJAV4 10035.000

N_ZAJAV5 10036.000

N_ZAJAV6 10037.000

OCER_TNS 10041.000

Q_JAS 66.000

Q_TR 15.000

REMONTNIK 10046.000

SKLAD 10000.000

STOP0 29.000

STOP1 46.000

STOP2 63.000

STOP4 106.000

STOP5 123.000

STOP6 140.000

TELEGKA 10042.000

TT_OTK2 10039.000

TT_OTK3 10045.000

T_0 0.016

T_1 2.320

T_2 1.520

T_3 6.000

T_4 6.000

T_5 0.190

T_6 1.000

T_KRAN 1.000

T_MOD 240000.000

T_NAR2 10038.000

T_NAR3 10044.000

T_OTK2 6000.000

T_POST1 10025.000

T_POST2 10026.000

T_POST3 10027.000

T_POST4 10028.000

T_POST5 10029.000

T_POST6 10030.000

T_REM2 300.000

UNSPECIFIED

T_STOP1 10052.000

T_STOP2 10048.000

T_STOP3 10047.000

T_STOP4 10051.000

T_STOP5 10050.000

T_STOP6 10049.000

T_TR 0.900

T_TR_MIN 1.500

МАРКИРУЮТ СЧЕТ RETRYN ПОТОКА СЧЕТА ВХОДА ТИПА БЛОКА МЕСТОПОЛОЖЕНИЯ 1 GENERATE 1 0 0

2 TERMINATE 1 0 0

3 GENERATE 60 0 0

MET0 4 ENTER 60 0 0

5 ADVANCE 60 0 0

6 QUEUE 60 0 0

7 SEIZE 60 0 0

8 DEPART 60 0 0

9 ADVANCE 60 0 0

10 LEAVE 60 0 0

11 ENTER 60 0 0

12 RELEASE 60 0 0

13 SAVEVALUE 60 0 0

14 TEST 60 0 0

15 GATHER 60 60 0

16 QUEUE 0 0 0

17 SEIZE 0 0 0

18 DEPART 0 0 0

19 ADVANCE 0 0 0

20 LEAVE 0 0 0

21 ENTER 0 0 0

22 RELEASE 0 0 0

23 ADVANCE 0 0 0

24 LEAVE 0 0 0

25 SAVEVALUE 0 0 0

26 TEST 0 0 0

27 ASSEMBLE 0 0 0

28 TERMINATE 0 0 0

STOP0 29 SAVEVALUE 0 0 0

30 TERMINATE 0 0 0

31 GENERATE 4000 0 0

METKA1 32 ADVANCE 4000 0 0

33 ENTER 4000 0 0

34 QUEUE 4000 0 0

35 SEIZE 4000 0 0

36 SEIZE 4000 0 0

37 DEPART 4000 0 0

38 ADVANCE 4000 0 0

39 ADVANCE 4000 0 0

40 LEAVE 4000 0 0

41 RELEASE 4000 0 0

42 RELEASE 4000 0 0

43 SAVEVALUE 4000 0 0

44 TEST 4000 0 0

45 TERMINATE 3999 0 0

STOP1 46 SAVEVALUE 1 0 0

47 TERMINATE 1 0 0

48 GENERATE 4000 0 0

METKA2 49 ADVANCE 4000 0 0

50 ENTER 4000 0 0

51 QUEUE 4000 0 0

52 SEIZE 4000 0 0

53 SEIZE 4000 0 0

54 DEPART 4000 0 0

55 ADVANCE 4000 0 0

56 ADVANCE 4000 0 0

57 LEAVE 4000 0 0

58 RELEASE 4000 0 0

59 RELEASE 4000 0 0

60 SAVEVALUE 4000 0 0

61 TEST 4000 0 0

62 TERMINATE 3999 0 0

STOP2 63 SAVEVALUE 1 0 0

64 TERMINATE 1 0 0

65 GENERATE 3999 0 0

66 SAVEVALUE 3999 0 0

67 ENTER 3999 0 0

METKA3 68 ADVANCE 3999 0 0

69 SAVEVALUE 3999 0 0

70 TEST 3999 0 0

71 SEIZE 81 0 0

72 ADVANCE 81 0 0

73 RELEASE 81 0 0

74 SAVEVALUE 81 0 0

75 SAVEVALUE 81 0 0

MET3 76 QUEUE 3999 0 0

77 SEIZE 3999 0 0

78 SEIZE 3999 0 0

79 DEPART 3999 0 0

80 ADVANCE 3999 0 0

81 ADVANCE 3999 0 0

82 LEAVE 3999 0 0

83 RELEASE 3999 0 0

84 RELEASE 3999 0 0

85 SAVEVALUE 3999 0 0

86 TEST 3999 0 0

87 SAVEVALUE 3999 0 0

88 TERMINATE 3999 0 0

CIKL2 89 SPLIT 0 0 0

90 TERMINATE 0 0 0

91 GENERATE 4000 0 0

92 ENTER 4000 0 0

METKA4 93 ADVANCE 4000 0 0

94 QUEUE 4000 0 0

95 SEIZE 4000 0 0

96 SEIZE 4000 0 0

97 DEPART 4000 0 0

98 ADVANCE 4000 0 0

99 ADVANCE 4000 0 0

100 LEAVE 4000 0 0

101 RELEASE 4000 0 0

102 RELEASE 4000 0 0

103 SAVEVALUE 4000 0 0

104 TEST 4000 0 0

105 TERMINATE 3999 0 0

STOP4 106 SAVEVALUE 1 0 0

107 TERMINATE 1 0 0

108 GENERATE 4000 0 0

109 ENTER 4000 0 0

METKA5 110 ADVANCE 4000 0 0

111 QUEUE 4000 0 0

112 SEIZE 4000 0 0

113 SEIZE 4000 0 0

114 DEPART 4000 0 0

115 ADVANCE 4000 0 0

116 ADVANCE 4000 0 0

117 LEAVE 4000 0 0

118 RELEASE 4000 0 0

119 RELEASE 4000 0 0

120 SAVEVALUE 4000 0 0

121 TEST 4000 0 0

122 TERMINATE 3999 0 0

STOP5 123 SAVEVALUE 1 0 0

124 TERMINATE 1 0 0

125 GENERATE 4000 0 0

METKA6 126 ADVANCE 4000 0 0

127 ENTER 4000 0 0

128 QUEUE 4000 0 0

129 SEIZE 4000 0 0

130 SEIZE 4000 0 0

131 DEPART 4000 0 0

132 ADVANCE 4000 0 0

133 ADVANCE 4000 0 0

134 LEAVE 4000 0 0

135 RELEASE 4000 0 0

136 RELEASE 4000 0 0

137 SAVEVALUE 4000 0 0

138 TEST 4000 0 0

139 TERMINATE 3999 0 0

STOP6 140 SAVEVALUE 1 0 0

141 TERMINATE 1 0 0

FACILITY ЗАПИСИ UTIL. ПОЛЬЗА ВРЕМЕНИ АВЕНЮ. ВЛАДЕЛЕЦ НА РАССМОТРЕНИИ, ПРЕДАЮТ ПОВТОРНУЮ ПОПЫТКУ ЗЕМЛЕ DELAY

TELEGKA 23999 0.680 6.800 1 0 0 0 0 0

KRAN 24059 0.680 6.783 1 0 0 0 0 0

REMONTNIK 81 0.090 266.970 1 0 0 0 0 0

QUEUE ВХОД ВХОДА МАКС CONT (0) AVE.CONT. АВЕНЮ AVE.TIME (-0) RETRY

OCER_TNS 14 0 24059 1154 4.959 49.463 51.956 0

STORAGE КЕПКА. REM. Мин. Максимальные ЗАПИСИ AVL. AVE.C. UTIL. ПОВТОРИТЕ DELAY

SKLAD 800 740 0 60 60 1 33.042 0.041 0 0

NAK0_ZAG 1 1 0 1 60 1 0.001 0.001 0 0

NAK0_DET 1 1 0 0 0 1 0.000 0.000 0 0

NAK1 1 1 0 1 4000 1 0.667 0.667 0 0

NAK2 2 2 0 2 4000 1 1.098 0.549 0 0

NAK3 2 2 0 2 3999 1 1.408 0.704 0 0

NAK4 5 5 0 5 4000 1 3.291 0.658 0 0

NAK5 2 2 0 2 4000 1 1.165 0.582 0 0

NAK6 2 2 0 2 4000 1 1.098 0.549 0 0

SAVEVALUE ПОВТОРЯЮТ VALUE

T_POST3 0 128.571

N_ZAJAV0 0 60.000

N_ZAJAV1 0 4000.000

N_ZAJAV2 0 4000.000

N_ZAJAV3 0 3999.000

N_ZAJAV4 0 4000.000

N_ZAJAV5 0 4000.000

N_ZAJAV6 0 4000.000

T_NAR2 0 0

TT_OTK2 0 6000.000

T_NAR3 0 1170.000

TT_OTK3 0 1429.482

T_STOP3 0 168942.523

T_STOP2 0 131734.151

T_STOP6 0 131742.304

T_STOP5 0 139752.495

T_STOP4 0 158243.721

T_STOP1 0 160168.838

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]