Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Поступление транзактов в модель





GENERATE - это блок, через который транзакты входят в модель. Блок GENERATE имеет следующий формат записи:

GENERATE [A],[B],[C],[D],[E]

Скобки [ ] означают, что данный операнд является необязательным. Не существует ограничений на число различных блоков GENERATE в одной модели.

Интервалы времени между последовательными появлениями транзактов блока GENERATE называют интервалом поступления. Все разработчики должны задавать спецификацию распределения интервалов времени поступления в блоке GENERATE. Информация, необходимая для этого, задается операндами А и B. Все возможные виды распределения интервалов времени поступления в GPSS делят на равномерно распределенные и все другие виды распределения.

Операнд А - средний интервал времени между последовательными поступлениями транзактов в модель.

Операнд B - задает модификатор, который изменяет значения интервала генерации транзактов по сравнению с интервалом, указанным операндом А. Есть два типа модификаторов: модификатор-интервал и модификатор-функция.

С помощью модификатора-интервала задается равномерный закон распределения времени между генерацией транзактов.

Операнды А и B могут быть именем, положительным числом, выражением в скобках или непосредственно СЧА.

При вычислении разности значений (А-В), заданных операндами А и B, получается нижняя граница интервала, а при вычислении суммы (А+В) - верхняя граница. После генерации очередного транзакта выбирается число из полученного интервала, это и будет значение времени, через которое следующий транзакт выйдет из блока GENERATE.

Когда операнды А и B задают в виде констант (B - модификатор-интервал), они должны быть неотрицательными числами, т. е. интервал времени может быть выражен числами, например, 4.1,…,12.7. Предположим, что транзакт входит в модель - блок GENERATE - в момент модельного времени 25.6. После того, как этот транзакт попадет в следующий блок модели, планировщик GPSS разыграет случайное значение из распределения интервалов времени, равного 8.4±4.3.

Пусть разыгранным значением будет число 9.7. Тогда планировщик планирует приход следующего транзакта в блок GENERATE в момент времени 25.6+9.7=35.3.

Можно выбрать для розыгрыша генератор равномерно распределенных случайных чисел. Это устанавливается на странице " Random Numbers " (Случайные числа) в журнале настроек модели. Нужно выбрать Edit/Settings (Правка/Настройка) и страницу " Random Numbers " (Случайные числа), на которой в поле ввода " GENERATE " ввести номер генератора - любое положительное целое число. По умолчанию используется генератор равномерно распределенных случайных чисел номер 1.

Операнды А и В не обязательно должны быть заданы. Когда один или оба операнда не указаны, по умолчанию предполагается их нулевое значение. Например, А=16.4, В=0. Поскольку операнд В=0, то интервалы времени распределены равномерно, 16.4±0, т. е. интервал времени поступления равен 16.4. Это пример того, как может быть задано детерминированное значение интервалов времени.

Более сложные интервалы времени поступления транзактов (не по равномерному закону) могут быть заданы с использованием модификатора-функции или встроенных генераторов случайных чисел. Под действием модификатора-функции значение операнда А умножается на значение функции, заданной операндом В.

При любом способе вычисления интервала времени значение операнда В не должно превышать значения операнда А, в противном случае в блоке GENERATE может быть получен отрицательный интервал времени, который вызовет останов по ошибке "Отрицательное время задержки".

Рассмотрим три дополнительных операнда: С - смещение интервалов, D - ограничитель, Е - уровень приоритета.

Смещение интервалов (первоначальная задержка) С - это момент времени, в который в блоке GENERATE должен появиться первый транзакт. После этого первого прихода все остальные приходы транзактов возникают в соответствии с распределением интервалов времени, задаваемых операндами А и B. Операнд С можно использовать как для ускорения, так и для замедления прихода первого транзакта или для указания прихода в нужный момент времени. Начальная задержка может быть меньше, равна или больше среднего времени, заданного операндом А. Когда операнд С не используется, интервалы генерирования определяются операндами А и B (они не оказывают влияния на задержку). Операнд С может быть таким же как и операнды А и B.

Операнд D задает граничное значение общего числа транзак-тов, которые могут войти в модель через данный блок GENERATE в течение времени моделирования. Когда это число достигнуто, данный блок GENERATE перестает быть активным. Если не определено граничное значение (операнд D не используется), блок GENERATE остается активным в течение всего времени моделирования, т. е. по умолчанию ограничения на количество создаваемых транзактов нет.


Операнд Е устанавливает класс приоритета каждого из транзак-тов, входящих в модель через данный блок GENERATE. Для задания приоритетов c целью повышения эффективности работы GPSS World рекомендуется использовать последовательность целых чисел 0, 1, 2, 3,… вместо, например, 37, 43, 88, 122,... Чем выше число, тем выше приоритет. Если операнд Е не используется, по умолчанию приоритет генерируемых данным блоком GENERATE транзактов равен нулю.

Операнды D и Е могут задаваться также как и операнды А, B и С, но при этом принимать значения только целых положительных и целых чисел соответственно.

В любом блоке GENERATE должен быть обязательно задан либо операнд А, либо операнд D. Нельзя использовать в качествеоперанда параметры транзактов. Необходимо также помнить, что транзакт не должен входить в блок GENERATE. Если транзакт пытается это делать, возникает ошибка выполнения. Приведем примеры записи блоков GENERATE:

  1. с операндом А

2. GENERATE 38.6

3. GENERATE X$IntPostTran

4. GENERATE MX$VrPost(3,6)

5. GENERATE V$Prom

6. GENERATE (Exponential(11,0,X$Mat))

7. GENERATE IntPostTran

  1. с операндами А и B

9. GENERATE 73.25,X$Otk

10.GENERATE X$Sredne,FN2

11.GENERATE Sredne,FN4

12.GENERATE (V$Post+7.1),FN$Mod

  1. с операндами А и C

14.GENERATE 7.3,,4.1

15.GENERATE 7.3,,X$VrSm

16.GENERATE V$IntP,,MX2(X$Stroka,X$Stolbez)

17.GENERATE (Normal(3,X$Sre,X$SreOtk)),,Sme

  1. с операндами А, B, E

19.GENERATE 13.3,2.8,,,1

20.GENERATE (Normal(8,X$Sr,X$SrOtk)),Post,,1

21.GENERATE V$IntPostTran,(V1-12.3),,12

Приведенные примеры демонстрируют различные способы задания операндов блока GENERATE. Однако при этом нужно помнить следующее.

В начальный момент времени в каждом блоке GENERATE производится подготовка к выходу одного транзакта. На этой стадии модель еще полностью не инициализирована для выполнения, т. е. не все переменные получили значения. Но описанные в блоке GENERATE, должны быть уже определены - инициализированы. Поэтому в модели блоку GENERATE должны предшествовать команды определения EQU, INITIAL, FUNCTION, VARIABLE, FVARIABLE. Это делается для того, чтобы СЧА в блоке GENERATE, который ссылается на них, давали нужные для ввода транзактов в модель результаты.

Например:

SrIntPost EQU 47.2

StanOtkl EQU 28.6

INITIAL X$KolTrans,43

...

GENERATE SrIntPost,StOtk,,X$KolTrans

Как видно из примера, блоку GENERATE предшествуют присвоения командой EQU именам числовых значений и командой INITIAL начального значения сохраняемой ячейке с именем Kol-Trans.







Date: 2015-07-17; view: 448; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию