Содержание Введение ....................................................................................................................... 2 Язык имитационного моделирования GPSS ............................................................ 3 Функциональная структура GPSS. ............................................................................ 3 Транзакты ..................................................................................................................... 4 Блоки, влияющие на атрибуты транзактов и на их движение в модели ............... 5 Списки .......................................................................................................................... 6 Устройства ................................................................................................................... 6 Памяти .......................................................................................................................... 7 Логические ключи ....................................................................................................... 7 Очереди ........................................................................................................................ 7 Таблицы ........................................................................................................................ 8 Ячейки .......................................................................................................................... 8 Функции и переменные .............................................................................................. 8 1 Моделирование СМО задания №27 на языке GPSS ............................................. 9 1.1 Постановка задачи ................................................................................................. 9 1.2 Алгоритмизация модели ..................................................................................... 10 Вывод .......................................................................................................................... 12 Список использованных источников ...................................................................... 15 Приложение А ........................................................................................................... 16 2 Введение Важным этапом моделирования является создание математической модели исследуемой системы. На базе математической модели происходит анализ характеристик системы, при компьютерном моделирования на основе математической информации модели о создается поведении алгоритм системы. программ Формальное для получения описание объекта исследование необходимо также для взаимопонимания между специалистами разных областей, объединенных для решения какой-либо глобальной задачи. При построении математических моделей процессов функционирования систем можно выделить следующие основные подходы: непрерывнодетерминированный, дискретно-детерминированный, дискретностохастический, непрерывно-стохастический, сетевой, обобщенный (или универсальный). Соответственно этим подходам были разработаны типовые математические схемы создания моделей. 1. Непрерывно-детерминированный подход использует в качестве математических моделей системы дифференциальных уравнений. 2. Дискретно-детерминированный подход реализуется с помощью математического аппарата теории автоматов. Система представляется в виде автомата, перерабатывающего дискретную информацию и меняющего свои внутренние состояния лишь в допустимые моменты времени. 3. Дискретно-стохастический математического аппарата подход вероятностные использует автоматы, в которые качестве можно определить как дискретные потактные преобразователи информации с памятью, функционирование которого в каждом такте зависит только от состояния памяти в нем и может быть описано статистически. 4. Непрерывно-стохастический подход применяется для формализации процессов обслуживания. Этот подход наиболее известен ввиду того, что большинство производственных (и не только производственных - экономических, технических и т.д.) систем по своей сути являются системами 3 массового обслуживания. Типовой математической схемой моделирования таких систем являются Q-схемы. Наиболее часто для анализа Q-схем используют имитационные методы. В этом случае формализованное описание системы массового обслуживания представляет собой графическое отображение (с соответствующими комментариями) элементарных приборов, клапанов, отражающих наличие управляющих воздействий, и связей между ними. На данный момент существует много программных средств, специализирующихся на создание имитационных моделей на основе Q-схем. Примерами для прикладного применения непрерывно-стохастического подхода могут служить исследования потоков поставок продукции некоторому предприятию, потоков деталей и комплектующих изделий на сборочном конвейере цеха и т.п. Язык имитационного моделирования GPSS Функциональная структура GPSS. Система GPSS ориентирована на класс объектов, процесс функционирования которых можно представить в виде множества состояний и правил перехода из одного состояния в другое, определяемых в дискретной пространственно-временной области. Примерами таких объектов являются вычислительные системы, сети ЭВМ, системы передачи сообщений, транспортные объекты, склады, магазины, предприятия и т.п. В качестве формальных моделей таких объектов используют системы массового обслуживания, автоматы, стохастические сети, сети Петри и макросети, агрегаты и т.п. В состав GPSS входят следующие типы объектов: транзакты, блоки, списки, устройства, памяти, логические ключи, очереди, таблицы, ячейки, функции, переменные. Любую модель на языке GPSS можно представить в виде комбинации компонентов, взятых из числа названных объектов. Модель имеет три уровня представления: 4 верхний уровень, определяемый комбинацией функциональных основных объектов: устройств, памятей, ключей, очередей; средний уровень, представляемый схемой из типовых блоков, между которыми перемещаются транзакты; нижний уровень - уровень физической реализации языка GPSS в виде программ и наборов данных, составляющих основу моделирующей системы. Транзакты Функционирование объекта отображается в модели в виде перемещения транзактов от блока GENERATE в блок TERMINATE через промежуточные блоки. Транзакты, или сообщения являются абстрактными подвижными элементами, которые могут моделировать различные объекты реального мира: сообщения, программы, транспортные средства, людей и т.п. Перемещаясь между блоками модели, транзакты вызывают (и испытывают) различные действия. Возможны их задержки в некоторых точках модели, изменения маршрутов и направлений движения, расщепление транзактов на несколько копий и т.п. С каждым транзактом связан упорядоченный набор данных. Он включает номер транзакта; номер блока, в котором в данный момент находится транзакт; номер следующего блока; время перехода в следующий блок; приоритет, характеризующий очередность обработки транзактов в определенных случаях; а также набор параметров, с помощью которых каждому транзакту можно присвоить числовые значения, выражающие желаемые свойства или характеристики моделируемых объектов: вес, скорость, объем, цвет, время обработки и т.п. 5 Блоки, влияющие на атрибуты транзактов и на их движение в модели В GPSS/PC существует ряд блоков, с помощью которых можно изменить значение параметров транзактов. Блок ASSIGN модифицирует значение параметра транзакта, входящего в этот блок. Блок INDEX изменяет значение параметра номер 1. Блок INCREMENT увеличивает значение параметра, блок DECREMENT уменьшает величину параметра. Блок MARK записывает в указанный им параметр текущее значение таймера абсолютного времени или, если параметр не указан, заменяет значение отметки времени на текущее значение таймера. С помощью блока USING осуществляется доступ текущего транзакта к параметрам другого транзакта модели. Блок LOCATE определяет и записывает в параметр текущего транзакта номер блока, в который должен войти определенный транзакт. Пересылка транзакта в требуемую точку модели осуществляется блоком TRANSFER. Блок ТЕSТ проверяя выполнение определенного условия, может также направлять транзакты в заданную точку модели, если условие не выполняется. В этом его действия аналогичны блоку GATE. Для организации в модели циклов используют блок LOOP, с помощью которого можно предусмотреть многократное прохождение транзактом заданной цепочки блоков. Изменение приоритета транзакта осуществляет блок PRIORITY. Блок BUFFER возобновляет просмотр списка текущих событий и используется, как правило, в качестве режима блока PRIORITY. С помощью блоков TRACE и UNTRACE осуществляют трассировку движения транзактов в модели. 6 Списки Списки относятся к элементам внутренней организации системы GPSS. Они представляют собой структуры данных, в которых размещается полная информация о транзактах. С помощью списков обеспечивается внутренняя логика работы моделирующей системы. Список будущих событий содержит транзакты, которые смогут начать движение в модели в будущие моменты времени. Это те транзакты, для которых моменты начала движения определены в блоках GENERATE и ADVANCE. Устройства Устройства моделируют объекты, в которых может происходить обработка транзактов. Как правило, она связана с затратами времени. Особенность устройств состоит в том, что каждое из них в данный момент времени может быть занято лишь одним транзактом. Существует аналогия между устройствами GPSS и каналами систем массового обслуживания. В GPSS имеется возможность моделировать прерывания устройств. Существуют средства логической проверки состояния устройств. Каждое из действий с устройством отображается в модели определенным блоком. Захват и освобождение устройства моделируются соответственно блоками SEIZE и RELEASE. Для проверки состояния устройств используют GATE. Прерывание моделирует блок PREEMPT, снятие прерывания - блок RETURN. 7 Памяти Памяти служат для моделирования объектов, обладающих определенной емкостью. Памяти моделируются блоками ENTER и LEAVE. Входящий в блок ENTER транзакт занимает определенную часть памяти. При входе транзакта в блок LEAVE память освобождается. Емкость памяти задают с помощью оператора STORAGE, который не является блоком GPSS и относится к числу служебных карт. Логические ключи Для представления в модели коммутируемых объектов с двумя состояниями ("ВКЛЮЧЕНО" - "ВЫКЛЮЧЕНО") используют логические ключи, моделируемые блоками LOGIC и GATE. При входе транзакта в блок LOGIC происходит срабатывание соответствующего ключа. Ключ может быть включен (S), выключен (R) или переключен (1). Очереди Транзакты в процессе движения могут задерживаться перед блоками, вход в которые в данных условиях невозможен. При поступлении транзактов на вход задерживающих блоков образуются очереди. Для сбора статистики об очередях в местах задержки ставят блоки QUEUE. Эти блоки сами по себе не создают очередь, а лишь являются средством ее регистрации. При входе транзакта в блок QUEUE текущая длина очереди получает приращение. Уход из очереди отображается блоком DEPART. 8 Таблицы Для сбора статистических данных о различных отчетах модели и их представления в стандартной табличной форме используют таблицы. Занесение информации в таблицу осуществляется блоком TABULATE в момент входа очередного транзакта в этот блок. описание структуры таблицы и типа заносимых данных (СЧА) осуществляется картой TABLE. Ячейки Для записи в процессе моделирования текущих значений СЧА используют ячейки. Занесение информации в ячейку осуществляет блок SAVEVALUE. При входе транзакта в этот блок требуемое значение СЧА фиксируется в ячейке, номер которой определяется операндом блока SAVEVALUE. Ячейки имеют различные форматы (слово, полуслово, с плавающей точкой). Изменение содержимого ячеек может осуществляться блоками SDECREMENT и SINCREMENT. Блок SDECREMENT вычитает заданное значение из величины, содержащейся в ячейке. Блок SINCREMENT добавляет требуемое приращение к содержимому ячейки. Функции и переменные Функции служат для отображения зависимостей между двумя СЧА. В GPSS/PC имеется два типа функций: непрерывные (С) и дискретные (D). Функцию задают набором пар точек - координат. Непрерывная функция воспроизводится в виде ломаной кривой, отрезки которой соединяют соседние точечные значения. Дискретная функция имеет вид ступенчатой кривой. 9 1 Моделирование СМО задания №27 на языке GPSS 1.1 Постановка задачи Вариант 20. Из литейного цеха на участок обработки и сборки поступают заготовки через 20 ± 5 мин. Треть из них обрабатывается в течение 60 мин и поступает на комплектацию. Две трети заготовок обрабатывается за 30 мин перед комплектацией, которая требует наличия одной детали первого типа и двух деталей второго. После этого все три детали подаются на сборку, которая занимает 60 ± 2 мин для первой детали и 60 ± 8 мин для двух других, причем они участвуют в сборке одновременно. При наличии на выходе одновременно всех трех деталей изделие покидает участок. Смоделировать работу участка в течение 100 ч. Определить места образования и характеристики возможных очередей. Элементы модели вычислительной системы: Транзакты – задания, которые адресуются ЭВМ; Очереди – очереди заданий перед каждой ЭВМ неограниченной длины; Устройства обработки – ЭВМ, обрабатывающие задания. 10 1.2 Алгоритмизация модели На рисунке 1 представлена блок-схема модели литейного цеха 60+ 2 мин. 60 мин. 20+5 обработка 1/3 деталей сборка 1/3 деталей 15 мин. 30+4 мин. обработка 2/3 деталей сборка 2/3 деталей логический ключ 30+4 мин. сборка 2/3 деталей Рисунок 1 - Блок-схема На участок обработки поступают изделия с интервалом 20 5 минут. Треть деталей направляется на 1-й участок обработки, где обрабатывается 60 минут. Остальные две трети деталей обрабатываются на 2-ом участке, где для обработки 2-х деталей, затрачивается 30 минут. Для того чтобы приступить к сборке, необходимо наличие 1-й детали 1-го типа, и 2-х деталей второго типа. Для синхронизации деталей в модель введен логический ключ, состояние при инициализации – включен. После того как 2 детали второго типа обработаются на 2 участке, они переходят к блоку логического ключа, и ждут, когда его состояние изменится на выключенное. Как только детали 1-го типа заканчивают обработку на 1 участке, они переходят на 1-й участок сборки, предварительно изменив состояние логического ключа на выключенное. Таким образом, детали 2-го типа также поступают на сборку. После сборки деталей, они переходят в блок накопления, и как только там окажется 3 детали, готовое изделие удаляется из модели. 11 simulate 10 generate 20,5 11 logic S key1 20 split 2.3,chan2 21 queue 1 30 seize ob1 40 advance 60 50 release ob1 51 depart 1 51 logic r key1 60 seize sb1 61 advance 60,2 62 release sb1 63 transfer,chan4 80 chan2 seize ob2 90 advance 15 100 release ob2 101 queue 2 110 gate LR key1 111 depart 2 120 split 1,chan5 130 seize sb2 140 advance 30,4 150 release sb2 160 transfer,chan4 170 chan5 seize sb3 171 advance 30,4 172 release sb3 180 chan4 assemble 3 190 terminate 200 generate 6000 201 terminate 1 start 1 – начало моделирования – генерирование транзактов с интервалом в 20 5 минут – инициализация логического ключа, S – закрыт – отправка 2/3 деталей по метке – очередь 1 – участок обработки 1 занят – обработка в течение 60 минут – освобождение устройства – выход из очереди – логический ключ - выключен – участок сборки 1 занят – сборка в течении 60 2 минуты – освобождение устройства – отправка по метке – участок обработки 2 занят – обработка в течение 15 минут – освобождение устройства – очередь 2 – проверка состояния ключа – выход из очереди – расщепление транзактов, отправка по метке – участок сборки 2 занят – сборка в течение 304 минуты – освобождение участка сборки – отправка по метке – участок сборки 3 занят – сборка в течение 304 минуты – освобождение устройства – сборка трех деталей в одну – удаление готовой детали – генерация работы в течении 100 часов – удаление – 1 прогон 12 Вывод GPSS World Simulation Report - model_var_okonch.117.1 Monday, December 11, 2006 09:58:31 START TIME 0.000 END TIME 6000.000 NAME CHAN2 CHAN4 CHAN5 KEY1 OB1 OB2 SB1 SB2 SB3 LABEL CHAN2 CHAN5 CHAN4 FACILITY BLOCKS 31 FACILITIES 5 STORAGES 0 VALUE 14.000 28.000 25.000 10000.000 10002.000 10005.000 10003.000 10007.000 10008.000 LOC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ENTRIES BLOCK TYPE GENERATE LOGIC SPLIT QUEUE SEIZE ADVANCE RELEASE DEPART LOGIC SEIZE ADVANCE RELEASE TRANSFER SEIZE ADVANCE RELEASE QUEUE GATE DEPART SPLIT SEIZE ADVANCE RELEASE TRANSFER SEIZE ADVANCE RELEASE ASSEMBLE TERMINATE GENERATE TERMINATE UTIL. ENTRY COUNT CURRENT COUNT RETRY 300 0 0 300 0 0 300 0 0 300 200 0 100 0 0 100 1 0 99 0 0 99 0 0 99 0 0 99 0 0 99 1 0 98 0 0 98 0 0 399 0 0 399 1 0 398 0 0 398 2 0 396 0 0 396 0 0 396 198 0 198 0 0 198 1 0 197 0 0 197 0 0 199 0 0 199 1 0 198 0 0 493 100 0 98 0 0 1 0 0 1 0 0 AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY 13 OB1 SB1 OB2 SB2 SB3 100 99 399 198 199 QUEUE 1 2 59.766 59.640 14.979 29.882 29.732 1 1 1 1 1 425 422 865 426 651 0 0 0 0 0 MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME 201 201 300 0 100.564 2011.272 4 2 398 119 1.340 20.196 LOGICSWITCH KEY1 FEC XN 426 865 651 1296 425 422 1299 0.996 0.984 0.996 0.986 0.986 PRI 0 0 0 0 0 0 0 VALUE 1 BDT 6003.384 6008.424 6015.363 6020.114 6023.424 6030.492 12000.000 0 0 0 0 0 0 0 0 0 0 200 0 201 198 197 AVE.(-0) RETRY 2011.272 0 28.811 0 RETRY 2 ASSEM 422 861 422 1296 425 422 1299 CURRENT 22 15 26 0 6 11 0 NEXT 23 16 27 1 7 12 30 PARAMETER VALUE Из приведенного выше файла стандартного отчета были получены данные, представленные в таблице 1 Устройства обработки ob1 ob2 sb1 sb2 sb3 Количество обработанных транзактов Коэффициент загрузки Максимальная длина очереди 100 399 99 198 199 0.996 0.996 0.984 0.986 0.986 200 201 0 198 197 Анализируя эти данные, можно прийти к выводу что: участок обработки 1 – обработал 100 транзактов, коэффициент загруженности его равен 0,996; участок обработки 2 – обработал 399 транзактов, коэффициент загруженности его равен 0,996; участок сборки 1 – обработал 99 транзактов, коэффициент загруженности его равен 0,984; 14 участок сборки 2 – обработал 198 транзактов, коэффициент загруженности его равен 0,986; участок сборки 3 – обработал 199 транзактов, коэффициент загруженности его равен 0,986. Система характеризируется высоким коэффициентом загруженности всех устройств, и довольно большими очередями транзактов, в ожидании устройства. Для снижения загруженности устройств и уменьшения размера очередей, возможно увеличение интервала времени поступающих в систему транзактов. 15 Список использованных источников 1. Самарский А.А., Михайлов А.П. Математическое моделирование. М., 1997. 2. Петров А.А., Поспелов И.Г., Шананин А.А. Опыт математического моделирования экономики. М., 1996. 3. Капица П.Л. Эксперимент, теория, практика: Статьи и выступления. М., 1987. С.417. 16 Приложение А Синтаксис операторов GPSS использованных в данном курсовом проекте GENERATE - вводит транзакты в модель. Формат: GENE [RATE] A,B,C,D,E,F,G А - среднее значение интервала времени; В - разброс или модификатор среднего значения(по умолчанию ноль); С - время появления первого транзакта; D - общее число генерируемых транзактов; Е - уровень приоритета каждого транзакта;(от 0 до 127,значение по умолчанию 0); F - число параметров (по умолчанию 12); G - тип параметра ( F - полнословный, Н - полусловный - по умолчанию ). Вводит транзакты в модель, посылая их в следующий по порядку блок. Если в поле В не указана Функция, то интервал между поступлением транзактов определяется случайным числом, равномерно распределенным в диапазоне от (А - В) до (А + В). Если поле В является функцией (FN$), то этот интервал определяется произведением поля А на значение функции, заданной в поле В. TRANSFER - изменяет движение транзакта в модели. Формат: TRAN[SFER] А,В,С,D А - режим передачи (пробел,.,ALL,BOTH,FN,P,PICK,SBR,SIM); В - следующий блок; С - следующий блок; D - значение индекса, используемое в режиме ALL. Транзакт направляется в блок, определяемый в соответствии с режимом передачи, указанным в поле А. Режимы передачи поля А: Пробел - транзакт передается в блок, определяемый полем; "." - статистический режим; в поле А указано десятичное число, выражающее вероятность перехода в блок С; его дополнение до единицы указывает вероятность перехода в блок В; 17 ALL - транзакт последовательно пытается перейти в блоки, определяемые значениями В, B+D, B+2D.....C; BOTH - транзакт последовательно пытается войти в блок В, затем в блок С, до тех пор, пока один из них станет доступным; FN - функциональный режим: поле В является номером функции; следующий блок определяется суммой значения этой функции поля С; Р - параметрический режим: поле В является номером параметра; следующий блок определяется суммой значения этого параметра и поля С; PICK - выборочный режим: блок выбирается с равной вероятностью из блоков с номерами: В, B+l,..., С. SBR - режим перехода к подпрограмме: номер текущего блока помещается в параметр, указанный в поле С, а транзакт передается в блок, номер которого указан в поле В. SIM одновременный - режим: проверяется одновременное выполнение условий беспрепятственного движения транзактов в задерживающих блоках. Если условие выполняется, транзакт передается в следующий блок, в противном случае транзакт переходит на блок С; QUEUE - помещает транзакт в конец очереди. Формат: QUEU[E] А,В А - номер очереди (числовое или символьное имя очереди); В - число добавляемых к очереди элементов (по умолчанию 1). Увеличивает текущее содержимое очереди, указанной в поле А, на значение в поле В. Если поле В не определено, увеличивает содержимое очереди на единицу. Транзакт может находиться в двух различных очередях одновременно. DEPART - удаляет транзакт из очереди. Формат: DEPA[RT] А,В А - номер (имя) очереди; В - число удаляемых из очереди элементов. Удаляет текущий транзакт из очереди, указанной в поле А, и уменьшает содержимое очереди на значение поля В. Транзакт может находиться одновременно в двух различных очередях. SEIZE - занимает устройство. Формат: SEIZ[E] А 18 А - номер устройства. Транзакт пытается занять устройство, определенное полем А. Если прервано, транзакт задерживается в предыдущем блоке. ADVANCE (ЗАДЕРЖАТЬ) ADVANCE - задерживает транзакт. Формат: ADVA[NCE] A,B А - среднее время задержки (константа, если В не задано); В - разброс относительно среднего значения, должен быть меньше или равен А. Блок ADVANCE моделирует временною задержку транзакта в течение определенного интервала. Значение задержки по умолчанию равно нулю. Если поле В не является FN$, т время задержки является случайным числом, распределенным равномерно на интервале от (; + В) до (А - В). Если поле В является функцией FN$, то время задержки определяете произведением поля А на значение функции в поле В. Функция может быть использована для задания времени задержки с определенным средним значением и отклонением, зависящим от А. RELEASE - освобождает устройство. Формат: RELE[ASE] А А - номер устройства(числовое или символьное имя освобождаемого устройства) . Устройство, указанное в поле А, освобождается и становится доступным для других транзактов. Освобождать устройство должен тот же транзакт, который его занимал. TERMINATE - удаляет транзакт. Формат: TERMI[NATE] A А - величина, вычитаемая из содержимого счетчика завершений(поле А карты START). Транзакт удаляется из модели и поступает в пассивный буфер. Если в поле А пробел, воздействия на счетчик завершений не происходит, в противном случае его значение уменьшается на величину, указанную в поле А. START - управление процессом моделирования. Формат: STAR[T] А,В,С,D А - счетчик числа завершений; В - подавление вывода на печать (В = NP); С - промежуточный вывод статистики; 0 - распечатка списков. Поле А определяет счетчик завершений при прогоне модели. При входе транзакта в блок TERMINATE с ненулевым значением поля А, содержимое поля А блока TERMINATE 19 вычитается из остаточного значения счетчика - поля А карты START. Прогон завершается, когда значение счетчика достигнет нуля. Указатель NP в поле В отменяет вывод стандартного отчета GPSS. Величина , указанная в поле С, определяет число завершений, по достижении которого выдается промежуточный отчет. Таким образом можно получать статистические данные в определенных интервалах моделирования. Если поле D содержит 1, полученный отчет будет содержать списки текущих и будущих событий, а также списки пользователя.