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

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

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

                        GENERATE    100,40
                        TERMINATE   1
                        START       1000

           Если необходимо  управлять  продолжительностью  прогона по мо-
       дельному времени, то в модели используется специальный сегмент, на-
       зываемый сегментом таймера.

                        GENERATE    100,40
                        TERMINATE
                        GENERATE    100000
                        TERMINATE   1
                        START       1

           Например, в модели из двух сегментов,  приведенной на рис.  2,
       первый (основной) сегмент выполняет те же функции, что и в предыду-
       щем примере.  Заметим,  однако, что поле A блока TERMINATE в первом
       сегменте пусто, т.е. уничтожаемые транзакты не уменьшают содержимо-
       го  счетчика  завершений.  Во втором сегменте блок GENERATE создаст
     первый транзакт в момент модельного времени, равный 100000. Но этот
     транзакт окажется и последним в данном сегменте,  так как,  войдя в
     блок TERMINATE,  он обратит в  0  содержимое  счетчика  завершений,
     установленное оператором START равным 1.  Таким образом, в этой мо-
     дели гарантируется завершение прогона в определенный момент модель-
     ного времени,  а точное количество транзактов,  прошедших через мо-
       дель, непредсказуемо.
         В приведенных примерах транзакты, входящие в модель через блок
     GENERATE,  в тот же момент модельного времени уничтожались в  блоке
     TERMINATE.  В моделях систем массового обслуживания заявки обслужи-
     ваются приборами (каналами) СМО  в  течение  некоторого  промежутка
     времени прежде, чем покинуть СМО. Для моделирования такого обслужи-
     вания, т.е. для задержки транзактов на определенный отрезок модель-
     ного  времени,  служит блок ADVANCE (задержать),  имеющий следующий
       формат:
                        имя    ADVANCE    A,B
           Операнды в полях A и B имеют тот  же  смысл,  что  и  в  соот-
       ветствующих полях блока GENERATE.  Следует отметить, что транзакты,
       входящие в блок ADVANCE,  переводятся из списка текущих  событий  в
       список будущих событий, а по истечении вычисленного времени задерж-
       ки возвращаются назад,  в список текущих событий,  и их продвижение
       по  блок-схеме продолжается.  Если вычисленное время задержки равно
       0,  то транзакт в тот же момент модельного времени переходит в сле-
       дующий блок, оставаясь в списке текущих событий.
            Например, в сегменте, приведенном на рис. 3, транзакты, посту-
       пающие  в модель из блока GENERATE через случайные интервалы време-
       ни, имеющие равномерное распределение на отрезке [60;140], попадают
       в  блок ADVANCE.  Здесь определяется случайное время задержки тран-
       закта,  имеющее равномерное распределение на  отрезке  [30;130],  и
       транзакт переводится в список будущих событий. По истечении времени
       задержки транзакт возвращается в список текущих событий и входит  в
       блок TERMINATE, где уничтожается. Заметим, что в списке будущих со-
       бытий, а значит и в блоке  ADVANCE  может  одновременно  находиться
       произвольное количество транзактов.

                        GENERATE    100,40
                        ADVANCE     80,50
                        TERMINATE   1

         В рассмотренных выше примерах случайные интервалы времени под-
     чинялись равномерному закону распределения вероятностей.  Для полу-
     чения случайных величин с другими распределениями в GPSS/PC исполь-
       зуются вычислительные объекты: переменные и функции.
       Как известно,  произвольная случайная величина связана со слу-
     чайной  величиной  R,  имеющей равномерное распределение на отрезке
     [0;1],  через свою обратную функцию  распределения.  Для  некоторых
     случайных  величин уравнение связи имеет явное решение,  и значение
     случайной величины с  заданным  распределением  вероятностей  может
     быть вычислено через R по формуле.  Так, например, значение случай-
     ной величины E с показательным (экспоненциальным) распределением  с
       параметром d вычисляется по формуле:

                         E= -(1/d) * ln(R)
     Напомним, что  параметр d имеет смысл величины,  обратной математи-
     ческому ожиданию E, а, следовательно, 1/d - математическое ожидание
       (среднее значение) случайной величины E.
       Для получения случайной величины R с равномерным распределени-
     ем на отрезке [0;1] в GPSS/PC имеются встроенные генераторы случай-
     ных чисел.  Для получения случайного числа путем обращения к такому
     генератору достаточно записать системный СЧА RN с номером генерато-
     ра, например  RN1.  Правда,  встроенные  генераторы случайных чисел
     GPSS/PC дают числа не на отрезке [0;1],  а целые  случайные  числа,
     равномерно  распределенные  от 0 до 999,  но их нетрудно привести к
       указанному отрезку делением на 1000.
           Проще всего  описанные  вычисления  в  GPSS/PC  выполняются  с
       использованием арифметических переменных.  Они могут быть целыми и
       действительными. Целые переменные определяются перед началом моде-
       лирования  с  помощью  оператора определения VARIABLE
       (переменная), имеющего следующий формат:

                        имя    VARIABLE    выражение
          Здесь  имя - имя переменной, используемое для ссылок на нее, а
       выражение - арифметическое выражение, определяющее переменную.
       Арифметическое  выражение представляет собой комбинацию операндов,
       в качестве которых могут выступать константы, СЧА  и функции, зна-
       ков арифметических  операций  и круглых скобок.  Следует заметить,
       что знаком операции умножения в GPSS/PC является символ # (номер).
       Результат каждой промежуточной операции в целых переменных преобра-
       зуется к целому типу путем отбрасывания  дробной части, и, таким
       образом, результатом операции деления является целая часть частного.
           Действительные переменные   0определяются  перед началом модели-
       рования с помощью оператора определения FVARIABLE,  имеющего тот же
     формат,  что и оператор VARIABLE. Отличие действительных переменных
     от целых заключается в том,  что в  действительных  переменных  все
     промежуточные  операции  выполняются  с  сохранением  дробной части
     чисел, и лишь окончательный результат приводится к целому типу отб-
       расыванием дробной части.
       Арифметические переменные обоих типов имеют единственный СЧА с
     названием V, значением которого является результат вычисления ариф-
     метического выражения, определяющего переменную. Вычисление выраже-
     ния  производится при входе транзакта в блок,  содержащий ссылку на
       СЧА V с именем переменной.
         Действительные переменные  могут быть использованы для получе-
     ния случайных интервалов времени с показательным законом  распреде-
     ления.  Пусть  в модели из примера на рис.  3 распределения времени
     поступления транзактов и времени задержки должны иметь  показатель-
       ный закон. Это может быть сделано так, как показано на рис. 4.

           TARR    FVARIABLE     -100#LOG((1+RN1)/1000)
           TSRV    FVARIABLE     -80#LOG((1+RN1)/1000)
                   GENERATE      V$TARR
                   ADVANCE       V$TSRV
                   TERMINATE     1

                              Рис. 4

       Переменная с именем TARR задает выражение для  вычисления  ин-
     тервала  поступления со средним значением 100,  вторая переменная с
     именем TSRV - для вычисления времени задержки со средним  значением
     80.  Блоки  GENERATE  и  ADVANCE  содержат в поле A ссылки на соот-
     ветствующие переменные,  при этом поле B не используется, так как в
     поле A содержится случайная величина, не нуждающаяся в модификации.
           Большинство случайных величин не  может  быть  получено  через

     случайную величину R с помощью арифметического выражения. Кроме то-
     го, такой  способ  является достаточно трудоемким,  так как требует
     обращения к математическим  функциям,  вычисление  которых  требует
     десятков  машинных  операций.  Другим  возможным  способом является
       использование вычислительных объектов GPSS/PC типа функция.

       Функции используются для вычисления величин,  заданных таблич-
     ными зависимостями. Каждая функция определяется перед началом моде-
     лирования с помощью оператора определения FUNCTION (функция), имею-
       щего следующий формат:
                       имя    FUNCTION    A,B
       Здесь  имя - имя функции,  используемое для ссылок на нее; A –
       стандартный числовой атрибут,  являющийся аргументом функции;  B -
       тип функции и число точек таблицы, определяющей функцию.
         Существует пять типов функций.  Рассмотрим вначале  непрерывные
       числовые функции, тип которых кодируется буквой C. Так, например,
       в определении непрерывной числовой функции,  таблица которой соде-
       ржит 24 точки, поле B должно иметь значение C24.
            При использовании непрерывной функции для  генерирования  слу-
       чайных  чисел ее аргументом должен быть один из генераторов случай-
       ных чисел RNj. Так, оператор для определения функции показательного
       распределения может иметь следующий вид:
                    EXP    FUNCTION    RN1,C24
       Особенностью использования  встроенных  генераторов случайных чисел
       RNj в качестве аргументов функций является то,  что их  значения  в
       этом контексте интерпретируются как дробные числа от 0 до 0,999999.
           Таблица с координатами точек функции располагаетс
12345След.
скачать работу

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

 

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

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


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