Имитационное моделирование

Федеральное государственное автономное образовательное учреждение Высшего профессионального образования

"Уральский федеральный университет имени первого

Президента России Б.Н. Ельцина"

Кафедра "Моделирование управляемых систем"

Дисциплина "Моделирование информационных процессов"













Контрольная работа

Имитационное моделирование









Студент: Мельников А.Е.

Группа: ИМ-38031

Руководитель: Лимановская О.В.















Екатеринбург 2011


Оглавление



	Введение

	Постановка задачи

	Анализ исходных данных

	Разработка модели

	Заключение

	


Введение



	При построении математических моделей процессов функционирования систем можно выделить следующие основные подходы:

	непрерывно-детерминированный, дискретно-детерминированный, дискретно-стохастический, непрерывно-стохастический, сетевой, обобщенный (или универсальный). Соответственно этим подходам были разработаны типовые математические схемы создания моделей.

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

	Непрерывно-стохастический подход применяется для формализации процессов обслуживания. Этот подход наиболее известен ввиду того, что большинство производственных (и не только производственных - экономических, технических и т.д.) систем по своей сути являются системами массового обслуживания. Типовой математической схемой моделирования таких систем являются Q-схемы. В обслуживании можно выделить две элементарные составляющие: ожидание обслуживания и собственно обслуживание, а в любой системе массового обслуживания можно выделить элементарный прибор. Соответственно, в этом приборе выделяют: накопитель (Н) заявок, ожидающих обслуживания, некоторой емкостью; канал обслуживания (К); потоки событий (последовательность событий, происходящих одно за другим в какие-то случайные моменты времени): поток заявок на обслуживание wi, характеризующийся моментами времени поступления и атрибутами (признаками) заявок (например, приоритетами), и поток обслуживания ui, характеризующийся моментами начала и окончания обслуживания заявок. Для имитационного моделирования СМО был создан специализированный язык программирования GPSS.

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

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

	Современная среда имитационного моделирования GPSS World - это удобный программный комплекс, работающий под Windows. GPSS сочетает в себе функции дискретного и непрерывного моделирования. Возможность перехода из дискретной фазы моделирования в непрерывную фазу и обратно обеспечивает тесную связь с непрерывным моделированием. В непрерывной фазе могут быть установлены пороговые значения, управляющие созданием транзактов в дискретной фазе. Система имеет транслятор программного кода, т.е. модель работает только в среде GPSS и не может компилироваться в исполняемые файлы.

моделирование программирование алгоритм


Постановка задачи



	На участке термической обработки выполняются цементация и закаливание шестерен, поступающих через 10 ± 5 мин. Цементация занимает 10 ± 7 мин, а закаливание - 10 ± 6 мин. Качество определяется суммарным временем обработки. Шестерни c временем обработки больше 25 мин покидают участок, c временем обработки от 20 до 25 мин передаются на повторную закалку и при времени обработки меньше 20 мин должны пройти повторную полную обработку. Детали с суммарным временем обработки меньше 20 мин считаются вторым сортом.

	Смоделировать процесс обработки на участке 400 шестерен. Определить функцию распределения времени обработки и вероятности повторения полной и частичной обработки. При выходе продукции без повторной обработки менее 90% обеспечить на участке мероприятия, дающие гарантированный выход продукции первого сорта 90%.

	

Анализ исходных данных



	При описании термической обработки шестерен задано время поступления шестерен - 10 + 5 мин., время цементации - 10 + 7 мин., и время закаливания - 10 + 6 мин. Эти данные являются входными параметрами.

	Время поступления шестерен на участок термической обработки распределено в интервале от 5 до 15 минут, то есть шестерни с одинаковой вероятностью могут поступать через интервалы 5, 6, 7, 8, 9, 10, 11, …, 15 минут.

	Время цементации распределено в интервале о 3 до 17 минут, то есть цементация производиться с интервалом 3, 4, 5, 6, …, 16, 17 минут.

	Время закаливания распределено в интервале от 4 до 16 минут, то есть закаливание производиться с интервалом 4, 5, 6, …, 15, 16 минут.

	Необходимо смоделировать процесс обработки 400 шестерен.

	Итак, можно сделать вывод, что исходных данных для моделирования термической обработки шестерен достаточно.

	

