Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Блоки, изменяющие маршруты транзактов
В приведенных выше примерах транзакты, выходящие из любого блока, всегда поступали в следующий блок. В более сложных моделях возникает необходимость направления транзактов к другим блокам в зависимости от некоторых условий. Эту возможность обеспечивают блоки изменения маршрутов транзактов. Блок TRANSFER (передать) служит для передачи входящих в него транзактов в блоки, отличные от следующего. Блок имеет девять режимов работы, из которых рассмотрим здесь лишь три наиболее часто используемых. В этих трех режимах блок имеет следующий формат: имя TRANSFER A,B,C
Смысл операндов в полях A, B и C зависит от режима работы блока. В режиме безусловной передачи поля A и C пусты, а в поле B указывается имя блока, к которому безусловным образом направляется транзакт, вошедший в блок TRANSFER. Например:
TRANSFER,FINAL
В режиме статистической передачи операнд A определяет вероятность, с которой транзакт направляется в блок, указанный в поле C. С вероятностью 1-A транзакт направляется в блок, указанный в поле B (в следующий, если поле B пусто). Вероятность в поле A может быть задана непосредственно десятичной дробью, начинающейся с точки. Например, блок
TRANSFER.75,THIS,THAT
Если же поле A начинается не с десятичной точки и не содержит одного из ключевых слов —признаков других режимов работы блока, то его значение рассматривается как количество тысячных долей в вер оятности передачи. Например, предыдущий блок TRANSFER можно записать также в следующем виде:
TRANSFER 750,THIS,THAT
В режиме логической передачи в поле A записывается ключевое слово BOTH (оба). Транзакт, поступающий в блок TRANSFER, сначала пытается войти в блок, указанный в поле B (или в следующий блок, если поле B пусто), а если это не удается, т.е. блок B отказывает транзакту во входе, то в блок, указанный в поле C. Если и эта попытка неудачна, то транзакт задерживается в блоке TRANSFER до изменения условий в модели, делающего возможным вход в один из блоков B или C, причем при одновременно возникшей возможности предпочтение отдается блоку B. Например: TRANSFER BOTH,MET1,MET2
Блок TEST (проверить) служит для задержки или изменения маршрутов транзактов в зависимости от соотношения двух СЧА. Он имеет следующий формат:
имя TEST X A,B,C
Вспомогательный операнд X содержит условие проверки соотношения между СЧА и может принимать следующие значения: L (меньше); LE (меньше или равно); E (равно); NE (не равно); GE (больше или равно); G (больше). Поле A содержит первый, а поле B —второй из сравниваемых СЧА. Если проверяемое условие A X B выполняется, то блок TEST пропускает транзакт в следующий блок. Если же это условие не выполняется, то транзакт переходит к блоку, указанному в поле C, а если оно пусто, то задерживается перед блоком TEST. Например, блок
TEST LE P$TIME,C1
не впускает транзакты, у которых значение параметра с именем TIME больше текущего модельного времени. Блок
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, если в момент их Блоки рассматриваемой группы используются при моделировании различных СМО с потерями заявок. Воспользуемся, например, блоками 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
Блоки, работающие с памятью
Для хранения в памяти отдельных числовых значений и массивов таких значений используются сохраняемые величины и матрицы сохраняемых величин. Сохраняемые величины могут использоваться в модели для хранения исходных данных, которые надо изменять при различных прогонах модели, промежуточных значений и результатов моделирования. В начале моделирования все сохраняемые величины устанавливаются равными 0. Для установки отличных от 0 начальных значений сохраняемых величин используется оператор INITIAL, имеющий следующий формат:
INITIAL X$ имя, значение INITIAL X j, значение
Здесь имя и 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 MX j (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) MX j (a, b)
Здесь имя и j - соответственно имя и номер матрицы; a и b - номера соответственно строки и столбца, задаваемые константами или ссылками на СЧА параметров транзактов. Например:
MX5(2,1)
|
||||||||
Последнее изменение этой страницы: 2020-12-09; просмотров: 69; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.30.232 (0.053 с.) |