МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Моделирование на GPSS

    больше текущего модельного времени. Блок

    TEST L Q$LINE,5,OUT

    направляет транзакты в блок с именем OUT, если текущая длина очере-

    ди LINE больше либо равна 5.

    Для задержки или изменения маршрута транзактов в зависимости

    от состояния аппаратных объектов модели служит блок GATE

    (впустить), имеющий следующий формат:

    имя GATE X A,B

    Вспомогательный операнд X содержит код состояния проверяемого

    аппаратного объекта, а в поле A указывается имя или номер этого

    объекта. Если проверяемый объект находится в заданном состоянии, то

    блок GATE пропускает транзакт к следующему блоку. Если же заданное

    в блоке условие не выполняется, то транзакт переходит к блоку, ука-

    занному в поле B, а если это поле пусто, то задерживается перед

    блоком GATE.

    Операнд X может принимать следующие значения: U (устройство

    занято); NU (устройство свободно); I (устройство захвачено); NI

    (устройство не захвачено); SE (МКУ пусто); SNE (МКУ не пусто); SF

    (МКУ заполнено); SNF (МКУ не заполнено); LS (ЛП включен), LR (ЛП

    выключен).

    Например, блок

    GATE SNE BUF3

    отказывает во входе транзактам, поступающим в моменты, когда в МКУ

    с именем BUF3 все каналы обслуживания свободны. Блок

    GATE LR 4,BLOK2

    направляет транзакты в блок с именем BLOK2, если в момент их

    поступления ЛП с номером 4 включен.

    Блоки рассматриваемой группы используются при моделировании

    различных СМО с потерями заявок. Воспользуемся, например, блоками

    TRANSFER для моделирования двухканальной СМО с отказами и повторны-

    ми попытками (рис. 12).

    STO2 STORAGE 2

    EXP FUNCTION RN1,C24

    0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

    .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

    .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

    .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

    GENERATE 100,FN$EXP

    ENT1 TRANSFER BOTH,,REFUS

    ENTER STO2

    ADVANCE 160,FN$EXP

    LEAVE STO2

    TERMINATE 1

    REFUS TRANSFER .1,,OUT

    ADVANCE 250,FN$EXP

    TRANSFER ,ENT1

    OUT TERMINATE 1

    Рис. 12

    Транзакты, поступающие в модель, попадают в блок TRANSFER с

    именем ENT1, работающий в логическом режиме. Если в момент поступ-

    ления транзакта в МКУ STO2 хотя бы один канал свободен, то блок

    TRANSFER направит транзакт в следующий блок, т.е. в блок ENTER.

    Если же в момент поступления оба канала МКУ заняты, и поэтому блок

    ENTER отказывает во входе, то транзакт будет направлен в блок

    TRANSFER с именем REFUS, работающий в статистическом режиме. С ве-

    роятностью 0,9 транзакты из этого блока передаются в следующий

    блок, задерживаются в нем на случайное время и с помощью блока

    TRANSFER, работающего в безусловном режиме, передаются вновь на

    вход модели в блок с именем ENT1. С вероятностью 0,1 транзакты из

    блока с именем REFUS передаются в блок TERMINATE с именем OUT для

    уничтожения.

    Следует заметить, что для уничтожения транзактов, получивших

    отказ в обслуживании, понадобился отдельный блок TERMINATE для

    фиксации в стандартном отчете количества потерянных транзактов с

    помощью счетчика блока с именем OUT (СЧА N$OUT).

    Для моделирования той же СМО может быть использован также блок

    TEST (рис. 13). В этом варианте модели транзакт проходит в блок

    ENTER, если текущее число занятых каналов (СЧА S$STO2) меньше 2.

    STO2 STORAGE 2

    EXP FUNCTION RN1,C24

    0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

    .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

    .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

    .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

    GENERATE 100,FN$EXP

    ENT1 TEST L S$STO2,2,REFUS

    ENTER STO2

    ADVANCE 160,FN$EXP

    LEAVE STO2

    TERMINATE 1

    REFUS TRANSFER .1,,OUT

    ADVANCE 250,FN$EXP

    TRANSFER ,ENT1

    OUT TERMINATE 1

    Рис. 13

    При использовании блока GATE модель принимает вид, показанный

    на рис. 14. В этом варианте транзакт проходит в блок ENTER, если

    условие "МКУ STO2 не заполнено" истинно.

    STO2 STORAGE 2

    EXP FUNCTION RN1,C24

    0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

    .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

    .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

    .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

    GENERATE 100,FN$EXP

    ENT1 GATE SNF STO2,REFUS

    ENTER STO2

    ADVANCE 160,FN$EXP

    LEAVE STO2

    TERMINATE 1

    REFUS TRANSFER .1,,OUT

    ADVANCE 250,FN$EXP

    TRANSFER ,ENT1

    OUT TERMINATE 1

    Рис. 14

    2.5. Блоки, работающие с памятью

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

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

    емых величин.

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

    ния исходных данных, которые надо изменять при различных прогонах

    модели, промежуточных значений и результатов моделирования. В нача-

    ле моделирования все сохраняемые величины устанавливаются равными

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

    чин используется оператор INITIAL, имеющий следующий формат:

    INITIAL X$ имя,значение

    INITIAL Xj ,значение

    Здесь имя и j - соответственно имя и номер сохраняемой величины, а

    значение - присваиваемое ей начальное значение (константа).

    Для изменения сохраняемых величин в процессе моделирования

    служит блок SAVEVALUE (сохранить величину), имеющий следующий фор-

    мат:

    имя SAVEVALUE A,B

    В поле A указывается номер или имя сохраняемой величины, в которую

    записывается значение операнда B. Если в поле A после имени (номера)

    сохраняемой величины стоит знак + или -, то значение операнда B

    добавляется или вычитается из текущего содержимого сохраняемой

    величины. Например:

    SAVEVALUE 5,Q$LINE

    SAVEVALUE NREF+,1

    Сохраняемые величины имеют единственный СЧА с названием X,

    значением которого является текущее значение соответствующей сохра-

    няемой величины.

    Изменим пример на рис. 14 таким образом, чтобы исходные данные

    модели (средний интервал поступления транзактов и среднее время

    обслуживания) были заданы сохраняемыми величинами, а результат мо-

    делирования (количество потерянных транзактов) фиксировался также в

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

    рис. 15.

    Матрицы сохраняемых величин дают возможность упорядочить сох-

    раняемые значения в виде матриц m*n, где m - число строк, n - число

    столбцов матрицы. Каждая матрица должна быть перед началом модели-

    рования определена с помощью оператора MATRIX (определить матрицу),

    имеющего следующий формат:

    имя MATRIX A,B,C

    Поле A оператора не используется и сохранено в GPSS/PC для

    совместимости со старыми версиями GPSS. В полях B и C указываются

    соответственно число строк и столбцов матрицы, задаваемые констан-

    тами, причем общее число элементов, равное произведению B на C, не

    должно превышать 8191. Например, оператор

    MTAB MATRIX ,10,2

    определяет матрицу с именем MTAB, содержащую десять строк и два

    столбца.

    INITIAL X$TARR,100

    INITIAL X$TSRV,160

    STO2 STORAGE 2

    EXP FUNCTION RN1,C24

    0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

    .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

    .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

    .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

    GENERATE X$TARR,FN$EXP

    ENT1 GATE SNF STO2,REFUS

    ENTER STO2

    ADVANCE X$TSRV,FN$EXP

    LEAVE STO2

    OUT TERMINATE 1

    REFUS TRANSFER .1,,COUT

    ADVANCE 250,FN$EXP

    TRANSFER ,ENT1

    COUT SAVEVALUE NREF+,1

    TRANSFER ,OUT

    Рис. 15

    В начале моделирования элементы всех определенных матриц уста-

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

    ний отдельных элементов матриц используется оператор INITIAL, имею-

    щий следующий формат:

    INITIAL MX$ имя (a,b),значение

    INITIAL MXj (a,b),значение

    Здесь имя и j - соответственно имя и номер матрицы; a и b - номера

    соответственно строки и столбца, задаваемые константами; значение -

    присваиваемое элементу матрицы начальное значение, задаваемое также

    константой.

    Для изменения значений элементов матриц в процессе моделирова-

    ния служит блок MSAVEVALUE (сохранить значение элемента матрицы),

    имеющий следующий формат:

    имя MSAVEVALUE A,B,C,D

    В поле A указывается имя или номер матрицы, после которого,

    как и в блоке SAVEVALUE, может стоять знак + или -. В полях B и C

    указываются номера соответственно строки и столбца, определяющие

    изменяемый элемент матрицы. В поле D указывается величина, исполь-

    зуемая для изменения заданного элемента матрицы. Например:

    MSAVEVALUE 5,3,2,X1

    MSAVEVALUE MTAB+,P$ROW,P$COL,1

    Матрицы имеют единственный СЧА с названием MX, ссылка на кото-

    рый записывается в следующем виде:

    MX$ имя (a,b)

    MXj (a,b)

    Здесь имя и j - соответственно имя и номер матрицы; a и b - номера

    соответственно строки и столбца, задаваемые константами или ссылка-

    ми на СЧА параметров транзактов. Например:

    MX5(2,1)

    MX$MTAB(P$ROW,P$COL)

    2.6. Блоки для работы со списками пользователя

    Так как заблокированные транзакты находятся в списке текущих

    событий, то при большом количестве таких транзактов симулятор

    расходует слишком много времени на просмотр этого списка с целью

    выбора очередного транзакта для продвижения. Для экономии машинного

    времени заблокированные транзакты целесообразно помещать в так на-

    зываемые списки пользователя и оставлять их там до тех пор, пока не

    выполнятся условия, позволяюшие дальнейшее продвижение этих тран-

    зактов. Кроме того, размещение ожидающих транзактов в списках поль-

    зователя позволяет организовать различные дисциплины очередей, от-

    личные от дисциплины "раньше пришел - раньше обслужен", реализован-

    ной в списке текущих событий.

    Списки пользователя представляют собой некоторые буферы, куда

    могут временно помещаться транзакты, выведенные из списка текущих

    событий. В отличие от списков текущих и будущих событий транзакты

    вводятся в списки пользователя и выводятся из них не автоматически,

    а в соответствии с логикой модели с помощью специальных блоков.

    Для ввода транзактов в список пользователя служит блок LINK

    (ввести в список), который может быть использован в двух режимах:

    условном и безусловном. Ограничимся рассмотрением лишь безусловного

    режима, в котором блок LINK имеет следующий формат:

    имя LINK A,B

    В поле A задается имя или номер списка пользователя, в который

    безусловным образом помещается транзакт, вошедший в блок. Поле B

    определяет, в какое место списка пользователя следует поместить

    этот транзакт. Если в поле B записано ключевое слово FIFO, то тран-

    закт помещается в конец списка, если LIFO - в начало списка. В дру-

    гих случаях транзакты упорядочиваются в соответствии с вычисленным

    значением поля B, где обычно записывается один из СЧА транзактов,

    таких как PR, M1 или P. Если поле B содержит СЧА PR, то транзакты

    упорядочиваются по убыванию приоритета. В остальных случаях произ-

    водится упорядочение по возрастанию указанного СЧА.

    Например, блок

    LINK 5,FIFO

    помещает транзакты в список пользователя с номером 5 в порядке их

    поступления в блок. Блок

    LINK BUFER,P$ORDER

    помещает транзакты в список пользователя с именем BUFER, упорядочи-

    вая их по возрастанию параметра с именем ORDER.

    Условия, при которых транзакт помещается в список пользовате-

    ля, в безусловном режиме проверяются средствами, предусмотренными

    разработчиком модели. Например, направить транзакт в список пользо-

    вателя в случае занятости устройства можно так, как показано на

    рис. 16. Если устройство с именем FAC4 занято, то блок GATE не

    впускает транзакт в блок SEIZE, а направляет его в блок LINK с име-

    нем WAIT, и транзакт вводится в конец списка пользователя с именем

    BUFER.

    ....................

    GATE NU FAC4,WAIT

    SEIZE FAC4

    ....................

    WAIT LINK BUFER,FIFO

    ....................

    Рис. 16

    Для вывода одного или нескольких транзактов из списка пользо-

    вателя и помещения их обратно в список текущих событий служит блок

    UNLINK (вывести из списка), имеющий следующий формат:

    имя UNLINK X A,B,C,D,E,F

    В поле A указывается имя или номер списка пользователя. Поле B

    содержит имя блока, в который переходят выведенные из списка поль-

    зователя транзакты. В поле C указывается число выводимых транзактов

    или ALL для вывода всех находящихся в списке транзактов.

    Операнды в полях D и E вместе со вспомогательным операндом X

    определяют способ и условия вывода транзактов из списка пользовате-

    ля. Если поля D и E пусты, то и операнд X не используется, а тран-

    закты выводятся с начала списка пользователя. Если поле D содержит

    ключевое слово BACK, то поле E и вспомогательный операнд X не

    используются, а транзакты выводятся с конца списка. В остальных

    случаях значение поля D интерпретируется как номер параметра тран-

    зактов, находящихся в списке пользователя, а из списка выводится

    заданное число тех транзактов, у которых значение этого параметра

    по отношению к значению операнда в поле E удовлетворяет условию,

    заданному вспомогательным операндом X. Операнд X принимает те же

    значения, что и в блоке TEST.

    В поле F указывается имя блока, куда переходит транзакт, выхо-

    дящий из блока UNLINK, если из списка пользователя не выведен ни

    один транзакт. Если это поле пусто, то выводящий транзакт переходит

    в следующий блок независимо от количества выведенных транзактов.

    Например, блок

    UNLINK 5,NEXT,1

    выводит из списка пользователя с номером 5 один транзакт с начала

    списка и направляет его в блок с именем NEXT. Блок

    UNLINK BUFER,ENT1,1,BACK

    выводит из списка пользователя с именем BUFER один транзакт с конца

    списка и направляет его в блок с именем ENT1. Блок

    UNLINK E P$UCH,MET2,ALL,COND,P$COND,MET3

    выводит из списка пользователя, номер которого записан в параметре

    UCH выводящего транзакта, и направляет в блок с именем MET2 все

    транзакты, содержимое параметра COND которых равно содержимому од-

    ноименного параметра выводящего транзакта. Если таких транзактов в

    списке не окажется, то выводящий транзакт будет направлен в блок с

    именем MET3, в противном случае - к следующему блоку.

    Следует отметить следующие особенности выполнения блока

    UNLINK. Во-первых, если поля D и E содержат ссылки на СЧА транзак-

    тов, то поле D вычисляется относительно транзактов в списке пользо-

    вателя, а поле E - относительно активного транзакта. Во-вторых,

    после вывода транзактов из списка симулятор продолжает или начинает

    продвижение транзакта с наивысшим приоритетом, а при равенстве при-

    оритетов отдает предпочтение транзакту-инициатору вывода.

    Каждый список пользователя имеет следующие СЧА: CH - текущая

    длина списка; CA - средняя длина списка (целая часть); CM - макси-

    мальная длина списка; CC - общее число транзактов, вошедших в

    список; CT - целая часть среднего времени пребывания транзакта в

    списке.

    Воспользуемся рассмотренными блоками для моделирования много-

    канальной СМО с ожиданием транзактов в списке пользователя (рис.

    17). Если МКУ с именем STO2 не заполнено, блок GATE впускает вновь

    прибывший транзакт в блок ENTER, и в МКУ занимается один канал.

    Если же МКУ заполнено, то блок GATE направляет транзакт в блок LINK

    с именем WAIT, помещающий транзакт в конец списка пользователя с

    именем BUFER, моделирующего очередь к МКУ. Каждый транзакт, покида-

    ющий МКУ по завершении обслуживания и освобождающий один канал,

    проходит блок UNLINK и выводит один транзакт с начала списка (если

    список не пуст), направляя его в блок с именем ENT1 на занятие ка-

    нала в МКУ.

    STO2 STORAGE 2

    EXP FUNCTION RN1,C24

    0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

    .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

    .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

    .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

    GENERATE 100,FN$EXP

    GATE SNF STO2,WAIT

    ENT1 ENTER STO2

    ADVANCE 160,FN$EXP

    LEAVE STO2

    UNLINK BUFER,ENT1,1

    TERMINATE 1

    WAIT LINK BUFER,FIFO

    Рис. 17

    Заметим, что для изменения дисциплины обслуживания на "позже

    пришел - раньше обслужен" достаточно или заменить в поле B блока

    LINK FIFO на LIFO, или записать в поле D блока UNLINK операнд BACK.

    Следует также обратить внимание на то, что блоки QUEUE-DEPART для

    сбора статистики об ожидающих транзактах не используются, так как

    почти все те же данные можно получить из статистики о списке поль-

    зователя.

    Рассмотрим еще один пример, иллюстрирующий использование

    списков пользователя для организации нестандартных дисциплин обслу-

    живания. Пусть в одноканальной СМО с ожиданием требуется организо-

    вать такую дисциплину, при которой приоритет отдается заявкам с на-

    именьшим временем обслуживания. Такая модель будет иметь вид, пока-

    занный на рис. 18.

    В параметр TSRV поступающих в модель транзактов в блоке ASSIGN

    записывается случайное время обслуживания, вычисляемое с использо-

    ванием функции EXP. Если устройство SYSTEM свободно, то блок GATE

    впускает транзакт в блок SEIZE, и устройство занимается на время

    P$TSRV. Если же в момент поступления транзакта устройство занято,

    то блок GATE направляет транзакт в блок LINK, который вводит тран-

    EXP FUNCTION RN1,C24

    0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

    .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

    .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

    .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

    GENERATE 100,FN$EXP

    ASSIGN TSRV,80,EXP

    GATE NU SYSTEM,WAIT

    SFAC SEIZE SYSTEM

    ADVANCE P$TSRV

    RELEASE SYSTEM

    UNLINK LINE,SFAC,1

    TERMINATE 1

    WAIT LINK LINE,P$TSRV

    Рис. 18

    закт в список пользователя LINE, упорядочивая транзакты по воз-

    растанию времени обслуживания, записанного в параметре P$TSRV. Блок

    UNLINK по освобождении устройства выводит с начала списка транзакт

    с наименьшим временем обслуживания, обеспечивая тем самым заданную

    дисциплину.

    3. УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ GPSS/PC

    Для управления прогоном модели используются управляющие опера-

    торы GPSS/PC. С одним из них - оператором START - мы уже сталкива-

    лись при рассмотрении блока TERMINATE. Оператор START (начать) име-

    ет следующий формат:

    START A,B,C,D

    Поле A содержит константу, задающую начальное значение счетчи-

    ка завершений. В поле B может быть записано ключевое слово NP -

    признак подавления формирования стандартного отчета по завершении

    моделирования. Если поле B пусто, то по окончании прогона модели

    формируется отчет со стандартной статистической информацией о всех

    объектах модели (см. разд. 5). Поле C не используется и сохранено

    для совместимости со старыми версиями GPSS. Поле D может содержать

    1 для включения в отчет списков текущих и будущих событий. Если по-

    ле D пусто, то выдача в отчет содержимого этих списков не произво-

    дится.

    Оператор SIMULATE (моделировать) устанавливает предел реально-

    го времени, отводимого на прогон модели. Если прогон не завершится

    до истечения этого времени, то он будет прерван принудительно с вы-

    дачей накопленной статистики в отчет.

    Оператор SIMULATE имеет единственный операнд A, содержащий

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

    Оператор размещается перед оператором START, начинающим лимитиро-

    ванный прогон.

    Оператор RMULT (установить значения генераторов) позволяет пе-

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

    чайных чисел RN, определяющие генерируемые ими последовательности.

    Поля A-G оператора могут содержать начальные значения генераторов

    соответственно RN1-RN7, задаваемые константами. Начальные значения

    генераторов, не установленные операторами RMULT, совпадают с номе-

    рами генераторов.

    Оператор RESET (сбросить) сбрасывает всю статистическую инфор-

    мацию, накопленную в процессе прогона модели. При этом состояние

    аппаратных, динамических и запоминающих объектов, а также генерато-

    ров случайных чисел сохраняется, и моделирование может быть возоб-

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

    С оператором RESET связано различие между относительным (СЧА

    C1) и абсолютным (СЧА AC1) модельным временем. Таймер относительно-

    го времени C1 измеряет модельное время, прошедшее после последнего

    сброса статистики оператором RESET, а таймер абсолютного времени

    AC1 - модельное время, прошедшее после начала первого прогона моде-

    ли. Если не использовалось ни одного оператора RESET, то значения

    этих таймеров совпадают. Оператор RESET устанавливает таймер C1 в

    ноль и не влияет на таймер AC1.

    Оператор RESET используется обычно при моделировании нестацио-

    нарных процессов, когда требуется собрать статистику по отдельным

    интервалам стационарности или исключить влияние переходного периода

    на собираемую статистическую информацию.

    Пусть, например, в модели, приведенной на рис. 18, необходимо

    отбросить статистику, собираемую на первой тысяче транзактов. Это

    может быть сделано способом, показанным на рис. 19.

    Первый оператор START начинает прогон модели длиной 1000 тран-

    зактов (переходный период). Поскольку статистика, накопленная на

    этом периоде, не используется, в поле B оператора указан признак

    подавления формирования отчета NP. Оператор RESET сбрасывает накоп-

    ленную статистику, не изменяя состояния модели. Второй оператор

    START начинает основной прогон модели с формированием отчета по за-

    вершении прогона.

    EXP FUNCTION RN1,C24

    0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

    .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

    .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

    .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

    GENERATE 100,FN$EXP

    ASSIGN TSRV,80,EXP

    GATE NU SYSTEM,WAIT

    SFAC SEIZE SYSTEM

    ADVANCE P$TSRV

    RELEASE SYSTEM

    UNLINK LINE,SFAC,1

    TERMINATE 1

    WAIT LINK LINE,P$TSRV

    START 1000,NP

    RESET

    START 10000

    Рис. 19

    Оператор CLEAR (очистить) очищает модель, подготавливая ее к

    повторному прогону. При этом сбрасывается вся накопленная в преды-

    дущем прогоне статистика, из модели удаляются все транзакты, и она

    приводится к исходному состоянию, как перед первым прогоном. Уста-

    навливаются в ноль сохраняемые величины и матрицы, что следует учи-

    тывать при использовании этих объектов для хранения исходных дан-

    ных. Исключение составляют генераторы случайных чисел, которые не

    возвращаются к своим начальным значениям, что позволяет повторить

    прогон модели на новой последовательности случайных чисел. Оператор

    не имеет операндов.

    Оператор CLEAR используется обычно для организации нескольких

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

    чисел. Перед повторением прогона можно при необходимости переопре-

    делить отдельные объекты модели, например емкости многоканальных

    устройств.

    Пусть, например, требуется повторить прогон модели, приведен-

    ной на рис. 17, три раза при емкости МКУ, равной 1, 2 и 3. Это мо-

    жет быть выполнено так, как показано на рис. 20. После каждой

    очистки модели оператором CLEAR оператор STORAGE устанавливает но-

    вое значение емкости МКУ с именем STO2.

    Оператор END (закончить) завершает сеанс 0работы с GPSS/PC и

    возвращает управление в операционную систему. Оператор не имеет

    операндов.

    STO2 STORAGE 1

    EXP FUNCTION RN1,C24

    0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

    .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

    .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

    .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

    GENERATE 100,FN$EXP

    GATE SNF STO2,WAIT

    ENT1 ENTER STO2

    ADVANCE 160,FN$EXP

    LEAVE STO2

    UNLINK BUFER,ENT1,1

    TERMINATE 1

    WAIT LINK BUFER,FIFO

    START 10000

    CLEAR

    STO2 STORAGE 2

    START 10000

    CLEAR

    STO2 STORAGE 3

    START 10000

    Рис. 20

    Как правило, управляющие операторы не включаются в исходную

    программу, т.е. не имеют номеров строк, а вводятся пользователем

    непосредственно с клавиатуры ПК.

    Страницы: 1, 2, 3, 4, 5


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.