Имитационное моделирование на языке GPSS. Методическое пособие по дисциплине "Компьютерное моделирование". Алтаев А.А. - 43 стр.

UptoLike

Составители: 

43
SEIZE 52
SAM SEIZE 84
(транзакт блока TRANSFER пытается войти в блок SEIZE; если соответствующее
устройство занято, то он направляется в блок SAM; если транзакт не может войти в блок
SAM, то он остается в данном блоке TRANSFER и повторяет описанные выше операции
при каждом изменении текущего времени).
Если в поле А стоит ALL, то транзакты, входящие в блок, могут
опрашивать много
путей (блоков). Поле В определяет первый выбираемый блок, поле Споследний. Поле
D определяет индексную константу i. Эта константа дает пользователю возможность
опрашивать определенные блоки, находящиеся между теми, которые заданы в полях В и
С. Транзакт, вошедший в блок TRANSFER, далее пытается выйти через блок, указанный в
поле В, Если
блок, указанный в поле В, занят, то транзакт пытается войти в блоки с
номерами Y + i, Y +2i,..., Z, где Y— номер блока, указанного в поле В, Z — номер блока,
указанного в поле С. При этом Z - Y + М
i
где Мнекоторое целое положительное число.
Если транзакт не может войти ни в один из этих блоков, он остается в блоке TRANSFER и
при изменении текущего времени повторяет все описанные выше операции. Если задан
режим ALL, пользователь должен проследить за тем, чтобы номера просматриваемых
блоков совпадали с номерами, присваиваемыми блокам симулятором GPSS. Например:
TRANSFER ALL,FIRST,LAST,3
FIRST SEIZE 1
ASSIGN 12,K1„PB
TRANSFER ,LAST+2
SEIZE 2
ASSIGN 12,K2,,PB
TRANSFER ,LAST+2
LAST SEIZE 3
(транзакт пытается войти в блок FIRST; если он получает отказ, что определяется типом
блока FIRST, то транзакт пытается войти в блок FIRST+3; если и в этом блоке будет отказ,
то транзакт пытается войти в блок FIRST+6 (LAST); если транзакт не смог войти ни в
один из трех блоков, он остается в блоке TRANSFER
и программа (система) переходит к
обработке другого транзакта). При каждой попытке продвинуть транзакты, находящиеся в
блоке TRANSFER, все проверки, перечисленные выше, производятся сначала, как и в
режиме BOTH, поэтому время счета также может значительно возрасти.
Если в поле А стоит SIM, то выбирается один из двух возможных путей. Каждый
входящий в блок транзакт содержит
информацию для принятия решения. В каждом
транзакте есть индикатор SIM, установленный в 0 или 1. Если значение индикатора SIM
равно 1, то транзакт будет послан в блок указанный в поле С, а индикатор SIM будет
установлен в 0. Если индикатор SIM равен 0, то транзакт может направляться по
выбранному для него пути. Если транзакт получает отказ при попытке войти
в какой-либо
блок, этот индикатор устанавливается в 1, фиксируя тот факт, что некоторое условие не
выполняется. Если одновременно должны удовлетворяться несколько условий, каждый из
них может быть проверен, и если все они удовлетворяются, то индикатор SIM транзакта
остается равным 0. Если не выполняется хотя бы одно из условий, индикатор SIM
устанавливается в 1. В таких
случаях блок, заданный в поле С, указывает блок, в котором
проверялось первое условие, и транзакт выполняет проверку условий, пока все они не
будут удовлетворяться одновременно. Блок ADVANCE также устанавливает индикатор
SIM в 0. Проверка состояний связана с блоками, которые могут задерживать транзакты.
Для проверки условий используется блок GATE, описанный ранее.
Существует режим проверки одновременного
выполнения нескольких условий. В
приведенном ниже примере транзакты не могут перейти к блоку SEIZE, если устройства
1, 2 и 15 не будут одновременно свободны. При входе транзактов в блок TRANSFER
          SEIZE            52
      SAM SEIZE            84

 (транзакт блока TRANSFER пытается войти в блок SEIZE; если соответствующее
устройство занято, то он направляется в блок SAM; если транзакт не может войти в блок
SAM, то он остается в данном блоке TRANSFER и повторяет описанные выше операции
при каждом изменении текущего времени).
    Если в поле А стоит ALL, то транзакты, входящие в блок, могут опрашивать много
путей (блоков). Поле В определяет первый выбираемый блок, поле С — последний. Поле
D определяет индексную константу i. Эта константа дает пользователю возможность
опрашивать определенные блоки, находящиеся между теми, которые заданы в полях В и
С. Транзакт, вошедший в блок TRANSFER, далее пытается выйти через блок, указанный в
поле В, Если блок, указанный в поле В, занят, то транзакт пытается войти в блоки с
номерами Y + i, Y +2i,..., Z, где Y— номер блока, указанного в поле В, Z — номер блока,
указанного в поле С. При этом Z - Y + Мi где М — некоторое целое положительное число.
Если транзакт не может войти ни в один из этих блоков, он остается в блоке TRANSFER и
при изменении текущего времени повторяет все описанные выше операции. Если задан
режим ALL, пользователь должен проследить за тем, чтобы номера просматриваемых
блоков совпадали с номерами, присваиваемыми блокам симулятором GPSS. Например:
              TRANSFER ALL,FIRST,LAST,3
FIRST         SEIZE          1
              ASSIGN         12,K1„PB
              TRANSFER ,LAST+2
              SEIZE          2
              ASSIGN         12,K2,,PB
              TRANSFER ,LAST+2
LAST          SEIZE          3

(транзакт пытается войти в блок FIRST; если он получает отказ, что определяется типом
блока FIRST, то транзакт пытается войти в блок FIRST+3; если и в этом блоке будет отказ,
то транзакт пытается войти в блок FIRST+6 (LAST); если транзакт не смог войти ни в
один из трех блоков, он остается в блоке TRANSFER и программа (система) переходит к
обработке другого транзакта). При каждой попытке продвинуть транзакты, находящиеся в
блоке TRANSFER, все проверки, перечисленные выше, производятся сначала, как и в
режиме BOTH, поэтому время счета также может значительно возрасти.
   Если в поле А стоит SIM, то выбирается один из двух возможных путей. Каждый
входящий в блок транзакт содержит информацию для принятия решения. В каждом
транзакте есть индикатор SIM, установленный в 0 или 1. Если значение индикатора SIM
равно 1, то транзакт будет послан в блок указанный в поле С, а индикатор SIM будет
установлен в 0. Если индикатор SIM равен 0, то транзакт может направляться по
выбранному для него пути. Если транзакт получает отказ при попытке войти в какой-либо
блок, этот индикатор устанавливается в 1, фиксируя тот факт, что некоторое условие не
выполняется. Если одновременно должны удовлетворяться несколько условий, каждый из
них может быть проверен, и если все они удовлетворяются, то индикатор SIM транзакта
остается равным 0. Если не выполняется хотя бы одно из условий, индикатор SIM
устанавливается в 1. В таких случаях блок, заданный в поле С, указывает блок, в котором
проверялось первое условие, и транзакт выполняет проверку условий, пока все они не
будут удовлетворяться одновременно. Блок ADVANCE также устанавливает индикатор
SIM в 0. Проверка состояний связана с блоками, которые могут задерживать транзакты.
Для проверки условий используется блок GATE, описанный ранее.
   Существует режим проверки одновременного выполнения нескольких условий. В
приведенном ниже примере транзакты не могут перейти к блоку SEIZE, если устройства
1, 2 и 15 не будут одновременно свободны. При входе транзактов в блок TRANSFER
                                                                                      43