Федеральное государственное автономное образовательное учреждение Высшего профессионального образования
"Уральский федеральный университет имени первого
Президента России Б.Н. Ельцина"
Кафедра "Моделирование управляемых систем"
Дисциплина "Моделирование информационных процессов"
Контрольная работа
Имитационное моделирование
Студент: Мельников А.Е.
Группа: ИМ-38031
Руководитель: Лимановская О.В.
Екатеринбург 2011
Оглавление
Введение
Анализ исходных данных
Заключение
При построении математических моделей процессов функционирования систем можно выделить следующие основные подходы:
непрерывно-детерминированный, дискретно-детерминированный, дискретно-стохастический, непрерывно-стохастический, сетевой, обобщенный (или универсальный). Соответственно этим подходам были разработаны типовые математические схемы создания моделей.
Для выполнения задания мы используем непрерывно-стохастический подход.
Непрерывно-стохастический подход применяется для формализации процессов обслуживания. Этот подход наиболее известен ввиду того, что большинство производственных (и не только производственных - экономических, технических и т.д.) систем по своей сути являются системами массового обслуживания. Типовой математической схемой моделирования таких систем являются Q-схемы. В обслуживании можно выделить две элементарные составляющие: ожидание обслуживания и собственно обслуживание, а в любой системе массового обслуживания можно выделить элементарный прибор. Соответственно, в этом приборе выделяют: накопитель (Н) заявок, ожидающих обслуживания, некоторой емкостью; канал обслуживания (К); потоки событий (последовательность событий, происходящих одно за другим в какие-то случайные моменты времени): поток заявок на обслуживание wi, характеризующийся моментами времени поступления и атрибутами (признаками) заявок (например, приоритетами), и поток обслуживания ui, характеризующийся моментами начала и окончания обслуживания заявок. Для имитационного моделирования СМО был создан специализированный язык программирования GPSS.
Сложные функции моделирующего алгоритма могут быть реализованы средствами универсальных языков программирования (Паскаль, Си), что предоставляет неограниченные возможности в разработке, отладке и использовании модели. Однако подобная гибкость приобретается ценой больших усилий, затрачиваемых на разработку и программирование весьма сложных моделирующих алгоритмов, оперирующих со списковыми структурами данных. Альтернативой этому является использование специализированных языков имитационного моделирования.
Специализированные языки имеют средства описания структуры и процесса функционирования моделируемой системы, что значительно облегчает и упрощает программирование имитационных моделей, поскольку основные функции моделирующего алгоритма при этом реализуются автоматически. Программы имитационных моделей на специализированных языках моделирования близки к описаниям моделируемых систем на естественном языке, что позволяет конструировать сложные имитационные модели пользователям, не являющимся профессиональными программистами.
Современная среда имитационного моделирования GPSSWorld - это удобный программный комплекс, работающий под 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). Концептуальная модель в виде блок-схемы:
Рис.1 Блок-схема концептуальной модели
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; иначе полная повторная обработка
KonecASSIGNpervii_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
TIMEDETALI33.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
SAVEVALUERETRYVALUE
1 0 400.000
Как видно из данного отчета, достаточно большое количество деталей подвергаются повторной обработке, из-за чего возникают огромные очереди у устройств цементации и закалки. В результате все детали после нескольких повторных обработок проходят критерий первого сорта. Но это занимает много времени. Это можно исправить несколькими способами, например, увеличить время обработки на каждом устройстве. Но мы не можем это сделать, так как ограничены технологией обработки деталей и не можем изменять этот процесс. Поэтому для того, чтобы избежать очередей и значительно уменьшить время обработки деталей можно предложить поставить еще два устройства для обработки деталей. В результате программа будет выглядеть следующим образом: