Реферат: Механизм генерации транзактов в модели

Московский Инженерно-ФизическийИнститут

(технический университет)

Реферат по курсу МоделированиеВычислительных Систем

Тема: «Механизм генерации транзактовв модели.

Формирование цепей текущих и будущихсобытий.

Основные атрибуты транзактов.

Управление движением транзактов.»

Студент группы К8-123                                   Киреев Анатолий

Москва 2000

ВВЕДЕНИЕ

Процессы функционирования различных систем могутбыть представлены той или иной совокупностью систем массового обслуживания(СМО) — стохастических, динамических, дискретно-непрерывных математическихмоделей. Исследование характеристик таких моделей может проводиться либоаналитическими методами, либо путем имитационного моделирования. Имитационнаямодель отображает стохастический процесс смены дискретных состояний СМО внепрерывном времени в форме моделирующего алгоритма. При его реализации на ЭВМпроизводится накопление статистических данных по тем атрибутам модели,характеристики которых являются предметом исследований. По окончаниимоделирования накопленная статистика обрабатывается, и результаты моделированияполучаются в виде выборочных распределений исследуемых величин или ихвыборочных моментов. Таким образом, при имитационном моделировании системмассового обслуживания речь всегда идет о статистическом имитационноммоделировании.

Одним из наиболее эффективных и распространенных языковмоделирования сложных дискретных систем является в настоящее время язык GPSS.Он может быть с наибольшим успехом использован для моделирования систем,формализуемых в виде систем массового обслуживания. В качестве объектов языкаиспользуются аналоги таких стандартных компонентов СМО, как заявки,обслуживающие приборы, очереди и т.п. Достаточный набор подобных компонентовпозволяет конструировать сложные имитационные модели, сохраняя привычнуютерминологию СМО.


Транзакты

Динамические объекты, соответствующие заявкам в системахмассового обслуживания, называются в GPSS/PC транзактами. Они«создаются» и «уничтожаются» так, как это необходимо пологике модели в процессе моделирования. С каждым транзактом может быть связанопроизвольное число параметров, несущих в себе необходимую информацию об этомтранзакте. Кроме того, транзакты могут иметь различные приоритеты. В начальныймомент времени в GPSS-модели нет ни одного транзакта. В процессе моделированиясимулятор генерирует транзакты в определенные моменты времени в соответствии стеми логическими потребностями, которые возникают в моделируемой системе.Подобным же образом транзакты покидают модель в определенные моменты времени взависимости от специфики моделируемой системы. В общем случае в моделиодновременно существует большое число транзактов, однако в каждый моментвремени симулятор осуществляет продвижение только какого-либо одного транзакта.Если транзакт начал свое движение, он перемещается от блока к блоку по пути,предписанному блок-схемой. В тот момент, когда транзакт входит в некоторыйблок, на исполнение вызывается подпрограмма симулятора, соответствующая типуэтого блока, а после ее выполнения, при котором реализуется функция данногоблока, транзакт «пытается» войти в следующий блок. Такое продвижениетранзакта продолжается до тех пор, пока не произойдет одно из следующихвозможных событий:

1.       транзакт входит в блок, функцией которого является удаление транзакта измодели;

2.       транзакт входит в блок, функцией которого является задержка транзакта нанекоторое определенное в модели время;

3.       транзакт «пытается» войти в следующий блок, однако блок«отказывается» принять его. В этом случае транзакт остается в томблоке, где находился, и позднее будет повторять свою попытку войти в следующийблок. Когда условия в модели изменятся, такая попытка может оказаться успешной,и транзакт сможет продолжить свое перемещение по блок-схеме.

Если возникло одно из описанных выше условий, обработкаданного транзакта прекращается, и начинается перемещение другого транзакта.Таким образом, выполнение моделирования симулятором продолжается постоянно.Проходя через блоки модели, каждый транзакт вносит вклад в содержимое счетчиковблоков. Значения этих счетчиков доступны программисту через СЧА блоков: W — текущее содержимое блока и N – общее количество входов в блок. Каждоепродвижение транзакта в модели является событием, которое должно произойти вопределенный момент модельного времени. Для того чтобы поддерживать правильнуювременную последовательность событий, симулятор имеет таймер модельноговремени, который автоматически корректируется в соответствии с логикой,предписанной моделью.

Таймер GPSS/PC имеет следующие особенности:

1.       регистрируются только целые значения (все временные интервалы в моделиизображаются целыми числами);

2.       единица модельного времени определяется разработчиком модели, которыйзадает все временные интервалы в одних и тех же, выбранных им единицах;

