<< Пред.           стр. 4 (из 6)           След. >>

Список литературы по разделу

  TABLE ( составить таблицу )
  Этот ОУ позволяет получить дополнительную, по сравнению со стандартным отчётом, статистическую информацию. Например, исследователя интересует текущее содержание памяти в различных репликах. Полученное значение математического ожидания, может использоваться для выбора числа серверов в проектируемой системе. ОУ TABLE позволяет получить математическое ожидание (среднее значение), стандартное отклонение и относительные частоты попадания в заданный интервал. Формат ОУ TABLE имеет вид:
  < label TABLE A,B,C,D,[E] >,
 label - не имеет значения по умолчанию, отсутствие ярлыка приводит к ошибке компиляции, определяет имя или номер таблицы,
 А – не имеет значения по умолчанию, определяет вид операций с таблицей. Существует 4 вида возможных таблиц, задаваемых операндом А:
 1.Операнд А определяется выражением, на основе которого определяется статистика, помещаемая в таблицу. Эта статистика для совместимости с другими версиями должна представлять собой только простой СЧА и не должна быть представлена в матричных форматах типа MX,MH,MB,ML.
 2. Операнд А определяется также как в случае 1, но впереди стоит знак минус. В этом случае таблица называется дифференциальной, т.е. берётся разница между текущим значением и предыдущим и результат помещается в таблицу, текущее значение сохраняется для последующих вычислений.
 3. Операнд А имеет впереди символы IA (interarrival ), что обозначает определение промежутков между последовательными входами. При этом определяется разность между текущим значением абсолютного времени и значением абсолютного времени в предыдущий момент, результат помещается в таблицу, текущее значение времени сохраняется для последующих вычислений.
 4. Операнд А имеет впереди символы RT (arrival rate), что обозначает определение доли приходов (относительной частоты) в какой то интервал. При этом варианте операндом Е оговаривается интервал времени являющийся шагом таблицы. Этот вид используется для определения такой статистики как « приход в течении часа » . Счётчик приходов ОБ TABULATE при каждом исполнении ОУ TABLE увеличивается на единицу. После того как определена таблица, управление осуществляется с помощью «контролёра транзактов », располагающегося в СБС, где к текущему значению абсолютного времени прибавляется значение времени, стоящее в операнде Е. При этом каждый раз производятся следующие действия: накопленное время записывается в таблицу, счётчик приходов обнуляется, контролируемый транзакт включается в СБС со временем равным текущему значению абсолютного времени плюс значение операнда Е.
 В - не имеет значения по умолчанию, определяет собой верхнее значение первого ( нижнего ) интервала частот, в GPSS/H допускается использование числа с плавающей точкой. Первый интервал может простираться до минус бесконечности.
 С – не имеет значения по умолчанию, представляет собой ширину интервала и постоянен для всех интервалов кроме первого и последнего. Естественно, что ширина интервала должна быть больше нуля и может представляться числом с плавающей точкой. (Для лучшего восприятия таблицы следует использовать целочисленные значения).
 D – не имеет значения по умолчанию, определяет число частотных интервалов таблицы. Если первый символ операнда D буквенный - а именно W, то такая таблица является взвешенной . При этом ОБ TABULATE, используя свой операнд В создаёт взвешенные значения средних величин, стандартных отклонений, количества наблюдений. На рис. 3.2 приведена схема построения таблицы
 
 
 
  1-ый 2-ой 3-ий D-1- ый Последний
  С
 
 - В В+С В+2С В+(D-2)C B+(D-1)C
 Рис.3.2 Схема построения таблицы
  При построении таблицы используются следующие правила :
 Если, записываемое в таблицу значение меньше или равно верхней границе первого интервала, оно записывается в этот первый интервал ,
  Если, записываемое в таблицу значение больше верхней границы предпоследнего интервала, оно записывается в последний интервал ,
 Все другие значения включаются в свои частотные интервалы, по принципу меньше или равно значению верхнего предела промежуточного интервала,
 Когда происходит запись наблюдаемого значения, показания счётчика частотного интервала увеличивается на единицу.
 Рассмотрим примеры записи ОУ TABLE :
 1. SAM TABLE M1,100,100,10
 2. SAM TABLE M1,100,100,W10
 3. 10 TABLE IA,50,50,5
 4. ARRIV TABLE RT50,50,10,1000
  Первый и второй примеры для таблицы SAM, отличаются только тем, что вторая таблица взвешенная. В них верхняя граница первого интервала равна 100 , ширина промежуточных интервалов равна 100, число интервалов 10. В третьем примере для таблицы с номером 10, определяются промежутки между приходами транзактов, верхняя граница первого интервала равна 50, ширина промежуточных интервалов равна 50, число интервалов равно 5. В четвёртом примере для таблицы с именем ARRIV определяется доля приходов в долях 1000 ( операнд Е ), верхняя граница первого интервала равна 50, ширина промежуточных интервалов равна 50 , число интервалов равно 10.
  В. Операторы управления логикой моделирования
 DO/ENDO( Выполнить/ Завершить выполнение )
 Эти два парных оператора служат для организации петли управления процессом ИМ. Когда необходимо провести несколько независимых прогонов МФ, существует два способа получения этих прогонов не выходя из процесса ИМ. Первый из них осуществляется с помощью ОУ CLEAR и парного с ним ОУ START , при этом число этих парных ОУ равняется числу желательных прогонов . Естественно, что при большом числе прогонов запись МФ перегружается этими указаниями. Второй способ - организация компактной записи с помощью парных ОУ DO/ENDDO, формат этих ОУ имеет вид :
  < [label] DO A,B,[C] >
  < [label] ENDDO >
 label - не обязательный ярлык , который чаще всего отсутствует, характеризует собой имя организуемой пели ,
 А - не имеет значения по умолчанию, символизирует собой индекс начала петли, представляющий собой целочисленную скалярную АМП, записываемый в виде &I=1.
 B - не имеет значения по умолчанию, характеризует собой предельный номер конечного члена петли,
 С – не обязательный операнд, по умолчанию равен единице, задаёт приращение индекса.
  Когда индекс достигает предельного значения , исполняется ОУ ENDDO и петля управления прекращает своё существование. Если значения заданы числом с плавающей точкой, то число усекается до целого значения, отрицательные приращения программой не поддерживаются. Количество петель управления может достигать 19, причём они вкладываются друг в друга, создавая своеобразную иерархию, второстепенные петли в МФ изображаются с отступом вправо от основной петли, следующая вложенная петля также отступает вправо. Между ОУ DO/ENDDO размещаются другие ОУ , например CLEAR/START. Отметим важные особенности петли ОУ DO/ENDDO :
 DO/ENDDO создают структуру петли управления, а не петли транзактов, поэтому в петле присутствуют только ОУ, а не ОБ.
 Необходимо помнить, что операнды в петле должны записываться по правилам записи операндов, предусмотренных программой, т.е. без пробелов, появление пробела справа воспринимается программой как начало комментарий.
 Рассмотрим пример записи петли управления:
  DO &I=1,10,1
  START 1
  CLEAR
  ENDDO
  END
  В примере петля управления задана операндами ОУ DO, операнд D можно было бы не писать, так как его значение по умолчанию и так равно 1, петля начинается с первого шага и заканчивается на 10 -м шаге. При каждом значении индекса происходит исполнение ОУ START/CLEAR . При отсутствии петли управления эту пару ОУ надо было бы написать 10 раз подряд. Отметим также, что при введении петли управления на первое место в модуле управления встаёт ОУ DO.
  ОУ DO/ENDDO являются важными компонентами мощного и гибкого языка операторов управления (control statement language -CSL), являющегося частью GPSS/H .
 Другие ОУ управления логикой
  Другими компонентами CLS являются ОУ, обеспечивающий простоту вычислений - LET, ОУ ввода и вывода информации – GETLIST и PUTPIC, логические операторы IF,ELSEIF,ELSE ,ENDIF, ОУ способный обращаться и вызывать внешние подпрограммы - CALL , ОУ безусловного обращения GOTO . Все эти операторы представляют несомненный интерес , но их рассмотрение выходит за рамки предлагаемого материала.
 
 3.3.3 Операторы описания
  Ниже рассмотрим только основные ОО, которые будут использоваться в материале, приводимые ОО даются в алфавитном порядке.
  INTEGER
 Этот ОО используется для описания целочисленных АМП, представляющих собою скалярную одноразмерную переменную. Все целочисленные АМП должны быть определены в ОО INTEGER до их первого появления в МФ. Формат записи ОО INTEGER имеет вид :
  < INTEGER A,B,C,… >
  label - не имеет значения по умолчанию, появление ярлыка воспринимается как ошибка компиляции.
 А – не имеет значения по умолчанию, отсутствие операнда воспринимается как ошибка компиляции, определяет имя целочисленной АМП.
 В,С - имеют тот же смысл, что и операнд А и при необходимости определяют дополнительные целочисленные АМП.
  Таким образом, ОУ INTEGER может определять несколько АМП одновременно. При этом АМП разделяются запятыми, если определяется одноразмерный массив, то число членов массива заключается в круглые скобки. Рассмотрим пример использования ОУ INTEGER
 1. INTEGER &I,&J,&K
 2. INTEGER &IVEC(25)
 В первом примере задаются 3 различных АМП, во втором примере определяется массив, включающий в себя 25 членов. Существует ещё четыре ОО, описывающие другие типы АМП ( см.3.3.4).
  OPERCOL ( переназначить начало записи операндов )
  Этот ОО используется для переназначения стартовой позиции записи операндов, которая по умолчанию начинается с 25-ой колонки ( подробнее см. параграф 3.4) и может меняться от 10-ой до 60-ой колонки. Формат записи ОО OPERCOL (ORERand start COLumn ) имеет вид:
  < OPERCOL A >,
 А – по умолчанию равен 25, при наличии операнда меняет позицию начала записи операндов, в соответствии с числом стоящим в поле операнда (10 –60 ).
 Приведём пример записи ОО OPERCOL :
  OPERCOL 35
  В примере стартовая позиция начала записи операндов изменена на 35.
  Применение ОО OPERCOL особенно полезно, когда создаются одинарные или вложенные петли управления, ОО OPERCOL располагается в модуле описания.
 REALLOCATE ( перераспределять )
  Этот ОО используется для указания об увеличении общей памяти, которая в студенческой версии имеет объём равный 32720 байт, а обычно используется 10000 байт. Располагается ОО REALLOCATE в любом месте МФ, но разумней располагать его в модуле описания, чтобы не дожидаться появления сообщения об ошибке № 411 –« out of COMMON »- переполнение общей памяти. Формат записи ОО REALLOCATE имеет вид :
  < REALLOCATE A,B >
 А - не имеет значения по умолчанию, представляет собой имя переназначаемого объекта (в нашем случае – памяти),
 В - по умолчанию равен 10000 байт, представляет собой число, обозначающее запрашиваемый объём памяти ( до 32720 байт ).
  В программе существует другая возможность увеличения объёма общей памяти, непосредственно в командной строке можно записать опцию MAXCOM после имени файла, что автоматически увеличивает объём общей памяти до максимума, действие этой опции перекрывает эффект действия ОО REALLOCATE , но увеличивает время ИМ.
  Рассмотрим пример применения ОО REALLOCATE :
  REALLOCATE COM,20000
 В примере общая память переназначается до значения 20000 байт.
 
 3.3.4. &-переменные( амперпеременные –АМП)
  В языке GPSS/H имеется мощное средство для хранения данных, получаемых при моделировании; сбора статистики и создания собственных образцов файла отчета. Это так называемые &-переменные -АМП (они начинаются со знака & - “амперсант”). Эти переменные могут быть целочисленными (integer), вещественными (real), или символьными (character).
 Для использования таких переменных в вашей модели необходимо объявить об их использовании в начале программы с помощью следующих операторов описания:
  INTEGER
  Этот ОО используется для описания целочисленных &-переменных. Формат оператора следующий:
 INTEGER avar, …,
 где avar – имя очередной целочисленной &-переменной.
 REAL
 Используется для описания вещественных &-переменных. Формат:
 REAL avar, …,
 где avar – имя очередной целочисленной &-переменной.
 CHAR
 Формат этого оператора, описывающего символьные &-переменные, несколько отличается от формата двух предыдущих:
 CHAR *N avar,…,
 где N – количество символов в переменной.
 VCHAR
 Аналогично предыдущему оператору, но описанная таким образом переменная может быть любой длины, но не более N.
 В описанных выше операторах есть возможность придать переменной новое качество: описать ее как линейный массив (вектор). Для этого количество элементов массива указывается в скобках после имени переменной (подобно аналогичным операторам в других языках программирования).
  LET
  Этот оператор описания используется для присвоения &-переменным любых видов новых значений. Располагается этот оператор в разделе описания и имеет формат:
 ,
 где avar – имя переменной, а xpress – любое математическое выражение с использованием функций, &-переменных, стандартных числовых атрибутов и т.д., либо число или строка (для строчных &-переменных). Этот оператор описания может располагаться в модели непосредственно после описания соответствующих переменных. В случаях, когда необходимо задать значение переменной непосредственно в теле программы, используется оператор BLET. С его помощью можно записывать математические выражения с участием СЧА, амперсант-переменных, постоянных и математических функций.
 
 3.3.5. Случайные числа и функции
  На практике часто встречаются случайные величины, распределение которых неравномерно, а подчиняется, например, нормальному закону, закону Эрланга или Вейбулла. Для моделирования процессов, связанных с этими величинами, предназначены такие средства языка GPSS/H, как генераторы случайных чисел и функции.
  В GPSS/H имеется восемь встроенных генераторов случайных чисел (ГСЧ), которые реализуют процедуру генерации псевдослучайного числа из диапазона (0;1) с равномерным распределением вероятности. Как известно, из распределенных таким образом может быть получен поток чисел, распределенных по любому другому закону. Именно таким приемом пользуется GPSS/H для получения разнообразных законов.
  При работе программы GPSS/H встроенный ГСЧ при каждом запросе выдает случайное число. Чтобы получить это число в явном виде, можно воспользоваться СЧА потока случайных чисел:
 
 
 СЧА Описание
 RN(j) Создает поток псевдослучайных чисел с генератора с номером j. Если используется в качестве аргумента функции, числа получаются с плавающей запятой, равномерно распределенные в интервале (0,1), исключая концы интервала. В прочих случаях – числа целые, распределены равномерно в интервале (0,999), включая концы интервала.
 FRN(j) Создает число из потока псевдослучайных чисел с номером j. Числа получаются с плавающей запятой, равномерно распределенные в интервале (0,1), исключая концы интервала.
 
 Используя СЧА потоков случайных чисел, можно задавать случайные функции. В GPSS/H обычно используется табличный способ задания функций. Для определения функции служит управляющий оператор FUNCTION (см. 3.3.2).
  В GPSS/H имеется также библиотека встроенных функций, реализующих часто применяемые законы распределения случайных чисел. Ниже перечислены некоторые из них.
  RVBIN
 Описывает дискретное биномиальное распределение. Параметрами являются: номер ГСЧ, количество испытаний и вероятность успешного испытания.
  RVERL
 Описывает М-распределение Эрланга с параметрами: номер ГСЧ, целое положительное m и среднее.
  RVEXPO
 Описывает экспоненциальное распределение с параметрами: номер ГСЧ, заданное среднее.
  RVGAMA
 Описывает гамма-распределение. Задаются: номер ГСЧ, параметр формы и параметр шкалы.
  RVNORM
 Описывает числа с нормальным распределением. Параметры: номер ГСЧ, среднее и стандартное отклонение.
  Использование встроенных функций значительно облегчает написание и отладку программ. Ниже приведены примеры использования встроенных функций:
  GENERATE RVEXPO(3,1.00),,0.5: первая цифра указывает на номер генератора случайных чисел (номер генератора не влияет на результаты моделирования, так как стартовая позиция генераторов одинакова), вторая указывает на время прихода транзактов распределенное по экспоненциальному закону со средним, равным 1; далее операнд В отсутствует по определению, так как операнд А задает закон распределения, операнд С определяет,что первый транзакт приходит через 0,5 единиц модельного времени,
  BLET &m=2.17, &sigma=3.99
  ADVANCE RVNORM (3,&m,&sigma): ГСЧ номер 3, время задержки транзакта распределено по нормальному закону с математическим ожиданием, равным 2,17 и среднеквадратическим отклонением, равным 3,99.
 
 3.4. Порядок работы с GPSS/H
 Работа с моделью на языке GPSS/H (студенческая версия) состоит из создания, отладки и использования модели (программы). Рассмотрим эти задачи последовательно в том порядке, в котором они обычно решаются на практике. Причем режим отладки (дебагера) рассмотрим в параграфе 3.6.
 
 3.4.1 Создание файла, содержащего модель GPSS/H
 Студенческая версия GPSS/H даёт полное представление о возможностях ЯИМ, способствует его осознанному изучению и позволяет приобрести необходимые навыки. Отличия от профессиональной версии заключаются:
 в способе управления пакетом, так студенческая версия работает под MS DOS непосредственно или в любой оболочке типа NC, VC, Far. В качестве рекомендации можно посоветовать не выходить в эмуляцию DOS, а работать в любой из указанных оболочек.
 в размере модельного файла - не более 125 операторов блоков – ОБ, 250 операторов всех видов, при увеличении числа операторов появляется сообщение: «ERROR: STUDENT VERSION IS LIMITED TO 125 BLOCKS».
 в ограничении общей памяти - не более 32720 байтов. Это ограничение особенно заметно при плохом выборе параметров входных потоков и потоков обслуживания, так как обычно используется только 10000 байт памяти.. При этом следует сообщение о переполнении памяти , которого не следует бояться
 (Error 411 -Out of COMMON . –Add/change REALLOCATE Stmt ?) с просьбой изменить параметры или переназначить объём памяти до 32720 байт командой MAXCOM или изменить значения в пределах больше 10000 и до 30000 командой REALLOCATE имеющей синтаксис:
  < REALLOCATE COM,byte >
 в стоимости пакета - студенческая версия дешевле более чем на полтора порядка.
  В остальном , идеология студенческого и профессионального пакетов не отличаются друг от друга .
  При инсталяции дистрибутива необходимо проделать следующее:
 Войти в сессию, какой либо командной оболочки,
 Поставить дискету с дистрибутивом в дисковод,
 Выбрать директорию для размещения GPSS/H,
 В меню запуска программы набрать: A:\ INSTALL,
 Внести изменения в AUTOEXEC.BAT,
 Перезапустить компьютер.
 Запуск программы осуществляется путём набора в командной строке:
  < GPSSH filename.gps > Enter
 filename означает имя модельного файла, выбранного из списка файлов, имеющихся в программе или созданного исследователем с помощью редактора оболочки. После успешного моделирования появляется новый файл (листинг отчёта) с тем же именем, но имеющий расширение .lis, который можно просмотреть, используя клавиши F3 или F4. В случае наличия в МФ ошибок компиляции появляется усечённый листинг, содержащий указания об ошибках, но не имеющий результатов моделирования.
 Предупреждение:
 Несмотря на наличие в командной строке названия GPSS/H после приглашения надо обязательно набирать имя программы GPSSH, и после пробела имя МФ (либо использовать горячие клавиши Ctrl –j) , находясь курсором на МФ.
 Вновь создаваемому МФ обязательно присваивать расширение .gps
 Никогда не пытайтесь запускать программу файлом gpssh.exe !
  После создания МФ и его записи в редакторе оболочки (формат записи см. ниже) процесс моделирования распадается на две фазы:
 · Начало компиляции, с появлением на экране сообщения “ Pass 1 (with source listing) “ , во время этой фазы считывается МФ, проверяются синтаксические ошибки, происходит нумерация строк МФ,
 · Процесс компиляции, с появлением сообщения “ Pass 2 …” , во время этой фазы МФ преобразуется в форму удобную для исполнения и производится распределение памяти. При отсутствии ошибок начинается моделирование, предваряемое сообщением “Simulation begins “
  Эти сообщения читаются в сеансе DOS, при моделировании в командной оболочке эти сообщения не появляются, процесс моделирования оканчивается практически сразу (время моделирования МФ из 100 операторов исчисляется миллисекундами) и в списке файлов появляется файл отчёта .lis (листинг), либо содержащий данные о процессе моделирования, либо об ошибках. Никакой специальной команды для выхода из процесса моделирования при работе в командных оболочках подавать не надо.
  Предупреждение: В процессе работы с программой никогда не вносите никаких изменений в имеющиеся файлы задач основного пакета. Если возникла необходимость изменения данных в задачах пакета - создайте свой файл, скопируйте в него желаемую задачу и только после этого проводите эксперименты с вновь созданным файлом, носящим присвоенное Вами имя.
  Модельный файл создаётся в редакторе оболочки по клавише F4, он представляет собой обычный текстовый файл, который можно создавать в любом текстовом редакторе. Необходимо только, чтобы текст был записан в ASCII-кодах. Файлу обязательно присваивать собственное имя с расширением *.gps , форматы записи МФ рассмотрены ниже.
  В GPSS/H допускается два формата записи операторов: - фиксированный и свободный, далее в тексте будет использоваться только фиксированный формат.
  А. Фиксированный формат.
  Представление о фиксированном формате представлено на рис. 3.3 (для 80 колонкового редактора).
  Ярлык П Действие П Операнды П Комментарий
 
 1 2-7 9 OPERCOL OPERCOL
 Рис. 3.3 Схема фиксированного формата
 Рассмотрим подробнее рис. 3.3.
 1. В первой колонке может быть поставлен знак *, тогда эта строка не читается симулятором и воспринимается как строка комментарий. В этой строке можно писать любые сообщения, в том числе и на русском языке, например, « Модуль задания для модели банка » или продолжать длинный текст комментарий предыдущей строки.
 2. Ярлык может состоять из 6 буквенно-цифровых литер, начинаясь всегда с буквы, правда, некоторые ОУ могут иметь только цифровой ярлык, ОБ никогда не имеют цифровой ярлык. Появление одинаковых ярлыков для разных объектов не допустимо. Также нельзя допускать, чтобы ярлык совпадал с именем оператора или кодом операции. После написания ярлыка следует пробел до 9-ой колонки. У ОУ ярлык может быть, например, ОУ TABLE, а может и отсутствовать, так он может быть лишним в ОУ STORAGE .
 3. Код действия. Он является ключевым словом (названием) ОБ ,ОУ и ОО, оно начинается с 9-ой колонки, как уже говорилось выше код действия может быть сокращён до 4-х первых букв, однако для лучшей читаемости МФ сокращениями надо пользоваться осторожно и редко. Для новых ОБ, начинающихся на букву В такие сокращения просто не допустимы
 ( например , BGETLIST , BGETSTRING). Вспомогательные коды в силу их краткости не могут быть сокращены. После кода действия обязательны пробелы до значения OPERCOL.
  Здесь повторим определение оператору OPERCOL (operand start column), который назначает колонку, с какой начинается написание операндов в обоих возможных форматах записи. Значение этого оператора по умолчанию 25-я колонка, однако, это можно переназначить написав
  < OPERCOL n > где n может принимать значения от 10 до 60. Значение этого оператора больше 25 оправданно, когда используется петля DO, сдвигаемая вправо. Этот оператор равно применим в обеих типах форматов.
 4. Операнды. Их запись начинается с колонки, определённой OPERCOL. GPSS/H позволяет кодировать операнды в виде аналитических выражений, что придаёт ЯИМ большую гибкость. В случае, когда выражения имеют большую длину, запись операндов возможно производить на следующей строке, предваряя запись символом “ _ “, что воспринимается симулятором, как продолжение предыдущей строки. Когда рассматривается последовательность объектов, то в этом операнде последовательность объектов пишется через “ – “, например, FUNAVAIL 1-5 . В написании операндов можно использовать скобки. Сами операнды А,В,С,.. пишутся через запятую без пробелов. Отсутствие, какого либо операнда отмечается двумя запятыми без пробела. Рассмотрим примеры записи операндов:
 SAVEVALUE (PH3 - 5 )- (PH3 + 5 ),25,XH
 GENERATE RVEXPO(1,2),,10,,5
 После написания последнего операнда обязателен как минимум один пробел, а при наличии макроса (оператор MACRO) как минимум два пробела.
 5. Комментарий. При отсутствии у кода действия операндов, запись комментарий возможна в любой колонке, начиная с OPERCOL + 1, до 72 колонки 80-ти колонкового редактора или до конца строки при 132 колонках. При необходимости написать более длинные комментарии, переход на новую строку предваряется *. Комментарий имеет смысл писать всегда для лучшей читаемости как МФ, так и выходного отчёта.
 Б2 Свободный формат
 Ярлык может начинаться в 1-ой или 2-ой колонке и иметь от 1 до 8 литер.
 Код операции отделяется от ярлыка одним или большим числом пробелов. При отсутствии ярлыка код операции может начинаться с 3-ей колонки, но не попадать в поле OPERCOL.
  Операнды начинаются через один или большее число пробелов и пишутся до или непосредственно в поле OPERCOL .
 Комментарий пишется через один или два пробела (при наличии макросов), если код операции не имеет операндов, комментарии начинаются с колонки OPERCOL + 1 и продолжаются до конца строки.
 Далее в тексте будет использоваться только фиксированный формат, так как его отображение в МФ имеет стандартный вид.
 
 3.4.2. Интерпретация результатов
  Файл отчета содержит большое количество информации, и для упрощения ее восприятия мы приводим пояснения некоторых обозначений, которые используются при отображении результатов моделирования.
  В начале файла отчета содержится информация о модели: номера строк (в том числе – присвоенные компилятором), все блоки и их операнды, указанные комментарии. Далее следует так называемый «словарь объектов» – ENTITY DICTIONARY. Эта часть отчета представляет собой список всех объектов, применяемых в данной модели, с указанием номеров, присвоенных им компилятором. Следующая часть отчета – указатель перекрестных ссылок (CROSS REFERENCE), где указывается, к каким типам принадлежат упомянутые объекты. В секции «счетчик блоков» – BLOCK COUNT – приводится основная статистика работы блоков. Ниже приводится расшифровка терминов, используемых GPSS/H в выходном файле. Фраза «Simulation begins» означает, что модель была исполнена, и после этой фразы приводятся результаты исполнения.
 --AVG-UTIL-DURING-- - заголовок части выходного файла, посвященной основной статистике модели; эта часть представляет из себя таблицу (к сожалению, границы столбцов в таблице не прорисовываются, из-за чего чтение результатов иногда требует внимательности) со следующими заголовками:
 FACILITY: указывает название устройства;
 TOTAL TIME: полное время работы устройства;
 AVAIL TIME: время, в течение которого устройство было свободно;
 UNAVL TIME: время, в течение которого устройство было занято;
 ENTRIES: количество транзактов, вошедших в устройство;
 AVERAGE TIME/XACT: среднее время пребывания транзакта в устройстве;
 CURRENT STATUS: текущее состояние (занято - свободно);
 PERCENT AVAIL: доля времени, в течение которого устройство было занято.
  В случае, если в модели используются операторы QUEUE и DEPART, в выходном файле будет также содержаться информация об очереди.
 
  3.5 Правила окончания процесса ИМ
  Как уже отмечалось выше, одним из главных моментов ИМ является выработка команды на прекращение процесса ИМ при выполнении заданного условия. Этот вопрос достаточно очевиден, но, тем не менее, вызывает определённые трудности у студентов, поэтому он выделен в отдельный параграф.
  Процесс ИМ в GPSS/H прекращается при выполнении одного из двух условий:
 1. Окончание ИМ по числу стартов, когда показания счётчика завершений - CЗ (TG1) обнуляются или приобретают отрицательное значение.
 2. Окончание ИМ по времени испытаний, когда накопленное время движения транзактов превышает заданное время испытаний.
  Рассмотрим оба условия.
 
  3.5.1 Правило окончания по числу стартов.
  В данном случае основанием для окончания ИМ является число, задаваемое операндом А ОУ START, сразу после успешной компиляции и начала моделирования это число вносится в счётчик завершений. Проход первого транзакта через ОБ TERMINATE (уничтожение транзакта) приводит к вычитанию значения операнда А ОБ TERMINATE из показаний СЗ, каждый следующий проход транзакта через свой ОБ TERMINATE уменьшает показания СЗ на число, определяемое операндом А (напомним, что ОБ может быть много, но СЗ в МФ один !). Значение операнда А по умолчанию равно 0, т.е. проход Хакт через такой ОБ TERMINATE не изменяет показаний СЗ. В других случаях значение операнда А может быть любым целым положительным числом. На основании сказанного можно предложить выражение , позволяющее понять логику работы СЗ:
  A(START) - 0 , 3.1
 которое читается следующим образом – для выполнения условия прекращения ИМ по числу стартов, необходимо из числа, первоначально заданного в СЗ операндом А ОБ START, вычитать накапливаемую сумму терминирований, задаваемых операндами разных ОБ TERMINATE (если их несколько в МФ) до выполнения условия, что разность станет равной нулю или примет отрицательное значение.
  Рассмотрим несколько простых примеров, решаемых устно, но при желании их можно промоделировать в режиме контроля с помощью отладчика (описание см.3.6).
  Примеры.
 А)SIMULATE Б) SIMULATE В) SIMULATE
  GENERATE 50 GENERATE 50 GENERATE 50
  TERMINATE 1 TERMINATE 2 TERMINATE 5
  START 3 START 3 START 3
  END END END
 
 Г) SIMULATE Д) SIMULATE
  GENERATE 50 GENERATE 50
  TERMINATE 1 TERMINATE 1
  GENERATE 100 GENERATE 75
  TERMINATE 0 TERMINATE 1
  START 3 START 3
  END END
 
  В каждом из этих примеров необходимо ответить на вопрос, - В какой момент времени окончится процесс ИМ? Рассмотрим эти примеры последовательно. Для начала представим себе временную ось, начинающуюся всегда в момент времени 0.0. Временная дискрета выбирается исследователем, предположим, что цифра 50 в ОБ GENERATE соответствует 50 минутам (секундам, часам и т.д.). На рис. 3.4 представлена эта временная ось. Используем рисунок для решения примера А. Поскольку задано детерминированное значение операнда А ОБ GENERATE, то транзакты будут поступать каждые 50 временных дискрет, а именно 50,100,150 и т. д. Первый транзакт придёт в момент 50, сразу пройдёт через ОБ TERMINATE, операнд А которого равен единице. В СЗ записано
 
  СЗ=3 СЗ=2 СЗ=1 СЗ=0
 
  0.0 50 100 150
  Рис.3.4 Решение примера А)
 число 3 из которого вычитается 1, 3-1 =2 . Приход следующего транзакта через 50 единиц, но в 100 единиц абсолютного времени, уменьшит показания ещё на единицу и т. д. Окончательное решение, что ИМ окончится в 150 временных дискрет очевидно из рисунка 3.4. В примере Б) ИМ окончатся в 100 временных дискрет, так как вычитается число 2; в примере В) ИМ окончится в 50 временных дискрет, так как следуя выражению 3.1) из числа 3 (число стартов) вычитается число 5 (значение операнда А ОБ TERMINATE ) и сразу получается отрицательный результат. В примере Г) появление второго ОБ GENERATE ни на что не влияет, так как во втором ОБ TERMINATE операнд А равен 0 (это значение можно было бы и не писать, так как оно задано по умолчанию, но наличие его более наглядно, ошибки при этом не возникает) и время окончания ИМ равно 150 временным дискретам. Значительно более интересен пример Д) и его поясним с помощью рис.3.5. Поскольку в МФ появилось два самостоятельных ОБ GENERATE необходимо рисовать временные оси для движения транзактов из каждого источника, а временные засечки отдельных ОБ GENERATE сносить на ось абсолютного времени АС1.
  СЗ=2 СЗ=0
 ОБ1
  50 100
 ОБ2 СЗ=1
  50 75 100
 AC1
  100
  Рис.3.5 Решение задачи Д)
  В момент времени 50 появляется транзакт с ОБ1 и отмечается также на оси абсолютного времени АС1, показания СЗ уменьшаются на единицу, приход первого транзакта с ОБ2 во временную дискрету 75, уменьшает СЗ до 1, приход второго транзакта с ОБ1 в 100 единиц времени и его терминирование останавливает процесс ИМ в момент времени 100.
 
  3.5.2 Правило окончания по времени испытаний
  Довольно часто в процессе ИМ требуется определить не средние значения атрибутов объектов, а значения зависящие от времени: производительность, динамику процесса, суммарные затраты за какой то период времени и т.д. В этом случае в качестве контрольной точки берётся не число стартов, а период времени (рабочая смена, сутки, месяц и т.д.). Основным условием при этом является приведение всех рассматриваемых при моделировании интервалов времени к одному масштабу, например, если предельное время задано в сутках, а темп прихода транзактов в минутах, то правильнее все интервалы времени исчислять в минутах. Для реализации правила окончания ИМ по времени программа должна проделать следующие действия :
 1. Принять предельный интервал абсолютного времени АС1 - Ту за условную единицу отсчёта (машинная единица).
 2. Суммировать времена движения транзактов .
 3. Проверять условие АС1 - 0. 3.2
 Проиллюстрируем условие 3.2) на рис.3.6. Первый уничтоженный транзакт отмечает своё время на оси АС1, второй приплюсовывает время своего движения к точке Т1, третий к точке Т2 и т. д., до тех пор, пока последний у – ый интервал текущего времени транзакта не сравняется или
  АС1пр
 
 0.0 Т1 Т2 Ty-1 АС1 Ty
  Рис.3.6 Иллюстрация правила окончания ИМ по времени
 
 не превысит значение АС1пр. На рисунке это значение Ту больше предельного значения.
 4. Выполнение условия 3.2 приводит к появлению машинной единицы (см. п.1), которая сравнивается со значением операнда А =1 ОБ START, результат обнуляется, что приводит к выдаче сигнала о прекращении процесса ИМ.
 Указанные действия программы реализуются следующим образом:
 -Обязательно вводится дополнительный парный программный модуль:
  GENERATE AC1пр.
  TERMINATE 1 ,
 называемый таймером, который учитывает накапливаемое время движения транзактов. Значение операнда А ОБ GENERATE равняется заданному предельному интервалу АС1пр., других операндов нет.
 - В обязательном порядке обнуляются значения операндов А всех ОБ TERMINATE модуля исполнения МФ.
  - Значение операнда А ОУ START в модуле управления устанавливается равным 1.
  Рассмотрим этот простой алгоритм на примере Д), который модифицируем для окончания по времени работы в течение 5 ч. или 300 минут.
 Д) SIMULATE Е) SIMULATE
  GENERATE 50 GENERATE 50
  TERMINATE 1 TERMINATE 0
  GENERATE 75 GENERATE 75
  TERMINATE 1 TERMINATE 0
  START 3 GENERATE 300
  END TERMINATE 1
  START 1
  END
 Рассмотрим некоторые особенности примера Е).
 Транзакты в МФ не терминируются, а лишь отмечают факт своего прохода отметкой на оси АС1 (запомним это важное обстоятельство на будущее), таймер срабатывает при выполнении условия 3.2. Показания операндов А ОБ TERMINATE и ОУ START вычитаются, обнуляются, что служит командой для прекращения процесса ИМ.
  Для обратного перехода к управлению с помощью числа стартов необходимо:
 - Удалить из модуля управления МФ таймер.
 - Записать в поле операнда А ОУ START желаемое число стартов.
 - Записать в поля операндов А ОБ TERMINATE желаемые значения.
  В примере Е) мы впервые сталкиваемся с весьма важным обстоятельством, когда 2 транзакта из разных ГСЧ приходят в одно и тоже время, такие моменты в нашем примере наступают в 150 и 300 временных дискрет, в эти моменты транзакты становятся связанными по времени. Возникает вопрос, как они проходят по МФ? Нельзя забывать, что транзакты двигаются один за другим по одному в единицу времени. Для решения этой проблемы в GPSS/H предусмотрены чёткие правила:
 - Транзакты одинакового приоритета записываются в списке текущих событий - СТС в порядке возрастания их ИН. Следовательно проблема решается просто: вначале исполняется транзакт с меньшим ИН, а затем с большим ИН, но имеющим одно и тоже время. При этом засечка на оси АС1 будет одинаковой.
 - При разных приоритетах, если транзакты связаны по времени первым движется транзакт, имеющий больший приоритет.
 
 3.6 Редактирование и отладка с помощью дебагера
  Как уже было отмечено выше, одним из преимуществ GPSS/H является наличие отладчика программ моделирования (дебагера), который позволяет пользователю эффективно работать с программой в диалоговом режиме, осуществляя не только тестовую проверку, но и позволяя вводить необходимые изменения. Работа в пакетном режиме, позволяет оценивать результаты моделирования лишь по окончанию процесса ИМ. Поэтому констатация наличия ошибок в итоговом отчёте мало, что даёт исследователю, удлиняя и удорожая процесс исследования. В связи с этим интерактивный режим оказывается весьма полезным, так как он позволяет не только получать промежуточную информацию о той части МФ, которая вызывает наибольшие сомнения, но и вносить конструктивные изменения. В пакетном режиме очень трудно до начала ИМ выделить ту часть итогового отчёта, которая бы представила наибольший интерес, а также оценить заранее характер и возможность возникновения ошибок. Тестовый режим в большинстве случаев снимает ограничения, присущие пакетному режиму. Техника и технология использования возможностей отладчика будет рассмотрена ниже.
 
  3.6.1 Запуск отладчика
  Запуск отладчика (тестовый режим, дебагер) осуществляется записью (после появления приглашения в командной строке используемой оболочки или DOS) следующего вида:
  < gpssh filename tv > ,
 где filename - имя МФ с расширением .gps, а -tv (test vision), является командой запуска тестового режима. Вызов отладчика возможен только в случае успешной компиляции вашего МФ, не пугайтесь, если отладчик не вызывается, вернитесь к вашему МФ и по F4, основываясь на данных об ошибках, содержащихся в листинге отчёта ( имя вашего файла с расширением .lis ), внесите все необходимые коррективы в основной файл с расширением .gps и лишь затем повторите попытку вызова отладчика.
 После исполнения команды вызова отладчика на экране дисплея появляется трёхоконный отладчик , который представлен на рис.3.7 А и В . Вариант А наблюдается на экране дисплея сразу после вызова отладчика. В качестве иллюстрации рассмотрен простейший пример поступления деталей со склада, их перемещения по ленте транспортёра, обработки на станке и ухода из системы. Процесс ИМ длится до получения данных о 100 обработанных деталях (см. 3.7, пример 3.1).
  А. После вызова отладчика
 ВLOCK CURRENT TOTAL SOURCE FOR MODEL xx.GPS ??????????????????????????????????????????????????

<< Пред.           стр. 4 (из 6)           След. >>

Список литературы по разделу