Разработка модели



	Процесс термической обработки шестерен следует:

	Сначала шестерни поступают на первое устройство, которое производит цементацию. Затем на второе устройство, производящее закаливание поступающих после цементации шестерен. После обработки покидают участок шестерни, время обработки которых составило больше 25 минут, другие же, обработка которых заняла от 20 до 25 минут - отправляются на повторную закалку, а при времени обработки до 20 минут - отправляются на полную повторную обработку.

	Все компоненты участка термической обработки можно представить в следующем виде:

	1). Концептуальная модель в виде блок-схемы:

	

Выход с участка

t≥25 минут

20≤t<25 минут

Поступление шестерен



Цементация



Закаливание

	t<20

	Рис.1 Блок-схема концептуальной модели

	

Решение задачи на языке GPSS:

	sortDetali table P4,2,1,7; распределение первичной/вторичной обработки

	timeDetali table P3,0,1,53; распределение времени операций

	GENERATE 10,5,,400; 400 шестерен, поступающие через 10+-5 минут

	ASSIGN 4,0; обнуляем параметр, показывающий распределение обработки

	CEM1 QUEUE CEMENT; добавляем деталь в очередь на цементацию

	SEIZE CEM11; занимаем устройство

	ASSIGN 1,AC1; засекаем время перед обработкой

	DEPART CEMENT; удаляем из очереди

	ADVANCE 10,7; цементация

	RELEASE CEM11; освобождаем устройство

	ASSIGN 1, (AC1-P1); засекаем время на участке цементации

	ASSIGN 4+,1; увеличиваем счетчик распределения обработки на 1

	ZAK1 QUEUE ZAKAL; добавляем деталь в очередь на закаливание

	SEIZE ZAK11; занимаем устройство

	ASSIGN 2,AC1; засекаем время перед закаливание

	DEPART ZAKAL; удаляем из очереди

	ADVANCE 10,6; закаливание

	RELEASE ZAK11; освобождаем устройство

	ASSIGN 2, (AC1-P2); засекаем время на участке закаливания

	ASSIGN 4+,1; увеличиваем счетчик распределения обработки на 1

	ASSIGN 3+, (P1+P2); увеличиваем параметр, показывающий распределение времени

	ASSIGN 1,0; обнуляем параметры, засекающие время

	ASSIGN 2,0; на участках обработки

	TEST L P3,25,Konec; если время обработки больше 25 - деталь первого сорта - выход

	TEST L P3, 20,ZAK1; если от 20 до 25 минут - отправляем на повторную закалку

	TRANSFER,CEM1; иначе полная повторная обработка

	Konec ASSIGN pervii_sort,1; подсчитываем количество деталей первого сорта

	SAVEVALUE P$pervii_sort+,1

	TABULATE sortDetali

	TABULATE timeDetali

	TERMINATE 1

	START 400

	Результаты моделирования

	GPSS World Simulation Report - Na_avtomat1.57.1

	Sunday, May 29, 2011 19: 49: 41

	START TIME END TIME BLOCKS FACILITIES STORAGES

	0.000 7349.958 29 2 0

	NAME VALUE

	CEM1 3.000

	CEM11 10003.000

	CEMENT 10002.000

	KONEC 25.000

	PERVII_SORT 10006.000

	SORTDETALI 10000.000

	TIMEDETALI 10001.000

	ZAK1 11.000

	ZAK11 10005.000

	ZAKAL 10004.000

	LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

	1 GENERATE 400 0 0

	2 ASSIGN 400 0 0

	CEM1 3 QUEUE 596 0 0

	4 SEIZE 596 0 0

	5 ASSIGN 596 0 0

	6 DEPART 596 0 0

	7 ADVANCE 596 0 0

	8 RELEASE 596 0 0

	9 ASSIGN 596 0 0

	10 ASSIGN 596 0 0

	ZAK1 11 QUEUE 729 0 0

	12 SEIZE 729 0 0

	13 ASSIGN 729 0 0

	14 DEPART 729 0 0

	15 ADVANCE 729 0 0

	16 RELEASE 729 0 0

	17 ASSIGN 729 0 0

	18 ASSIGN 729 0 0

	19 ASSIGN 729 0 0

	20 ASSIGN 729 0 0

	21 ASSIGN 729 0 0

	22 TEST 729 0 0

	23 TEST 329 0 0

	24 TRANSFER 196 0 0

	KONEC 25 ASSIGN 400 0 0

	26 SAVEVALUE 400 0 0

	27 TABULATE 400 0 0

	28 TABULATE 400 0 0

	29 TERMINATE 400 0 0

	FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

	CEM11 596 0.805 9.925 1 0 0 0 0 0

	ZAK11 729 0.996 10.043 1 0 0 0 0 0

	QUEUE MAX CONT. ENTRY ENTRY (0) AVE. CONT. AVE. TIME AVE. (-0) RETRY

	CEMENT 119 0 596 19 44.536 549.224 567.309 0

	ZAKAL 133 0 729 2 65.039 655.740 657.544 0

	TABLE MEAN STD. DEV. RANGE RETRY FREQUENCY CUM. %

	SORTDETALI 3.313 0.813 0

	_ - 2.000 79 19.75

	2.000 - 3.000 126 51.25

	3.000 - 4.000 187 98.00

	4.000 - 5.000 7 99.75

	5.000 - 6.000 1 100.00

	TIMEDETALI 33.092 5.617 0

	25.000 - 26.000 32 8.00

	26.000 - 27.000 29 15.25

	27.000 - 28.000 28 22.25

	28.000 - 29.000 23 28.00

	29.000 - 30.000 29 35.25

	30.000 - 31.000 31 43.00

	31.000 - 32.000 22 48.50

	32.000 - 33.000 20 53.50

	33.000 - 34.000 20 58.50

	34.000 - 35.000 20 63.50

	35.000 - 36.000 22 69.00

	36.000 - 37.000 23 74.75

	37.000 - 38.000 22 80.25

	38.000 - 39.000 16 84.25

	39.000 - 40.000 17 88.50

	40.000 - 41.000 10 91.00

	41.000 - 42.000 1 91.25

	42.000 - 43.000 6 92.75

	43.000 - 44.000 13 96.00

	44.000 - 45.000 5 97.25

	45.000 - 46.000 3 98.00

	46.000 - 47.000 1 98.25

	47.000 - 48.000 5 99.50

	48.000 - 49.000 1 99.75

	49.000 - 50.000 1 100.00

	SAVEVALUE RETRY VALUE

	1 0 400.000

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

	sortDetali table P4,2,1,7; распределение первичной/вторичной обработки

	timeDetali table P3,0,1,53; распределение времени операций

	GENERATE 10,5,,400; 400 шестерен, поступающие через 10+-5 минут

	ASSIGN 4,0; обнуляем параметр, показывающий распределение обработки

	CEM1 QUEUE CEMENT; добавляем деталь в очередь на цементацию

	SEIZE CEM11; занимаем устройство

	ASSIGN 1,AC1; засекаем время перед обработкой

	DEPART CEMENT; удаляем из очереди

	ADVANCE 10,7; цементация

	RELEASE CEM11; освобождаем устройство

	ASSIGN 1, (AC1-P1); засекаем время на участке цементации

	ASSIGN 4+,1; увеличиваем счетчик распределения обработки на 1

	ZAK1 QUEUE ZAKAL; добавляем деталь в очередь на закаливание

	SEIZE ZAK11; занимаем устройство

	ASSIGN 2,AC1; засекаем время перед закаливание

	DEPART ZAKAL; удаляем из очереди

	ADVANCE 10,6; закаливание

	RELEASE ZAK11; освобождаем устройство

	ASSIGN 2, (AC1-P2); засекаем время на участке закаливания

	ASSIGN 4+,1; увеличиваем счетчик распределения обработки на 1

	Proverka ASSIGN 3+, (P1+P2); увеличиваем параметр, показывающий распределение времени

	ASSIGN 1,0; обнуляем параметры, засекающие время на участках обработки

	ASSIGN 2,0

	TEST L P3,25,Konec; если время обработки больше 25 - деталь первого сорта - выход

	TEST L P3, 20,Raspr_sakal; если от 20 до 25 минут - отправляем на повторную закалку

	TRANSFER,Raspr_cement; иначе полная повторная обработка

	Raspr_sakal TEST L RN1,850,ZAK1; выбираем, какое оборудование использовать

	TRANSFER,ZAK2; так как более загружено старое оборудование (через него проходят детали изначально)

	; ставим большую вероятность обработки на новом оборудовании

	Raspr_cement TEST L RN2,960,CEM1

	TRANSFER,CEM2

	CEM2 QUEUE CEMEN

	SEIZE CEM22

	ASSIGN 1,AC1; засекаем время перед цементацией

	DEPART CEMEN; удаляем из очереди

	ADVANCE 10,6; закаливание

	RELEASE CEM22; освобождаем устройство

	ASSIGN 1, (AC1-P1); засекаем время на участке цементации

	ASSIGN 4+,1

	ZAK2 QUEUE ZAKALIV; добавляем деталь в очередь на закаливание

	SEIZE ZAK22; занимаем устройство

	ASSIGN 2,AC1; засекаем время перед закаливание

	DEPART ZAKALIV; удаляем из очереди

	ADVANCE 10,6; закаливание

	RELEASE ZAK22; освобождаем устройство

	ASSIGN 2, (AC1-P2); засекаем время на участке закаливания

	ASSIGN 4+,1

	TRANSFER,Proverka

	Konec ASSIGN pervii_sort,1; подсчитываем количество деталей первого сорта

	SAVEVALUE P$pervii_sort+,1

	TABULATE sortDetali

	TABULATE timeDetali

	TERMINATE 1

	START 400

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

	GPSS World Simulation Report - Untitled Model 1.52.1

	Sunday, May 29, 2011 18: 50: 20

	START TIME END TIME BLOCKS FACILITIES STORAGES

	0.000 4367.779 50 4 0

	NAME VALUE

	CEM1 3.000

	CEM11 10003.000

	CEM2 29.000

	CEM22 10010.000

	CEMEN 10009.000

	CEMENT 10002.000

	KONEC 46.000

	PERVII_SORT 10008.000

	PROVERKA 19.000

	RASPRED 25.000

	RASPRED1 27.000

	SORTDETALI 10000.000

	TIMEDETALI 10001.000

	ZAK1 11.000

	ZAK11 10005.000

	ZAK2 37.000

	ZAK22 10007.000

	ZAKAL 10004.000

	ZAKALIV 10006.000

	LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

	1 GENERATE 400 0 0

	2 ASSIGN 400 0 0

	CEM1 3 QUEUE 420 0 0

	4 SEIZE 420 0 0

	5 ASSIGN 420 0 0

	6 DEPART 420 0 0

	7 ADVANCE 420 0 0

	8 RELEASE 420 0 0

	9 ASSIGN 420 0 0

	10 ASSIGN 420 0 0

	ZAK1 11 QUEUE 439 0 0

	12 SEIZE 439 0 0

	13 ASSIGN 439 0 0

	14 DEPART 439 0 0

	15 ADVANCE 439 0 0

	16 RELEASE 439 0 0

	17 ASSIGN 439 0 0

	18 ASSIGN 439 0 0

	PROVERKA 19 ASSIGN 730 0 0

	20 ASSIGN 730 0 0

	21 ASSIGN 730 0 0

	22 TEST 730 0 0

	23 TEST 330 0 0

	24 TRANSFER 199 0 0

	RASPRED 25 TEST 131 0 0

	26 TRANSFER 112 0 0

	RASPRED1 27 TEST 199 0 0

	28 TRANSFER 179 0 0

	CEM2 29 QUEUE 179 0 0

	30 SEIZE 179 0 0

	31 ASSIGN 179 0 0

	32 DEPART 179 0 0

	33 ADVANCE 179 0 0

	34 RELEASE 179 0 0

	35 ASSIGN 179 0 0

	36 ASSIGN 179 0 0

	ZAK2 37 QUEUE 291 0 0

	38 SEIZE 291 0 0

	39 ASSIGN 291 0 0

	40 DEPART 291 0 0

	41 ADVANCE 291 0 0

	42 RELEASE 291 0 0

	43 ASSIGN 291 0 0

	44 ASSIGN 291 0 0

	45 TRANSFER 291 0 0

	KONEC 46 ASSIGN 400 0 0

	47 SAVEVALUE 400 0 0

	48 TABULATE 400 0 0

	49 TABULATE 400 0 0

	50 TERMINATE 400 0 0

	FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

	CEM11 420 0.975 10.135 1 0 0 0 0 0

	ZAK11 439 0.992 9.866 1 0 0 0 0 0

	ZAK22 291 0.662 9.929 1 0 0 0 0 0

	CEM22 179 0.433 10.573 1 0 0 0 0 0

	QUEUE MAX CONT. ENTRY ENTRY (0) AVE. CONT. AVE. TIME AVE. (-0) RETRY

	CEMENT 31 0 420 2 14.070 146.322 147.022 0

	ZAKAL 13 0 439 6 6.213 61.818 62.675 0

	ZAKALIV 5 0 291 129 0.433 6.505 11.684 0

	CEMEN 2 0 179 114 0.104 2.533 6.975 0

	TABLE MEAN STD. DEV. RANGE RETRY FREQUENCY CUM. %

	SORTDETALI 3.322 0.812 0

	_ - 2.000 79 19.75

	2.000 - 3.000 121 50.00

	3.000 - 4.000 193 98.25

	4.000 - 5.000 6 99.75

	5.000 - 6.000 1 100.00

	TIMEDETALI 33.425 5.646 0

	25.000 - 26.000 31 7.75

	26.000 - 27.000 33 16.00

	27.000 - 28.000 19 20.75

	28.000 - 29.000 22 26.25

	29.000 - 30.000 25 32.50

	30.000 - 31.000 22 38.00

	31.000 - 32.000 33 46.25

	32.000 - 33.000 14 49.75

	33.000 - 34.000 18 54.25

	34.000 - 35.000 28 61.25

	35.000 - 36.000 23 67.00

	36.000 - 37.000 27 73.75

	37.000 - 38.000 25 80.00

	38.000 - 39.000 15 83.75

	39.000 - 40.000 17 88.00

	40.000 - 41.000 5 89.25

	41.000 - 42.000 10 91.75

	42.000 - 43.000 9 94.00

	43.000 - 44.000 4 95.00

	44.000 - 45.000 7 96.75

	45.000 - 46.000 2 97.25

	46.000 - 47.000 2 97.75

	47.000 - 48.000 3 98.50

	48.000 - 49.000 4 99.50

	49.000 - 50.000 2 100.00

	SAVEVALUE RETRY VALUE

	1 0 400.000

	

	

	Рис.2 Распределение повторной обработки

	

	

	Рис.3 Распределение времени обработки

	

Как видно из нового отчета, очереди заметно сократились, как и время обработки деталей. Из рис.2 видно, что подавляющее большинство деталей проходит повторную полную обработку, после чего относятся к деталям первого сорта. А время полной обработки в среднем от 25 до 40 минут (рис.3). 


Заключение



	На основе полученного задания был выполнен прогон построенной модели с использованием 400 деталей. По результатам полученных данных были выявлены возможные места появления очередей и причины их возникновения. Также были собраны статистические данные по данной модели - распределение времени обработки шестерен и вероятности их повторной обработки.

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