3.       симулятор не анализирует состояние модели в каждый следующий моментмодельного времени (отстоящий от текущего на единицу модельного времени), апродвигает таймер к моменту времени, когда происходит ближайшее следующеесобытие.

Значения таймера доступны программисту черезсистемные СЧА C1 (относительное время) и AC1 (абсолютное время). Центральнойзадачей, выполняемой симулятором, является определение того, какой транзактнадо выбрать следующим для продвижения в модели, когда его предшественникпрекратил свое продвижение. С этой целью симулятор рассматривает каждыйтранзакт как элемент некоторого списка. В относительно простых моделяхиспользуются лишь два основных списка: список текущих событий и список будущихсобытий.

Список текущих событий включает в себя те транзакты,планируемое время продвижения которых равно или меньше текущего модельноговремени (к последним относятся транзакты, движение которых было заблокированоранее). Он организуется в порядке убывания приоритетов транзактов, а в пределахкаждого уровня приоритета — в порядке поступления транзактов.

Список будущих событий включает в себя транзакты,планируемое время продвижения которых больше текущего времени, т.е. события,связанные с продвижением этих транзактов, должны произойти в будущем. Этотсписок организуется в порядке возрастания планируемого времени продвижениятранзактов.

Симулятор GPSS/PC помещает транзакты в зависимостиот условий в модели в тот или иной список и переносит транзакты из списка всписок, просматривает списки, выбирая следующий транзакт для обработки,корректирует таймер модельного времени после обработки всех транзактов в спискетекущих событий.


Блоки, связанные с транзактами

С транзактами связаны блоки создания, уничтожения, задержкитранзактов, изменения их атрибутов и создания копий транзактов.

Для создания транзактов, входящих в модель, служит блокGENERATE (генерировать), имеющий следующий формат: имя GENERATE A,B,C,D,E

В поле A задается среднее значение интервала временимежду моментами поступления в модель двух последовательных транзактов. Еслиэтот интервал постоянен, то поле B не используется. Если же интервалпоступления является случайной величиной, то в поле B указывается модификаторсреднего значения, который может быть задан в виде модификатора-интервала илимодификатора-функции. Модификатор-интервал используется, когда интервалпоступления транзактов является случайной величиной с равномерным закономраспределения вероятностей. В этом случае в поле B может быть задан любой СЧА,кроме ссылки на функцию, а диапазон изменения интервала поступления имеетграницы A-B, A+B.

Например, блок GENERATE 100,40 создает транзактычерез случайные интервалы времени, равномерно распределенные на отрезке[60;140]. Модификатор-функция используется, если закон распределения интервалапоступления отличен от равномерного. В этом случае в поле B должна бытьзаписана ссылка на функцию, описывающую этот закон, и случайный интервалпоступления определяется, как целая часть произведения поля A (среднегозначения) на вычисленное значение функции. В поле C задается момент поступленияв модель первого транзакта. Если это поле пусто или равно 0, то моментпоявления первого транзакта определяется операндами A и B. Поле D задает общеечисло транзактов, которое должно быть создано блоком GENERATE. Если это полепусто, то блок генерирует неограниченное число транзактов до завершениямоделирования. В поле E задается приоритет, присваиваемый генерируемымтранзактам. Число уровней приоритетов неограниченно, причем самый низкийприоритет — нулевой. Если поле E пусто, то генерируемые транзакты имеют нулевойприоритет. Транзакты имеют ряд стандартных числовых атрибутов. Например, СЧА сназванием PR позволяет ссылаться на приоритет транзакта. СЧА с названием M1содержит так называемое резидентное время транзакта, т.е. время, прошедшее смомента входа транзакта в модель через блок GENERATE. СЧА с названиемXN1 содержит внутренний номер транзакта, который является уникальным ипозволяет всегда отличить один транзакт от другого. В отличие от СЧА другихобъектов, СЧА транзактов не содержат ссылки на имя или номер транзакта. Ссылкана СЧА транзакта всегда относится к активному транзакту, т.е. транзакту,обрабатываемому в данный момент симулятором. Важными стандартными числовымиатрибутами транзактов являются значения их параметров. Любой транзакт можетиметь неограниченное число параметров, содержащих те или иные числовыезначения. Ссылка на этот СЧА транзактов всегда относится к активному транзактуи имеет вид Pj или Р$имя, где j и имя — номер и имя параметра соответственно.Такая ссылка возможна только в том случае, если параметр с указанным номеромили именем существует, т.е. в него занесено какое-либо значение.

