Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Моделирование на GPSS

аняемые величины имеют единственный  СЧА  с  названием  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 которых равно содержимому од-
      ноименного параметра выводящего транзакта.  Если таких транзактов в
      списке не окажется,  то выводящий транзакт буде
Пред.678910След.
скачать работу

Моделирование на GPSS

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