Язык моделирования систем GPSS
Общие сведения о языке GPSS. Характеристика использования основных блоков языка. Рассмотрение методики создания и уничтожения транзактов, изменение параметров. Выяснение параметров косвенной адресации. Основные свойства логических переключателей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 17.12.2014 |
Размер файла | 82,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
? функция ОPR имитирует список опроса: аргумент -- параметр Р1, при условии, что в него будет записываться номер опрашиваемого АП;
? функция NAP определяет случайным образом номер АП, на котором возникло сообщение для ЭВМ;
? функция SMV определяет число символов во входном сообщении;
? переменная TZAN определяет время занятия канала связи, равное длине сообщения, разделенное на скорость передачи. (Время переведено в мс):
30000символов ? 30000 ? символов
Программа:
OPR FUNCTION P1,D5 1,2/2,3/3,4/4,5/5,1
NAP FUNCTION RN1,D5 .2, 1/.4, 2/.6, 3/.8, 4/1, 5 SMV FUNCTION RN2,C2 .0,6/1.0,61
TZAN VARIABLE FN$SMV*10/3
GENERATE (EXPONENTIAL(1,0,500)) ;возникновение ;сообщения от АП
ASSIGN 1,FN$NAP;определение номера АП LINK P1,FIFO
; опрос абонентских пунктов
GENERATE ,,,1;циклический опрос от ЭВМ ASSIGN 1,1
POLL ASSIGN 1,FN$OPR;определяется очередной АП SEIZE CAN; занять канал под опрос ADVANCE 100
TEST NE CH*1,0,PROD;если нет сообщения -- продолжать опрос
UNLINK P1,XMIT,1;передача сообщения в ЭВМ PROD RELEASE CAN ;освободить канал от опроса ADVANCE 10 ;задержка между опросами TRANSFER ,POLL ;продолжение опроса
передача и обработка сообщения
XMIT SEIZE CAN; передача к ЭВМ ADVANCE V$TZAN
RELEASE CAN
ADVANCE 500;обработка сообщения PRIORITY 1
SEIZE CAN; передача от ЭВМ ADVANCE V$TZAN
RELEASE CAN TERMINATE
таймер
GENERATE 10000 TERMINATE 1 START 1
В программе при возникновении сообщения от АП в список с со-ответствующим номером заносится единица. Блок TEST проверяет, пуст ли список, соответствующий опрашиваемому АП. Если да - то продолжается опрос, если нет - то блок UNLINK выделяет из списка сообщение и передает управление на блок XMIT. Транзакт, вызвавший извлечение из списка сообщения, по-прежнему направляется к блоку PROD и продолжает цикл опроса. Таким образом в модели опроса единственный транзакт циркулирует «по кругу», имитируя циклический опрос АП.
Логические переключатели
Логические переключатели могут находится в двух положениях: «включен» и «выключен». Перед началом выполнения программы все переключатели устанавливаются в положение «выключен».
Для работы с логическими переключателями используется блок LOGIC. При поступлении транзакта в блок состояние логического переключателя, номер или имя которого указан в поле А, меняется в соответствии с мнемоникой:
LOGIC R 1 - логический переключатель с номером 1 устанавливается в состояние «выключен»; язык транзакт логический переключатель
LOGIC S 1 - логический переключатель с номером 1 устанавливается в состояние «включен»;
LOGIC I 1 - состояние логического переключателя с номером 1 инвертируется.
Состояние логического переключателя может быть проверено в любой части модели с помощью блока GATE или с помощью СЧА LS$<имя логического переключателя>, который принимает значение 1, если логический переключатель «включен», и 0 - в противном случае.
Пример 2.8
Паспортный стол работает с 9 до 18 часов с часовым перерывом на обед с 13 до 14 часов. Посетители приходят в среднем каждые 5 минут, причем все сначала направляются к начальнику паспортного стола, который работает с каждым посетителем в среднем 4 минуты. После начальника примерно 5% посетителей покидают отделение (получен отказ либо вопрос решен), а остальные направляются в отдел прописки, в котором работают три паспортистки. Время приема посетителя в отделе прописки равно в среднем 12 минутам (с каждым посетителем). Время прихода и время обслуживания в системе распределено экспоненциально.
Те посетители, кто стоял в очереди и не успел обслужиться до обеда, обслуживаются после перерыва в первую очередь. Будем считать, что во время обеденного перерыва никто не приходит. Примерно за полчаса до окончания рабочего дня просят не занимать очередь к начальнику паспортного стола и подошедшие в это время посетители не обслуживаются.
Проверить, успеют ли все посетители, стоящие в очереди, обслужиться до конца рабочего дня. Протабулировать время нахождения посетителей в очередях к начальнику паспортного стола и в отдел прописки.
В переменной RAZN подсчитывается количество посетителей, которые встали в очередь, но не успели обслужиться до конца рабочего дня.
PROP STORAGE 3
NAB1 TABLE OCH_NACH,10,10,10 TAB2 QTABLE OCH_PROP,10,10,10 RAZN VARIABLE N$VXOD-N$UXOD ;работа начальника паспортного стола GENERATE (EXPONENTIAL(1,0,5))
GATE LR TIME,BYE; если рабочий день закончился - уход VXOD QUEUE OCH_NACH
GATE LR OBED; ожидание окончания обеда SEIZE NACH
DEPART OCH_NACH
ADVANCE (EXPONENTIAL(1,0,4)) RELEASE NACH
TRANSFER .05,,UXOD ; работа отдела прописки QUEUE OCH_PROP
GATE LR OBED; ожидание окончания обеда ENTER PROP
DEPART OCH_PROP
ADVANCE (EXPONENTIAL(1,0,12)) LEAVE PROP
UXOD TERMINATE BYE TERMINATE
; таймер
GENERATE 240,,,1; начало рабочего дня LOGIC S OBED; начало обеда ADVANCE 60
LOGIC R OBED; окончание обеда ADVANCE 210
LOGIC S TIME; за 30 минут до конца рабочего дня ADVANCE 30
SAVEVALUE NO_OBSL,V$RAZN ; подсчет посетителей,
; которые встали в очередь, но не успели ; обслужиться до конца рабочего дня
TERMINATE 1 START 1
Синхронизация транзактов
Любые элементы в системах прямо или опосредованно связаны, взаимодействуют. Зависимость между процессами, протекающими в разных частях системы, нередко выражается в форме синхронизации, то есть в форме взаимного согласования этих процессов по времени.
Блок SPLIT предназначен для моделирования одновременного начала нескольких процессов. В момент входа транзакта в блок SPLIT создается несколько копий этого транзакта. Число копий задается в поле A. Все копии переходят в блок, определенный в поле B . Исходный (порождающий) транзакт переходит к блоку, следующему за SPLIT. Если поле C блока SPLIT пустое, то все копии идентичны породившему их транзакту. Например, при входе транзакта в блок
SPLIT 4,NEXT
порождается четыре транзакта, идентичных вошедшему, и пере-дается в блок, в поле метки которого записано NEХТ. Породивший их транзакт передается в блок, записанный после блока SPLIT. Всего из этого блока SPLIT выходит пять транзактов.
Если поле C непустое, то его значение интерпретируется как номер или имя параметра транзакта. Пусть N -- значение этого параметра в момент входа транзакта в блок SPLIT. Тогда в момент выхода из SPLIT данный параметр у иcходного транзакта будет иметь значение N ?1, а у копий транзактов соответственно N ?2,N ?3,?,N ? K , где K -- общее число вышедших из блока
SPLIT транзактов. Например, если транзакт, имеющий нуль в десятом параметре, войдет в блок
SPLIT 2,ABCD,10 ,
то параметр Р10 у этого транзакта приобретет значение 1, а у копий -- соответственно 2 и 3.
Транзакты -- копии могут двигаться в модели независимо друг от друга. Копии могут проходить блоки SPLIT и порождать новые копии.
Множество, состоящее из исходного транзакта и всех его копий, называется семейством транзактов. Копия члена семейства является членом того же семейства. Любой транзакт -- член только одного семейства.
Блок ASSEMВLE -- одновременное завершение нескольких про-цессов. Блок собирает заданное в поле A число транзактов одного семейства и превращает их в один транзакт. Первый из транзактов какого-либо семейства, вошедший в блок, задерживается до тех пор, пока в этом блоке не накопится заданное число транзактов того же семейства. После этого первый транзакт выходит из блока ASSEMBLE, а остальные транзакты этого семейства уничтожаются.
В одном блоке ASSEMBLE могут одновременно проходить сборку транзакты, принадлежащие к разным семействам. Например, если в блок
ASSEMBLE 4
поступают транзакты разных семейств, то транзакты каждого семейства собираются по четыре и каждая четверка превращается в один транзакт.
Блок GATHER работает аналогично блоку ASSEMBLE с тем отличием, что транзакты, попав в блок GATHER, не уничтожаются, а только задерживаются и после того, как в блоке накапливается заданное число транзактов, они все переходят к следующему блоку.
Блок MATCH предназначен для синхронизации процессов. В программе всегда должно быть два поименованных блока MATCH. В поле A блока указывается имя парного блока MATCH. Когда транзакт попадает в блок, определяется второй блок MATCH и проверяется, находится ли в нем транзакт этого же семейства. Если да, то транзакты выходят из обоих блоков одновременно. Если в парном блоке нет транзакта, то в первом блоке транзакт задерживается до тех пор, пока во второй блок не поступит транзакт этого же семейства. Таким образом, использование блоков MATCH позволяет синхронизировать передвижение транзактов по модели.
Пример 2.9
Промоделировать сборку изделий рабочими А, В и С. Изделия в разобранном виде поступают каждые 300±100 мин. Каждое из них разделяется между рабочими А и В, которые параллельно готовят свою часть изделия к сборке. Подготовка состоит из двух фаз, причем после первой фазы производится сверка с одновременным участием обоих рабочих, а затем А и В независимо выполняют вторую фазу работы. На первой фазе рабочий А тратит на работу 100±20 мин, рабочий В - 80±20 мин; на второй фазе рабочий А тратит 50±5 минут, рабочий В - 80±20 минут. После окончания работы рабочими А и В рабочий С выполняет сборку изделия за 50±5 мин, причем он может начинать сборку только тогда, когда оба первых рабочих закончат свою работу.
Модель сборки изделий:
GENERATE 300,100;поступление изделий SPLIT 1,MANB ;разделение изделий SEIZE RABA ;занять рабочего А ADVANCE 100,20 ; 1-я фаза
FAZ1A MATCH FAZ1B;ждать, если В не закончил 1-ю фазу ADVANCE 50,5 ; 2-я фаза
RELEASE RABA TRANSFER ,MANC
MANB SEIZE RABB; занять рабочего B ADVANCE 80,20
FAZ1B MATCH FAZ1A;ждать, если А не закончил 1-ю фазу ADVANCE 80,20
RELEASE RABB
MANC ASSEMBLE 2;ждать обе части изделия SEIZE RABC; занять рабочего C ADVANCE 50, 5
RELEASE RABC
TERMINATE 1;завершение сборки START 1000
Прерывание работы устройства
Блок PREEMPT -- захватить устройство. Транзакт, попадающий в блок PREEMPT, захватывает устройство, имя которого указано в поле A блока. Если при захвате устройства оно свободно, то транзакт просто занимает устройство, в этом случае блок PREEMPT работает аналогично блоку SEIZE. Если при входе транзакта в блок PREEMPT устройство занято другим транзактом, то в этом случае транзакт входит в блок PREEMPT, а устройство прерывает обслуживание занимающего его транзакта и переключается на обслуживание транзакта, вошедшего в блок PREEMPT. При этом из состояния «занято» устройство переходит в состояние «захвачено». Когда транзакт, захватывающий устройство, освободит его, устройство возобновит прерванное обслуживание другого транзакта и перейдет в состояние «занято».
Если прерываемый транзакт в момент прерывания находится в блоке ADVANCE, то, начиная с момента прерывания, отсчет времени пребывания транзакта в этом блоке прекращается до тех пор, пока не будет восстановлено обслуживание транзакта. Таким образом, в момент восстановления прерванного обслуживания транзакта время, оставшееся этому транзакту до выхода из блока ADVANCE, такое же, каким оно считалось непосредственно в момент прерывания. Такое прерывание обслуживания называется прерыванием с последующим дообслуживанием.
Все транзакты, задержанные при обращении к устройству, упорядочиваются по приоритету. Кроме поля A, в блоке PREEMPT могут быть заданы операнды B , C , D и E . Операнд B записывается в виде обозначения PR, задающего приоритетный режим работы блока. В этом режиме транзакт захватывает устройство, если оно свободно или обслуживает менее приоритетный транзакт. Прерывание обслуживания менее приоритетного транзакта происходит с последующим до-обслуживанием.
Для определения последующего движения прерванных транзактов используются другие операнды. В поле C может быть указана метка какого-либо блока, на который будет передан прерванный транзакт. При этом прерванный транзакт продолжает претендовать на данное устройство. В поле D блока может быть задан номер параметра транзакта. Тогда, если прерванный транзакт находится в блоке ADVANCE, то вычисляется остаток времени обслуживания (время дообслуживания), и полученное значение помещается в параметр, заданный в поле D. Прерванный транзакт при этом будет послан в блок, указанный в поле C . Прерванный транзакт продолжает претендовать на данное устройство. Если в поле E блока записано обозначение RE, то прерванный транзакт больше не будет претендовать на данное устройство.
Необходимо помнить, что если поле E не задано, а поле C указано, то прерванный транзакт не может быть уничтожен до тех пор, пока он явно не освободит устройство (он должен пройти либо блок RELEASE либо блок RETURN). Чтобы не забывать явно освободить устройство, обычно поля C и E применяют одновременно.
Блок RETURN --освободить устройство. Этот блок используется в паре с блоком PREEMPT. Если транзакт захватил устройство посредством блока PREEMPT, то освободить его он может только в блоке RETURN. Имя освобождаемого устройства задается в поле A блока.
Пример 2.10
Детали поступают в цех обработки в среднем каждые 5±2 минуты. Мастер обрабатывает детали в среднем 4±1 минуту. Каждые 30±5 минут приходит срочный заказ на обработку деталей второго типа, для обработки которых мастеру требуется еже 10±3 минуты. Детали второго типа имеют безусловный приоритет. Если в момент прихода детали второго типа мастер обрабатывает деталь первого типа, то он прерывает свою работу, текущую деталь передает для доделки своему ученику, а сам принимается за обработку вновь поступившей детали второго типа. Ученику требуется в два раза больше времени на обработку (или доработку) детали. Если у мастера скапливается очередь из деталей больше двух, то вновь приходящие детали первого типа также передаются на обработку ученику. Детали второго типа обрабатываются только мастером. Если в момент прерывания обработки детали первого типа мастеру не хватило меньше 30 секунд, то считается, что деталь обработана.
Промоделировать работу мастера и ученика в течение 4-х часов. Проверить, не будет ли скапливаться очередь у ученика. Определить загрузку мастера и ученика.
Для моделирования процесса обработки деталей учеником введем переменную VAR (чтобы увеличить время обработки в два раза).
Функция OBSLU используется для определения времени обработки деталей первого типа. Данная функция описывает равномерный закон распределения на интервале от 3 до 5.
VAR VARIABLE P1#2 OBSLU FUNCTION RN1,C2 0,3/1,5
; работа мастера с деталями первого типа GENERATE 5,2; поступление деталей
ASSIGN 1,FN$OBSLU; определение времени обработки
TEST LE Q$MAS,2,UCH; если скопилась очередь - деталь ; направляется к ученику
QUEUE MAS SEIZE MAST DEPART MAS ADVANCE P1 RELEASE MAST TERMINATE
; работа мастера с деталями второго типа GENERATE 30,5,,,1
QUEUE MAS
PREEMPT MAST,PR,UCH,1,RE;прерванная деталь 1-го типа ; направляется к ученику
DEPART MAS ADVANCE 10,3 RETURN MAST TERMINATE
; работа ученика
UCH TEST G P1,0.5,UXOD; если время дообработки ; меньше 30 секунд, то
; деталь не обрабатывается SEIZE UCHEN
ADVANCE V$VAR RELEASE UCHEN UXOD TERMINATE ; таймер
GENERATE 240 TERMINATE 1 START 1
Организация циклов
Для организации циклов используется блок LOOP. Поле A этого блока содержит имя или номер параметра, который выполняет функцию счетчика циклов. Каждый раз при поступлении транзакта в блок LOOP из указанного параметра вычитается единица, и полученная разность снова записывается в данный параметр. Как только значение параметра становится равным нулю, транзакт направляется в блок, следующий за блоком LOOP. Если значение параметра остается положительным, то транзакт направляется к блоку, указанному в поле В .
Например, если необходимо, чтобы через блок ADVANCE все транзакты проходили по 10 раз, то этот процесс можно промоделировать следующим образом.
ASSIGN 1,10
POVT ADVANCE 34,12 LOOP 1,POVT
Работа с группами
В языке рассматривается два типа групп: Группы Транзактов (Transaction Groups) и Числовые Группы (Numeric Groups). С группами связаны следующие СЧА:
GN$<имя группы> - количество элементов в Числовой Группе; GT$<имя группы> - количество элементов в Группе Транзактов. Рассмотрим блоки для работы с указанными группами.
Блок JOIN добавляет элемент в группу. В поле А блока указывается имя группы. Если поле В не указано, то рассматривается Группа Транзактов и блок добавляет транзакт в группу А. Если используется поле В , то оно имеет числовое значение, которое добавляется в качестве элемента в Числовую Группу А. Если транзакт или число уже является элементом группы, то никаких действий не производится.
Блок ALTER предназначен для изменения приоритета или значения параметра у элементов Группы Транзактов. Блок имеет следующую структуру:
ALTER O A,B,C,D,E,F,G
Поле O может быть пустым или содержит условный оператор со следующими возможными значениями: ЇL? - ?<?, ЇLE? - Ї??, ЇE? - Ї=?, ЇNE? - Ї??, ЇG? - Ї>?, ЇGE? - Ї??, ЇMAX?, ЇMIN?.
Поле А блока содержит имя Группы Транзактов, которая будет тестироваться. Поле В содержит максимальное число тестируемых транзактов (по умолчанию просматривается вся Группа). В поле С указывается имя или номер параметра транзакта, который должен быть изменен. Если значение этого поля равно PR, то изменяться будет приоритет транзакта. Поле D содержит значение, которое должно быть присвоено параметру, указанному в поле С . Поле Е имеет значение PR или номер/имя параметра транзакта, который проверяется на условие. Поле F содержит значение, с которым сравнивается параметр из поля Е . Поле G содержит имя блока. Поля Е , F и G ис-пользуются только совместно с полем O.
Если поле O пропущено, то В транзактам из группы А в пара-метр С записывается значение D. Например:
ALTER Spis,5,First,3.5
Здесь для пяти первых транзактов из группы Spis в параметр с именем First запишется значение 3.5.
Если поле O задано, то в параметр С записывается значение D только в том случае, если между Е и F выполняется заданное условие отношения. Из Группы Транзактов выбираются последовательно элементы до тех пор, пока не найдется В транзактов, для которых выполнится заданное условие. Транзакт, вошедший в блок ALTER, переходит к блоку G , если не находится В транзактов, для которых выполняется условие тестирования. Например:
ALTER NE Bin,10,Price,49.95,Part,99.95,Out
Здесь, когда активный транзакт попадает в блок ALTER, в Группе Транзактов с именем Bin ищутся транзакты, у которых значение параметра Part не равно 99.95. Для первых десяти найденных транзактов значение параметра Price устанавливается равным 49.95. Если в группе не находится десяти транзактов с указанным условием, то активный транзакт напрвляется к блоку Out. В противном случае активный транзакт переходит к следующему блоку.
Если в поле О используются значения МАХ или MIN, то поле F не используется, а значение параметра, указанного в поле Е ,
должно быть равно максимальному (минимальному) значению этого параметра для всей группы.
Блок EXAMINE используется для проверки элементов группы. В поле А блока указывается имя группы. Если поле В не указано, то рассматривается Группа Транзактов, если используется поле В, то оно задается числом и рассматривается Числовая Группа. Если поле
В не указано, то проверяется, является ли активный транзакт элементом группы А. Если является, то он направляется к следующему за EXAMINE блоку, если нет - то транзакт направляется к блоку, имя которого указано в поле С . Если задано поле В , то проверяется, является ли заданное в этом поле число элементом группы. Если является, то активный транзакт направляется к следующему за EXAMINE блоку, если нет - то транзакт направляется к блоку, имя которого указано в поле С .
Блок REMOVE исключает элементы группы по заданному условию. Блок имеет следующую структуру:
REMOVE O A,B,C,D,E,F,G
Поле O может быть пустым или содержит условный оператор со следующими возможными значениями: ЇL? - ?<?, ЇLE? - Ї??, ЇE? - Ї=?, ЇNE? - Ї??, ЇG? - Ї>?, ЇGE? - Ї??, ЇMAX?, ЇMIN?.
В поле А блока указывается имя группы. Тип группы определяется полем С . Если поле С не задано, то рассматривается Группа Транзактов. Если поле С задано, то рассматривается Числовая группа, а в поле С указывается число, которое должно быть исключено из группы. Если указанное число найдено в Числовой группе, определен-ной полем А, то оно исключается из группы, а активный транзакт направляется к следующему за REMOVE блоку. Если число, указанное в поле С не является элементом группы и используется поле F , то активный транзакт направляется к блоку, имя которого указано в F . Для Числовых Групп используются только поля А, С и F .
Если рассматривается Группа Транзактов и не определены поля В , D и E (режим самоисключения), то из группы исключается активный транзакт (тот транзакт, который вошел в блок REMOVE). простейший пример:
REMOVE Self
Транзакт, вошедший в блок REMOVE, исключается из Группы Транзактов с именем Self, если он является членом этой группы.
В режиме тестирования группы оператор условия может быть задан или нет. Если определен оператор условия О, то он задает отношение между атрибутом транзакта или его приоритетом (поле D) и значением, которое определено в поле E . Из Группы Транзактов исключаются все (по умолчанию) или В штук транзактов, для которых выполняется заданное условие. Если оператор условия не определен, но заданы поля D и E , ищутся и исключаются те транзакты, у которых значение атрибута поля D равно значению E . Если в операторе условия заданы значения MAX или MIN, то исключаются транзакты с максимальным или минимальным значением атрибута D.
В поле В указывается максимальное количество элементов, исключаемых из группы (по умолчанию - все). Если поле D не задано, то просто В штук транзактов исключается из группы.
В поле F указывается имя блока, куда направляется активный транзакт, если
? в режиме самоисключения активный транзакт не является элементом группы;
? в режиме тестирования группы не исключен ни один транзакт; ? в режиме тестирования группы количество исключенных
транзактов не достигло В .
Если поле F не определено, то активный транзакт всегда переходит к следующему блоку.
Например:
REMOVE G 3,10,,20,11.4,Jump
Здесь в Группе Транзактов 3 ищутся транзакты, у которых значение 20-го параметра превышает 11.4. Первые 10 транзактов, для которых выполняется указанное условие, исключаются из группы. Если 10 транзактов не найдено, то активный транзакт направляется к блоку Jump. В противном случае, транзакт переходит к следующему блоку.
Блок SCAN предназначен для поиска информации в Группе Транзактов для присвоения ее активному транзакту. Блок имеет следующую структуру:
SCAN O A,B,C,D,E,F
Поле O может быть пустым или содержит условный оператор со следующими возможными значениями: ЇL? - ?<?, ЇLE? - Ї??, ЇE? - Ї=?, ЇNE? - Ї??, ЇG? - Ї>?, ЇGE? - Ї??, ЇMAX?, ЇMIN?.
В поле А блока указывается имя группы. В поле В содержится имя тестируемого параметра или PR (если необходимо тестировать приоритет транзакта). В поле С содержится значение, которое сравнивается с В по заданному условию. В поле D указывается имя параметра транзакта группы, чье значение будет присваиваться активному транзакту. Поле E содержит имя параметра активного транзакта, в который должно быть записано значение параметра D. В поле F указывается имя блока, к которому направляется активный транзакт, если по заданному условию в группе не найдено ни одного транзакта.
Блок SCAN находит первый транзакт в Группе, который удовлетворяет заданным условиям, и значение его атрибута, определенного в поле D, присваивает атрибуту активного транзакта, определенного в поле E . В блоке обязательными являются поля D и E . Если не указаны поля В , С и условный оператор (никакого тестирования не производится), то из Группы выбирается первый же транзакт.
Если не используется условный оператор, но используются поля В и С , то в группе ищется транзакт, у которого значение атрибута В равно С .
Например:
SCAN E Lot,Part,127,Price,Sum,Phone
В данном примере, как только активный транзакт поступает в блок SCAN, в Группе Транзактов Lot ищется транзакт со значением атрибута Part равным 127. Если такой транзакт находится, значение его атрибута Price, присваивается атрибуту Sum активного транзакта. Если в группе не найдено транзакта с заданным условием, то активный транзакт направляется к блоку Phone.
Системное время
СЧА, связанные с системным временем, используются для про-верки временных соотношений пребывания транзактов в системе.
В СЧА С1 и АС1 хранится текущее значение системного времени. СЧА С1 содержит значение относительного системного времени (с момента последнего блока RESET). СЧА АС1 содержит значение абсолютного системного времени (с момента последнего блока CLEAR). Данные СЧА доступны пользователю в любой точке программы.
Каждый транзакт при генерации снабжается отметкой времени. Время пребывания транзакта в модели содержится в СЧА М1 или МР и отсчитывается от момента рождения:
М1 = АС1 - <дата рождения>.
СЧА М1 возвращает время пребывания транзакта в модели, СЧА МРi или MP$<имя параметра> возвращает значение, равное абсолютному системному времени минус значение соответствующего параметра транзакта.
«Дату рождения», зафиксированную блоком GENERATE, можно изменить в любом месте программы, используя блок MARK с пустым полем A. Блок MARK с пустым полем A изменяет «дату рождения» на текущее системное время. Если в блоке MARK используется поле A, то в этом поле содержится номер или имя параметра транзакта. В этом случае транзакт сохраняет «дату рождения», а в указанном параметре записывается текущее значение АС1. Работа блока MARK 10
эквивалентна работе блока ASSIGN 10,C1
Например:
. . . . . MARK . . . . .
MARK 10 . . . . .
TEST E C1,50,BGN1
SR1 TEST GE M1,МP10,BGN2
Здесь первый блок TEST проверяет условие, связанное с текущим значением системного времени (С1 = 50 ?). Второй блок TEST сравнивает М1 (время от попадания транзакта в блок MARK до попадания его в блок SR1) с МР10 (время от попадания транзакта в блок MARK 10 до попадания его в блок SR1).
Пример 2.11
В специализированный магазин промышленных товаров покупатели приходят в среднем каждые 15 минут. В магазине работает единственный продавец, который обслуживает покупателей в среднем 8 минут. Время прихода и время обслуживания подчиняется экспоненциальному закону. Известно, что примерно 20% покупателей в течение месяца приходят в магазин повторно.
В магазине действует накопительная система: если в течение месяца покупатель набирает товара на сумму, превышающую 800 рублей (по чекам), то он получает накопительную карту, по которой ему предоставляются скидки на покупки. Причем процент скидок зависит от общей накопленной на карте суммы. Кроме того, в конце месяца, покупателю, набравшему товара на максимальную сумму, в качестве премии начисляется на карту дополнительная сумма, равная сумме на карте, что позволяет ему в следующем месяце сразу получать максимальную скидку на стоимость товара.
Промоделировать работу в течение месяца и определить размер премии «лучшего» покупателя.
Для моделирования суммы покупок определим случайную функцию CONT, считая, что стоимость покупки может варьироваться в размере от 5 до 500 рублей.
Модель работы магазина будет выглядеть следующем образом. CONT FUNCTION RN1,C2
0,5/1,500; приход посетителей в магазин GENERATE (EXPONENTIAL(1,0,15)),,,,1
VXOD ASSIGN PRICE+,FN$CONT ; общая сумма покупок ; посетителя магазина
QUEUE OCH SEIZE PROD DEPART OCH
ADVANCE (EXPONENTIAL(1,0,8))
TEST G P$PRICE,800,NEXT ; если общая сумма превышает 800 JOIN CART; посетителю выдается карта RELEASE PROD
TRANSFER .2,POVT
TEST G C1,14400; задерживаем транзакты группы, чтобы в ; конце месяца определить лучшего покупателя
TERMINATE
NEXT RELEASE PROD TRANSFER .2,,POVT TERMINATE
; перед повторным посещением ставим задержку POVT ADVANCE (EXPONENTIAL(1,0,600)) TRANSFER ,VXOD
; определение лучшего покупателя в конце месяца GENERATE 14400
SCAN MAX CART,PRICE,,PRICE,SUM ASSIGN SUM+,P$SUM
SAVEVALUE 20,P$SUM TERMINATE 1
START 1
Работа с потоками данных
Ряд блоков языка предназначен для создания и работы с потоками данных. Потоки данных можно использовать для работы с текстовыми файлами, создаваемыми на диске, или для хранения данных в памяти. Язык GPSS позволяет работать одновременно с несколькими потоками данных (в дальнейшем будем обозначать их DS), каждому из которых для идентификации присваивается числовой номер - целое число. Рассмотрим эти блоки.
Блок OPEN создает поток данных. Поле А этого блока содержит имя файла в виде текстовой строки, с которым будет идентифицироваться создаваемый DS или пустую строку, если DS создается в памяти (только на время работы модели). Если файла с указанным именем на диске не существует, то он создается. В поле В указывается число-вой идентификатор DS. Числовой идентификатор может быть задан в виде любого целого положительного числа и используется в дальнейшем для работы с DS. Поле С (не обязательно) содержит имя блока, куда направляется транзакт, если не удается создать DS (код ошибки создания DS не равен нулю). Если открывается существующий файл, то указатель устанавливается на начало файла.
Блок CLOSE уничтожает поток данных (закрывает файл) и возвращает код ошибки. В поле А (не обязательно) блока указывается имя/номер атрибута транзакта, в который записывается код ошибки. Заметим, что проанализировать код ошибки работы с потоком данных можно только после использования блока CLOSE с полем А. Поле В содержит числовой идентификатор DS. Поле С содержит имя блока, к которому направляется транзакт, если код ошибки не равен нулю.
Блок READ читает текстовую строку из DS с текущей позиции. После чтения указатель перемещается на следующую строку. В поле А блока указывается имя/номер атрибута транзакта, в который записывается прочитанная строка. Поле В содержит числовой идентификатор DS из которого читается информация. Поле С содержит имя блока, к которому направляется активный транзакт, если произошла ошибка чтения или дошли до конца файла.
Блок WRITE помещает текстовую строку в текущую позицию DS. Поле А содержит текстовую строку, которая записывается в поток данных. Может содержать число, строку, любой СЧА. Если в поле указано не строковое значение (число или СЧА), то сначала это значение преобразуется в строку, а затем помещается в DS. Поле В содержит числовой идентификатор DS. Поле С содержит имя блока, к которому направляется активный транзакт, если произошла ошибка за-писи. Поле D указывает режим записи и может принимать одно из двух значений: ON - режим вставки, OFF - режим замены. По умолчанию работает режим вставки.
Блок SEEK устанавливает новую текущую позицию (перемещает указатель) для DS. Поле А блока содержит номер новой текущей позиции (номер строки, на которую должен быть перемещен указатель). Поле В содержит числовой идентификатор DS. Заметим, что если номер новой текущей позиции, указанный в поле А превышает количество строк в потоке данных, то указатель просто устанавливается на конец DS и никакой ошибки не происходит.
Рассмотрим возможные коды ошибок, которые могут возникнуть при работе с потоками данных, и их интерпретацию:
0 - нет ошибки;
10 - ошибка OPEN (слишком длинное имя файла - более 200 символов);
11 - ошибка OPEN (ошибка чтения внешнего файла - не смогли загрузить в память);
12 - ошибка OPEN (не хватило памяти для файла); 21 - ошибка READ (не хватило памяти);
22 - ошибка READ (поток не открыт);
31 - ошибка WRITE (не хватило памяти); 32 - ошибка WRITE (поток не открыт);
41 - ошибка CLOSE (не смогли записать файл на диск); 43 - ошибка CLOSE (поток не открыт);
51 - ошибка SEEK (поток не открыт).
Пример 2.12
Посетители заходят в приемную в среднем каждые 6 минут, где с ними работает секретарь в среднем 3 минуты. Время прихода и время обслуживания подчиняется экспоненциальному закону распределения.
Необходимо промоделировать работу приемной в течение 8-часового рабочего дня. Время нахождения посетителей в очереди за-пишем в файл на диск для дальнейшего анализа и исследований.
Время нахождения посетителей в очереди будем определять по времени пребывания транзакта в модели М1 (с момента прихода в систему - постановка в очередь, по момент выхода из очереди). Модель работы системы:
; создание файла и потока данных GENERATE ,,,1
OPEN ("MY.TXT"),1,ERROR TERMINATE
; приход и обслуживание посетителей GENERATE (EXPONENTIAL(1,0,6)) QUEUE OCH
SEIZE CAN DEPART OCH
WRITE M1,1,ERROR; запись в файл времени
; пребывания транзакта в очереди ADVANCE (EXPONENTIAL(1,0,3))
RELEASE CAN TERMINATE
; таймер GENERATE 480
ERROR CLOSE OSH,1
SAVEVALUE 1,P$OSH; определение ошибки работы с DS TERMINATE 1
START 1
Управляющие блоки
Блок START воспринимается как команда симулятору начать выполнение прочитанной части модели. В этом блоке в поле A задается начальное значение счетчика транзактов. Здесь также может быть использовано поле B в значении NP, что означает -- не выводить статистику по окончании моделирования. Если задан блок
START 1,NP ,
то подавляется вывод стандартного отчета: всей информации об устройствах, памятях, очередях, таблицах и ячейках.
Содержимое счетчика транзактов уменьшается при входе транзактов в блок TERMINATE. Когда значение счетчика становится равным нулю или отрицательным, производится выдача статистики и заканчивается процесс моделирования.
Блок RESET предназначается для стирания в заданный момент времени статистики о предыстории процесса. Достигнутое состояние объектов при этом сохраняется.
Применение блока RESET позволяет уменьшить затраты машинного времени на сбор статистики о стационарном (в смысле вероятностных характеристик) процессе в тех случаях, когда предшествующий ему переходный процесс вносит заметные искажения в накапливаемую статистику.
Обычно блок RESET помещается в модели после блока START, а после RESET располагается следующий блок START. После прочтения блока RESET засылается нулевое содержимое в счетчики числа входов в блоки, коэффициенты использования устройств и памятей, а также обнуляются все накопленные статистики. При этом сохраняются текущие состояния и значения устройств, памятей, очередей, ячеек и датчиков случайных чисел.
Блок CLEAR переводит всю модель -- всю статистику и все объекты -- в исходное состояние. Исключением является лишь датчик случайных чисел -- он не возвращается к начальному значению. Применение блока CLEAR позволяет осуществить независимые реализации моделируемого случайного процесса.
Пример 2.13
Моделирование работы заправочной станции.
Заправочная станция открыта с 7 часов до 19 часов. Машины, поступившие после 19 часов, не обслуживаются. Тем не менее все машины, попавшие в очередь до 19 часов, должны быть обслужены. Машины останавливаются на обслуживание лишь в том случае, если число ожидающих обслуживания автомашин меньше или равно числу обслуживаемых машин (т.е. не более одной машины в очереди на колонку). Провести моделирование для 1, 2 и 3 колонок в течение дня с целью определения такого их числа, при котором достигается максимальная прибыль.
С одной обслуженной машины получают доход 10 рублей. Расходы на содержание одной колонки составляют 700 рублей. Предусмотреть в модели, что в случае возникновения временного узла между событиями завершения обслуживания машины и прибытием другой машины, завершение обслуживания было бы обработано в первую очередь: это эквивалентно предположению о том, что водитель прибывшей машины видит возможность завершения обслуживания, т.е. может предпочесть остаться. Если есть временной узел между событиями поступления автомашины на станцию и закрытием заправочной станции в конце дня, прибывшая машина должна попасть до закрытия.
Пусть прибытие машин описывается простейшим потоком со средним временем между приходом машин равным 1 минуте. Время обслуживания равно 1±0.5 минут.
STR STORAGE 1 ; работает 1 колонка PRB VARIABLE N$DONE-(R$STR+S$STR)#70
GENERATE (EXPONENTIAL(1,0,1)),,,,1 ; приход автомашины GATE LR LOCK; если рабочий день еще не закончен,
;то машина поступает на обслуживание TEST LE Q$LIN,S$STR,BYE
BEG QUEUE LIN ENTER STR DEPART LIN PRIORITY 2 ADVANCE 1,0.5 DONE LEAVE STR BYE TERMINATE GENERATE 720
LOGIC S LOCK; рабочий день закончился TEST E N$BEG,N$DONE ; если все машины обслужены SAVEVALUE 1,V$PRB; подсчет прибыли
TERMINATE 1 START 1 CLEAR
STR STORAGE 2; работает 2 колонки START 1
CLEAR
STR STORAGE 3; работает 3 колонки START 1
Переменная PRB используется для расчета прибыли заправочной станции. Временные узлы между событиями обрабатываются через приоритеты.
Примечание: в результате прогона модели будут получены три стандартных отчета - по одному на каждый блок START. Каждый отчет размещается в отдельном файле выдачи.
Внутренняя организация GPSS
Система GPSS в целом как программный продукт состоит из ряда модулей, из которых только модуль управления (симулятор) находится постоянно в ОЗУ и осуществляет процесс имитации. Динамика функционирования симулятора основана фактически на схеме событий, при этом событием считается любое изменение состояния моделируемой системы. Основной функцией симулятора является поддержание правильного хода часов системного времени и выяснение возможностей продвижения транзактов в программе модели. Симулятор оперирует с рядом информационных структур, основными из которых являются: список будущих событий (FEC), список текущих событий (CEC), список прерываний, список задержанных транзактов и другие списки.
Работа симулятора разделяется на три основные фазы: 1) изменение значения системного времени;
2) просмотр списка текущих событий; 3) движение сообщений.
Фаза «Изменение значения системного времени» (рис. 2.3) выполняется симулятором всегда, когда на текущий момент системного времени ни одно из активных сообщений, находящихся в CEC, не может быть продвинуто в программе модели и, кроме того, состояние системы не может быть изменено.
Выбирая первое сообщение, симулятор присваивает системному времени STIME время очередной передвижки этого сообщения TEV(H) в программе модели и перемещает его в СЕС. Подобная процедура осуществляется для всех событий в FEC, время наступления которых равно TEV(H), т.е. текущему значению системного времени. При этом после просмотра в FEC останутся события, время наступления которых больше STIME, т.е. события, наступающие в будущем.
Фаза «Просмотр списка текущих событий» (рис. 2.4). Установив флаг изменения состояния системы в ноль, симулятор в зависимости от значения индикатора просмотра сообщения (транзакта) -- 0 или 1 -- решает вопрос: передать сообщение на третью фазу или нет. На фазу «Движение сообщений» (рис.2.5) передаются только активные сообщения, индикатор просмотра которых равен нулю. Пассивные сообщения находятся в состоянии задержки, например, по причине занятости имитируемого оборудования. Такие сообщения не попадут на третью фазу до тех пор, пока соответствующее оборудование не будет освобождено, т.е. пока не изменится состояние системы.
На фазе «Движение сообщений» активные сообщения симулятор пытается продвинуть как можно дальше по программе модели. Если при этой передвижке меняется состояние системы, все пассивные со-общения, находящиеся в CEC и задержанные по той или иной причине, получают статус активных. Их индикаторы просмотра устанавливаются в Ї0?. Если же при передвижке сообщений явно задана задержка, то сообщение перемещается в FEC. Таким образом, на третьей фазе происходит передвижка активных сообщений, изменение состояния системы, пересмотр индикаторов сообщений и планирование будущих событий (перемещение в FEC).
END TIME BLOCKS FACILITIES STORAGES 540.0002611
VALUE 17.000
10008.000 10009.000
10007.000 10002.000 10004.000 10000.000 10005.000 10001.000 10003.000 10006.000 16.000 3.000
LABELLOC BLOCK TYPE 1 GENERATE
2 GATE VXOD3 QUEUE
4 GATE 5 SEIZE
6 DEPART
7 ADVANCE 8 RELEASE 9 TRANSFER
10 QUEUE 11 GATE 12 ENTER 13 DEPART
14 ADVANCE 15 LEAVE
UXOD 16 TERMINATE BYE 17 TERMINATE
18 GENERATE 19 LOGIC
ENTRY COUNT CURRENT COUNT RETRY 8800
8800 8200 8200 8200 8200 8200 8200 8200 7800 7800 7800 7800 7800 7800 8200 600 100 100
20 ADVANCE100 21 LOGIC100 22 ADVANCE100 23 LOGIC100 24 ADVANCE100 25 SAVEVALUE100 26 TERMINATE100
FACILITY NACH
ENTRIES UTIL. AVE.TIME AVAIL. OWNER PEND INTER RETRY DELAY 82 0.542 3.570 1 0 0 0 0 0
QUEUE OCH_NACH OCH_PROP
STORAGE PROP
MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY 13082312.36715.58925.0640
3078530.4312.9829.3050
CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY 33037811.643 0.54800
TABLE MEAN TAB1 15.589
TAB22.982
STD.DEV.RANGERETRY FREQUENCY CUM.% 21.814 0
_ -10.0005263.41 10.000 -20.000 569.51 20.000 -30.000 980.49 30.000 -40.000 181.71 40.000 -50.000 486.59 50.000 -60.000 390.24 60.000 -70.000 798.78 70.000 -80.000 1 100.00
9.2520
_ -10.0007292.31 10.000 -20.000 294.87 20.000 -30.000 196.15 30.000 -40.000 197.44 40.000 -50.000 198.72 50.000 -60.000 1 100.00
LOGICSWITCH TIME
OBED
SAVEVALUE NO_OBSL
VALUE RETRY 1 0 0 0
RETRY VALUE 0 0
FEC XN PRI 900
BDTASSEM CURRENT NEXT PARAMETER VALUE 540.784 9001
Ниже приведена смысловая интерпретация выдаваемых в отчете результатов.
Заголовок.
GPSS World Simulation Report - pasport.3.1
Friday, January 21, 2005 13:51:41
В заголовок включена информация об имени файла, из которого получен отчет, а также информация о времени и дате прогона модели.
Общая информация.
START TIMEEND TIME BLOCKS FACILITIES STORAGES 0.000 540.0002611
? START TIME. Абсолютное системное время на начало рассматриваемого периода. START TIME устанавливается равным абсолютному системному времени, определенному командами RESET или CLEAR.
? END TIME. Абсолютное системное время на момент окончания моделирования.
? BLOCKS. Количество блоков в программе, исключая блоки описания.
? FACILITIES. Количество объектов «устройство» в программе. ? STORAGES. Количество объектов «память» в программе.
Имена.
NAMEVALUE BYE 17.000 NACH 10008.000 NO_OBSL 10009.000 OBED 10007.000 OCH_NACH 10002.000 OCH_PROP 10004.000 PROP 10000.000 RAZN 10005.000 TAB1 10001.000 TAB2 10003.000 TIME 10006.000 UXOD 16.000 VXOD 3.000
? NAME. Определенные пользователем имена, используемые в программе.
? VALUE. Числовое значение, присвоенное имени. Система присваивает значения именам, начиная с 10000. Исключение составляют имена блоков, им присваивается числовое значение в соответствии с порядковым номером в программе.
Блоки.
LABELLOC BLOCK TYPEENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 8800
2 GATE8800 VXOD3 QUEUE8200
4 GATE 82 0 0 5 SEIZE 82 0 0 6 DEPART 82 0 0 7 ADVANCE 82 0 0 8 RELEASE 82 0 0 9 TRANSFER 82 0 0 10 QUEUE 78 0 0 11 GATE 78 0 0 12 ENTER 78 0 0 13 DEPART 78 0 0 14 ADVANCE 78 0 0 15 LEAVE 78 0 0
UXOD 16 TERMINATE 82 0 0 BYE 17 TERMINATE 6 0 0 18 GENERATE 1 0 0
19 LOGIC100 20 ADVANCE100 21 LOGIC100 22 ADVANCE100 23 LOGIC100 24 ADVANCE100 25 SAVEVALUE100 26 TERMINATE100
? LABEL. Имя блока, которое ему присвоено. ? LOC. Порядковый номер блока в программе. ? BLOCK TYPE. Имя блока-оператора в GPSS.
? ENTRY COUNT. Количество транзактов, вошедших в данный блок с момента последнего RESET или CLEAR, или с момента начала моделирования.
? CURRENT COUNT. Количество транзактов, находящихся в блоке на момент окончания моделирования.
? RETRY. Количество транзактов, ожидающих выполнения специфических условий, зависящих от состояния объекта данного блока.
Устройства.
FACILITYENTRIES UTIL. AVE.TIME AVAIL. OWNER PEND INTER RETRY DELAY NACH 820.5423.570100000
? FACILITY. Имя или номер объекта «устройство».
? ENTRIES. Количество раз, которое устройство было занято, с момента последнего RESET или CLEAR, или с момента последнего запуска модели.
? UTIL. Средняя загрузка устройства за последний измеряемый период времени (доля системного времени, которое устройство было занято, от общего времени моделирования). Измеряемый период времени отсчитывается от начала моделирования или с момента последнего использования команды RESET или CLEAR.
? AVE. TIME. Среднее время нахождения одного транзакта в устройстве.
? AVAIL. Состояние доступности устройства на конец моделирования. 1 означает, что устройство доступно, 0 - не доступно.
? OWNER. Номер транзакта, который занимает устройство. 0 означает, что устройство свободно.
? PEND. Количество транзактов, ожидающих в очереди, чтобы занять устройство через блок PREEMPT.
? INTER. Количество транзактов, претендующих на устройство после прерывания.
? RETRY. Количество транзактов, ожидающих выполнения специфических условий, зависящих от состояния данного устройства.
? DELAY. Количество транзактов, ожидающих в очереди, чтобы занять устройство (включает транзакты, которые пытаются занять устройства через блоки SEIZE и PREEMPT).
Очереди.
QUEUEMAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY OCH_NACH 13082312.36715.58925.0640 OCH_PROP 3 0 78 53 0.431 2.982 9.305 0
? QUEUE. Имя объекта «очередь».
? MAX. Максимальная длина очереди в течение рассматриваемого периода моделирования. Рассматриваемый период считается с момента начала моделирования или с момента последнего оператора RESET или CLEAR.
? CONT. Длина очереди на момент окончания моделирования.
? ENTRY. Общее количество входов за рассматриваемый период.
? ENTRY(0). Количество «нулевых» входов. Общее количество транзактов, находящихся в очереди 0 единиц времени.
? AVE.CONT. Средняя длина очереди за рассматриваемый период.
? AVE.TIME. Среднее время нахождения одного транзакта в очереди. ? AVE.(-0). Среднее время нахождения одного транзакта в очереди за исключением «нулевых» входов.
? RETRY. Количество транзактов, ожидающих выполнения специфических условий, зависящих от состояния данной очереди.
Память.
STORAGECAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY PROP 33037811.643 0.54800
? STORAGE. Имя объекта «память».
? CAP. Емкость памяти, определенная блоком STORAGE.
? REM. Количество свободных ячеек памяти на момент окончания моделирования.
? MIN. Минимальное количество занятых ячеек памяти в течение рассматриваемого периода.
? MAX. максимальное количество занятых ячеек памяти в течение рассматриваемого периода.
? ENTRIES. Общее количество входов за рассматриваемый период.
? AVL. Состояние доступности памяти на конец моделирования. 1 означает, что память доступна, 0 - не доступна.
? AVE.C. Среднее количество занятых ячеек памяти в течение рассматриваемого периода.
? UTIL. Средняя загрузка памяти за последний измеряемый период времени (доля системного времени, которое память была занята, от общего времени моделирования).
? RETRY. Количество транзактов, ожидающих выполнения специфических условий, зависящих от состояния данной памяти.
? DELAY. Количество транзактов, ожидающих в очереди, чтобы занять память через блок ENTER.
Таблицы.
TABLEMEAN STD.DEV.RANGERETRY FREQUENCY CUM.% TAB115.58921.814 0
_ -10.0005263.41 10.000 -20.000 569.51 20.000 -30.000 980.49 30.000 -40.000 181.71 40.000 -50.000 486.59 50.000 -60.000 390.24 60.000 -70.000 798.78 70.000 -80.000 1 100.00
TAB22.9829.2520
_ -10.0007292.31 10.000 -20.000 294.87 20.000 -30.000 196.15 30.000 -40.000 197.44 40.000 -50.000 198.72 50.000 -60.000 1 100.00
? TABLE. Имя объекта «таблица».
? MEAN. Среднее арифметическое табулируемой величины.
? STD.DEV. Выборочное стандартное отклонение табулируемой величины, рассчитанное по формуле s.d.?
?x2 ? 1N(?x)2 N ?1
? RANGE. Границы интервалов, по которым рассчитывается частота попадания табулируемой величины. Интервалы, частота попадания в которые равна 0, не выводятся.
? RETRY. Количество транзактов, ожидающих выполнения специфических условий, зависящих от состояния данной таблицы.
? FREQUENCY. Частота попадания в интервал.
? CUM.% Интегральная частота попадания, выраженная в процентах. Логические переключатели.
LOGICSWITCHVALUERETRY TIME 1 0 OBED 0 0
? LOGICSWITCH. Имя или номер логического переключателя.
? VALUE. Значение логического переключателя на момент окончания моделирования. 1 означает «включен» или «истина», 0 означает «выключен» или «ложь».
? RETRY. Количество транзактов, ожидающих выполнения специфических условий, зависящих от состояния данного логического переключателя.
Ячейки.
SAVEVALUERETRYVALUE NO_OBSL 0 0
? SAVEVALUE. Имя или номер ячейки.
? VALUE. Значение ячейки на момент окончания моделирования.
? RETRY. Количество транзактов, ожидающих выполнения специфических условий, зависящих от состояния данной ячейки.
Список будущих событий.
FEC XN PRIBDTASSEM CURRENT NEXT PARAMETER VALUE 900 540.784 9001
? XN. Номер транзакта в списке будущих событий. ? PRI. Текущий приоритет транзакта.
? BDT. Время в абсолютном системном измерении, когда транзакт должен покинуть список будущих событий.
? ASSEM. Номер транзакта в общем списке транзактов.
? CURRENT. Номер блока, в котором находится транзакт на момент создания отчета.
? NEXT. Номер блока, куда будет направлен транзакт после выхода из списка будущих событий.
? PARAMETER. Номера или имена параметров транзакта. ? VALUE. Значение параметра.
Размещено на Allbest.ru
...Подобные документы
Процессы функционирования различных систем и сетей связи как стохастических, динамических, дискретно-непрерывных математических моделей. Блоки языка GPSS, использованные в программе. Общая информация о результатах работы модели, о группах транзактов.
курсовая работа [27,3 K], добавлен 18.01.2010Язык GPSS как один из наиболее эффективных и распространенных языков моделирования сложных дискретных систем. Транзакт - элемент системы массового обслуживания. Решение задач на основе моделирования с применением языка GPSS, создание имитационной модели.
курсовая работа [54,7 K], добавлен 25.11.2010Понятие компьютерной модели и преимущества компьютерного моделирования. Процесс построения имитационной модели. История создания системы GPSS World. Анализ задачи по прохождению турникета на стадион посредством языка имитационного моделирования GPSS.
курсовая работа [291,3 K], добавлен 11.01.2012Построение модели вычислительного центра: постановка задачи, выбор метода моделирования и составление моделирующей программы на языке GPSS. Исследование трехфазной одноканальной системы и определение значений параметров и размеров буферных устройств.
курсовая работа [276,8 K], добавлен 25.06.2011Применение метода имитационного моделирования с использованием генератора случайных чисел для расчета статистически достоверных переменных. Создание программы на языке GPSS. Результаты моделирования диспетчерского пункта по управлению транспортом.
курсовая работа [399,9 K], добавлен 28.02.2013Основные сведение о системе моделирования GPSS и блоки, используемые при моделировании одноканальных и многоканальных систем массового обслуживания. Разработка модели работы ремонтного подразделения в течение суток с использованием программы GPSS World.
курсовая работа [36,4 K], добавлен 11.02.2015Принципы работы в системе имитационного моделирования GPSS World. Анализ количества транзактов, вошедших в блок с момента последней трансляции. Характеристика команд Window/Simulation, Window/Block, Command/Creat Simulation. Образец системы Sample 1.
лабораторная работа [343,3 K], добавлен 29.03.2015Язык моделирования GPSS World, его особенности и версии. Разработка заданий для обучения основным и специальным приемам создания имитационных моделей на языке GPSS World. Разработка программной документации. Разработка и написание методических указаний.
дипломная работа [4,4 M], добавлен 07.07.2012Разработка концептуальной модели системы обработки информации для узла коммутации сообщений. Построение структурной и функциональной блок-схем системы. Программирование модели на языке GPSS/PC. Анализ экономической эффективности результатов моделирования.
курсовая работа [802,8 K], добавлен 04.03.2015Автоматизация технологических процессов. Написание имитационных моделей систем с дискретными событиями. Модели систем массового обслуживания в общецелевой системе GPSS. Логическая схема алгоритмов и схема программы. Математическая модель и ее описание.
курсовая работа [1,4 M], добавлен 29.06.2011GPSS как один из эффективных и распространенных языков моделирования сложных дискретных систем. Возможности языка GPSS. Построение имитационной модели "Моделирование мини-АТС". Разработка программы работы диспетчерского пункта в торговом предприятии.
курсовая работа [118,8 K], добавлен 19.01.2016Концептуальная модель процесса обслуживания покупателей в магазине. Описание системы моделирования GPSS. Разработка моделирующей программы на специализированном языке имитационного моделирования в среде AnyLogic. Результаты вычислительных экспериментов.
курсовая работа [906,9 K], добавлен 12.07.2012Процесс моделирования имитационной модели функционирования класса персональных компьютеров на языке GPSS World. Поиск линейной зависимости и оценка полученного уравнения. Отчет по результатам работы имитационной модели. Листинг разработанной программы.
курсовая работа [49,2 K], добавлен 07.09.2012Концептуальная схема системы пополнения цехового склада деталей, разработка программы GPSS-модели и цифровых экспериментов. Тестирование программы, описывающей систему пополнения склада деталей, для различных параметров зерна ГСЧ и времени моделирования.
курсовая работа [521,9 K], добавлен 01.10.2012Особенности систем массового обслуживания и сущность имитационного моделирования с использованием GPSS. Структурная схема модели системы и временная диаграмма. Сравнение результатов имитационного моделирования и аналитического расчета характеристик.
курсовая работа [214,2 K], добавлен 23.06.2011Разработка модели, имитирующей работу экономической системы (станции технического обслуживания автомобилей). Определение вероятностных характеристик системы; закрепление навыков в построении имитационной модели с помощью языка моделирования GPSS.
курсовая работа [713,6 K], добавлен 05.06.2013Использование языка GPSS для описания модели автосервиса, обслуживающего автомобили различных моделей с учетом их приоритета. Сущность и возможности имитационного моделирования. Разработка GPSS-модели функционирования ремонтных работ в автосервисе.
курсовая работа [259,4 K], добавлен 08.05.2013GPSS (General Purpose System Simulation) как язык для имитационного моделирования, его принципы и используемые методы, инструменты и средства. Метод построения модели с помощью GPSS, порядок составления блок-схемы данного процесса. Листинг модели.
курсовая работа [32,1 K], добавлен 20.12.2013Метод имитационного моделирования, построение программа на языке GPSS\PS. Укрупненная схема моделирующего алгоритма. Математическая модель и ее описание. Возможные улучшения в работе системы. Результаты моделирования оптимизации работы поликлиники.
курсовая работа [148,6 K], добавлен 29.06.2011Создание имитационной модели экономической системы на языке программирования GPSS. Определение возможных мест появления очередей, количества необслуженых заявок. Выявление причин возникновения неблагоприятных факторов, усовершенствование системы.
курсовая работа [32,9 K], добавлен 13.12.2010