Для присваивания параметрам начальных значений илиизменения этих значений служит блок ASSIGN, имеющий следующий формат: имя ASSIGN A,B,C

В поле A указывается номер или имя параметра, в которыйзаносится значение операнда B. Если в поле A после имени (номера) параметрастоит знак + или -, то значение операнда B добавляется или вычитается изтекущего содержимого параметра. В поле С может быть указано имя или номерфункции-модификатора, действующей аналогично функции-модификатору в поле Bблока GENERATE.

Например, блок ASSIGN 5,0 записывает в параметр сномером 5 значение 0,

а блок ASSIGN COUNT+,1 добавляет 1 к текущему значению параметра сименем COUNT.

Для записи текущего модельного времени в заданныйпараметр транзакта служит блок MARK, имеющий следующий формат:

имя MARK A

В поле A указывается номер или имя параметратранзакта, в который заносится текущее модельное время при входе этоготранзакта в блок MARK. Содержимое этого параметра может быть позднееиспользовано для определения транзитного времени 0пребывания транзакта вкакой-то части модели с помощью СЧА с названием MP.

Например, если на входе участка модели поместить блок MARKMARKER, то на выходе этого участка СЧА MP$MARKER будет содержать разностьмежду текущим модельным временем и временем, занесенным в параметр MARKER блоком MARK. Если поле A блокаMARK пусто, то текущее время заносится на место отметки времени входа транзактав модель, используемой при определении резидентного времени транзакта с помощьюСЧА M1.

Для изменения приоритета транзакта служит блок PRIORITY,имеющий следующий формат: имя PRIORITY A,B

В поле A записывается новый приоритет транзакта. В поле Bможет содержаться ключевое слово BU, при наличии которого транзакт, вошедший вблок, помещается в списке текущих событий после всех остальных транзактов новойприоритетной группы, и список текущих событий просматривается с начала.Использование такой возможности будет рассмотрено ниже.

Для удаления транзактов из модели служит блок TERMINATE,имеющий следующий формат: имя TERMINATE A

Значение поля A указывает, на сколько единиц уменьшаетсясодержимое так называемого счетчика завершений при входе транзакта в данныйблок TERMINATE. Если поле A не определено, то оно считается равным 0, итранзакты, проходящие через такой блок, не уменьшают содержимого счетчиказавершений.

Начальное значение счетчика завершений устанавливаетсяуправляющим операторомSTART, предназначенным для запуска прогонамодели. Поле A этого оператора содержит начальное значение счетчика завершений.Прогон модели заканчивается, когда содержимое счетчика завершений обращается в0. Таким образом, в модели должен быть хотя бы один блок TERMINATE с непустымполем A, иначе процесс моделирования никогда не завершится. Текущее значениесчетчика завершений доступно программисту через системный СЧА TG1.

Участок блок-схемы модели, связанный с парой блоков GENERATE-ТERMINATE,называется сегментом. Простые модели могут состоять из одного сегмента, всложных моделях может быть несколько сегментов.

Например, простейший сегмент модели, состоящий всего из двухблоков GENERATE и TERMINATE, в совокупности с управляющим операторомSTART моделирует процесс создания случайного потока транзактов, поступающихв модель со средним интервалом в 100 единиц модельного времени, и уничтоженияэтих транзактов

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, то транзакт в тот же момент модельноговремени переходит в следующий блок, оставаясь в списке текущих событий. Вприведенном ниже сегменте транзакты, поступающие в модель из блокаGENERATEчерез случайные интервалы времени, имеющие равномерное распределение на отрезке[60;140], попадают в блокADVANCE. Здесь определяется случайное времязадержки транзакта, имеющее равномерное распределение на отрезке [30;130], итранзакт переводится в список будущих событий. По истечении времени задержкитранзакт возвращается в список текущих событий и входит в блок TERMINATE,где уничтожается. Заметим, что в списке будущих событий, а значит и в блокеADVANCE может одновременно находиться произвольное количество транзактов.

GENERATE 100,40

ADVANCE 80,50

TERMINATE 1

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

Транзакты могут входить в модель не только через блокGENERATE, но и путем создания копий уже существующих транзактов в блокеSPLIT, имеющем следующий формат: имя SPLIT A,B,C

В поле A задается число создаваемых копий исходноготранзакта (родителя), входящего в блок SPLIT. После выхода из блокаSPLITтранзакт-родитель направляется в следующий блок, а все транзакты-потомкипоступают в блок, указанный в поле B. Если поле B пусто, то все копии поступаютв следующий блок. Транзакт-родитель и его потомки, выходящие из блокаSPLIT,могут быть пронумерованы в параметре, имя или номер которого указаны в поле C.Если у транзакта-родителя значение этого параметра при входе в блок SPLIT былоравно k, то при выходе из блока оно станет равным k+1, а значения этогопараметра у транзактов-потомков окажутся равными k+2, k+3 и т.д.

