Главная страница
Навигация по странице:

  • (узловой оператор).


  • математическое моделирование. Т 1 МАТ. Моделирование. Литература по теме 197 Вопрос Узловые операторы. 201 Вопрос Текст программной модели смо. 202 Вопрос Сборка и запуск исполнительного модуля модели. 205


    Скачать 1.51 Mb.
    НазваниеЛитература по теме 197 Вопрос Узловые операторы. 201 Вопрос Текст программной модели смо. 202 Вопрос Сборка и запуск исполнительного модуля модели. 205
    Анкорматематическое моделирование
    Дата02.06.2022
    Размер1.51 Mb.
    Формат файлаdocx
    Имя файлаТ 1 МАТ. Моделирование.docx
    ТипЛитература
    #564707
    страница17 из 31
    1   ...   13   14   15   16   17   18   19   20   ...   31
    с метки-функции top (i), где i - номер этого узла (записывается с двоеточием).

    Начиная с метки top(i) транзакт проходит все операторы узла i без временных задержек и попадает в оператор place, где находится до тех пор, пока не появятся условия для перехода в следующий узел.

    В некоторых узлах одновременно могут находиться несколько транзактов и все они содержатся в операторе place.

    Не следует путать поток транзактов в модели с потоком управлений в обычной программе. Задержка транзакта в place - это и есть время пребывания в узле.

    После метки top(i) можно анализировать условия продвижения транзактов по графу модели, при этом используются операторы if или switch. Для динамического изменения направления движения транзактов, законов распределения, значений времени обслуживания и других параметров можно использовать операцию присваивания.

    Например, если в узле 3 нужно изменить значение переменной b в зависимости от значения переменной а, то следует записать:

    top(3): if (a < 0)

    b =4;

    else

    b =3*а+5;

    key («Переключатель», b);

    place;

    где

    key - оператор, определяющий узел типа клапан.

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

    В качестве узловых операторов могут использоваться все типы узлов кроме ag и parent.

    После узлового оператора могут размещаться сигнальные функции и операторы С++, образуя конструкцию:

    clcode

    {

    <операторы>

    }

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

    Последним оператором узла является оператор place; Описание узла иногда состоит только из метки-функции top(i), узлового оператора и оператора place. Например:

    top(i): key ( «Переключатель», j ); place;

    Вопрос 3. Текст программной модели СМО.

    На рис. 33 показан текст программы, который был сгенерирован на основании описания модели в конструкторе Gem для ранее рассмотренной модели СМО.

    #include


    forward

    {

    int fw;

    modbeg («СМО», 105, 2500, (long)time(NULL), none, 102, none,104, 2); ag («Генератор», 101, none, expo, 12.0, none, none, 102);

    network (dummy, dummy) {

    top (102):

    queue(«Очередь», none, 103); place; top (103):

    serv(«Сервер», 1, none, expo, 9.0, none, none, 104); place; top (104):

    term(«Терминатор 104»); place;

    fault (123); }

    modend («pilgrim.rep», 1, 8, page);

    return 0;

    }

    Рис. 33. Исходный текст программной модели СМО

    Для лучшего понимания сгенерированного текста приведем описание присутствующих в программе узловых операторов.

    Функция ag 1, Р2, Р3, Р4, Р5, Р6, Р7, Р8) описывает узел, порождающий в соответствии с заданным правилом в процессе моделирования транзакты и направляющий их в указанную точку (узел) модели.

    Функция имеет следующие параметры:

    Р1- символическое имя узла (строка длиной до 14 символов типа

    char);.

    Р2- номер узла-генератора (типа int);

    Р3- число (типа int в диапазоне 1-32767), обозначающее приоритет, который присваивается сгенерированному транзакту, или none, если приоритет не присваивается;

    Р4- тип функции распределения интервала времени между генерируемыми транзактами, имеющий значения:

    • norm - нормальное распределение;

    • unif - равномерное распределение;

    • expo - экспоненциальное распределение;

    • erln - обобщенное распределение Эрланга;

    • beta - треугольное распределение;

    • none -если интервал обслуживания является детерминированной величиной.

    Р5- величина (типа float), зависящая от типа функции распределения Р4:

    • математическое ожидание интервала времени обслуживания транзакта (при Р4= norm, unif, expo);

    • математическое ожидание одного слагаемого этого интервала (при Р4= erln);

    • минимальное значение интервала (при Р4= beta);

    • постоянная величина этого интервала (при Р4= попе).

    Р6 - величина (типа float), зависящая от типа функции распределения Р4:

    • среднеквадратичное отклонение времени обслуживания (Р4= norm);

    • максимальное отклонение от среднего времени обслуживания (Р4= unif);

    • значение zero 4 = expo, none);

    • число слагаемых, распределенных по экспоненциальному закону и входящих в случайный интервал обслуживания (если Р4= erln, то Р6 > 0);

    • наиболее вероятное значение интервала времени обслуживания транзакта (при P4=beta).

    Р7- величина (типа float), зависящая от типа функции распределения Р4:

    • максимально возможное значение интервала времени обслуживания транзакта (P4=beta);

    • значение zero 4= norm, unif, expo, erln, ш).

    Р8- номер узла (типа int), в который поступает сгенерированный транзакт (узел-приемник).

    Функция queue 123) описывает узел, моделирующий очередь транзактов.

    Функция имеет следующие параметры.

    Р1 - символическое имя узла (строка длиной до 14 символов типа

    char);

    Р2 - тип организации очереди (типа int):

    Р2 - рйу, если очередь с приоритетами,

    Р2 - none, если очередь без приоритетов.

    Р3 - номер узла (типа int), в который переходит транзакт из очереди (узел-приемник).

    Если в качестве параметра Р6 оператора
    1   ...   13   14   15   16   17   18   19   20   ...   31


    написать администратору сайта