Например, блок SPLIT 5,MET1,NUM создает пять копийисходного транзакта и направляет их в блок с именем MET1. Транзакт-родитель ипотомки нумеруются в параметре с именем NUM. Если, например, перед входом вблок значение этого параметра у транзакта-родителя было равно 0, то при выходеиз блока оно станет равным 1, а у транзактов-потомков значения параметра NUMбудут равны 2, 3, 4, 5 и 6.

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

БлокTRANSFER служит для передачи входящих в неготранзактов в блоки, отличные от следующего. Блок имеет девять режимов работы,из которых рассмотрим здесь лишь три наиболее часто используемых. В этих трехрежимах блок имеет следующий формат: имя TRANSFER A,B,C смысл операндов в полях A, B иC зависит от режима работы блока.

В режиме безусловной передачи поля A и C пусты, а в поле Bуказывается имя блока, к которому безусловным образом направляется транзакт,вошедший в блок TRANSFER. Например: TRANSFER ,FINAL

В режиме статистической передачи операнд A определяет вероятность,с которой транзакт направляется в блок, указанный в поле C. С вероятностью 1-Aтранзакт направляется в блок, указанный в поле B (в следующий, если поле Bпусто). Вероятность в поле A может быть задана непосредственно десятичнойдробью, начинающейся с точки. Например, блок TRANSFER .75,THIS,THAT

 с вероятностью 0,75 направляеттранзакты в блок с именем THAT, а с вероятностью 0,25 — в блок с именем THIS.Если же поле A начинается не с десятичной точки и не содержит одного изключевых слов — признаков других режимов работы блока, то его значениерассматривается как количество тысячных долей в вероятности передачи. Например,предыдущий блок TRANSFER можно записать также в следующем виде: TRANSFER750,THIS,THAT

В режиме логической передачи в поле A записывается ключевоеслово BOTH. Транзакт, поступающий в блок TRANSFER, сначала пытается войти вблок, указанный в поле B (или в следующий блок, если поле B пусто), а если этоне удается, т.е. блок B отказывает транзакту во входе, то в блок, указанный вполе C. Если и эта попытка неудачна, то транзакт задерживается в блоке TRANSFERдо изменения условий в модели, делающего возможным вход в один из блоков B илиC, причем при одновременно возникшей возможности предпочтение отдается блоку B.Например: TRANSFER BOTH,MET1,MET2

Блок TEST (проверить) служит для задержки илиизменения маршрутов транзактов в зависимости от соотношения двух СЧА. Он имеетследующий формат: имя TEST X A,B,C. Вспомогательный операндX содержит условие проверки соотношения между СЧА и может приниматьследующие значения: L; LE; E; NE; GE; G.Поле A содержит первый, а поле B — второй из сравниваемых СЧА. Если проверяемоеусловие A X B выполняется, то блок TEST пропускает транзакт в следующий блок.Если же это условие не выполняется, то транзакт переходит к блоку, указанному вполе C, а если оно пусто, то задерживается перед блоком TEST. Например, блок TEST LE P$TIME,C1 не впускает транзакты, у которых значение параметра сименем TIME больше текущего модельного времени. Блок TEST L Q$LINE,5,OUT направляет транзакты в блок с именем OUT, если текущаядлина очереди LINE больше либо равна 5.

Для задержки или изменения маршрута транзактов в зависимостиот состояния аппаратных объектов модели служит блок GATE, имеющий следующийформат: имя GATE X A,B. Вспомогательный операнд X содержит код состоянияпроверяемого аппаратного объекта, а в поле A указывается имя или номер этогообъекта. Если проверяемый объект находится в заданном состоянии, то блок GATEпропускает транзакт к следующему блоку. Если же заданное в блоке условие невыполняется, то транзакт переходит к блоку, указанному в поле B, а если этополе пусто, то задерживается перед блоком GATE. Операнд X может приниматьследующие значения: U; NU; I; NI; SE; SNE;SF; SNF; LS; LR. Например, блок GATE SNE BUF3отказывает во входе транзактам, поступающим в моменты, когда в МКУ с именемBUF3 все каналы обслуживания свободны. Блок GATE LR 4,BLOK2направляет транзакты в блок с именем BLOK2, если в момент их поступления ЛП сномером 4 включен.

еще рефераты
Еще работы по кибернетике