Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чтоесть / Ответы на вопросы.doc
Скачиваний:
40
Добавлен:
24.03.2015
Размер:
670.21 Кб
Скачать

21. Моделирование случайных воздействий на систему.

  1. Моделирование случайных событий.

Произошло или нет случайное событие А ?

Для ответа надо знать вероятность этого события Р(А).

Разыграем случайное число с помощью равномерного датчика. Если полученное число <= чем Р(А), то событие произошло, если > , то не произошло.

Какое из нескольких событий произошло?

Пусть события А1, А2, …, Ак не совместны и образуют полную группу.

В этом случае сумма вероятностей Р(А1)+Р(А20+…+Р(Ак)=1

Разделим интервал от 0 до 1 на к-участков

Разыграем следующее число и посмотрим, на каком участке оно окажется.

  1. Моделирование дискретных случайных величин.

Если случайная величина Х дискретна, т.е. имеет значение=1

Х={х1,х2,…,хк}, вероятности которых р1,р2,…,рк, то задача сводится к предыдущей (дел. инт. на к-отрезке и разыгр. случ. число)

Такой подход называется методом обратной функции.

Пример.

Построить функцию распределения для дискретных случайных величин: «сумма чисел на 2 случайно ? кубиках»

Всего возможно 36 исходов, а сумма от 2 до 12 (т.е. 11 вариантов)

  1. Моделирование непрерывной случайной величины.

Чтоб получить непрерывную случайную величину надо перейти от плотности вер-ти f(x) к её функции распределения F(х)=интеграл от минус бескон до Х f(x)dx

затем для функции F(x) находим обратную ей функцию Ψ и затем разыграем случайное число R (от 0 до 1) и взять функцию от R:

X=Ψ(R)

Можно доказать, что полученное число X имеет нужное распределение f(x)

(Метод обратной функции)

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

Для всех основных распределений система моделирования имеет специальные функции, которые с достаточной точностью описывают эти распределения.

22. Программные средства моделирования систем.

При использовании комп-ов основная задача машинной реализации модел.-организация моделир-го алгоритма и преобразование его в форму, пригодную для реализации его в комп. прогр. В этом случае мы говорим об имитационной программе и ?, которая используется для манипуляции в этой программе.

Для реализации имитац. прог. используются след. средства:

  • Языки программирования общего назначения (ЯПОН)

  • Языки имитационного моделирования (ЯИМ)

  • Пакеты прикладного программирования (ППП)

ЯПОН:

  1. высокого уровня.

1 комп-а языка соотв. как правило нескольким комп-ам для маш. Подлежит ?

2) машинно-завис.(низкого уровня)

При компиляции 1 стр. прог-и преобразуется в 1 ком-у

Недостатки: - трудоёмкость разработки прог.

-низкий уровень надёжности.

Плюс: высокая скорость работы.

ЯИМ:

Принцип описания моделируемых систем сформулирован так:

Объекты моделирования (системы и процессы) описываются своими атрибутами, которые взаимодействуют с конкретными своими процессами, для реализации которых должны быть выполнены определённые условия. Эти условия задают временную последовательность таких взаимодействий.

Результатами взаимодействий являются события, которые взаимодействуют с внешней средой. Событий приведшие к изменению состояния модели имитируемого объекта.

Другой элемент ЯИМ - механизм системного(модельного) времени. Он определяет последовательность событий и процессов в модели на конечном интервале времени.

Этот механизм выполняет 2 функции:

  1. запуск и продвижение модельных часов.

  2. Обеспечение согласованности различных блоков и событий в системе (синхронизация функц-я)

Механическое системное время даёт право обработать т.н. «врем-ые узлы».Задача их обработки заключается в следующем:

В реал. системе 2 и > событий м.б. одновременно. В прог. это почти невозможно.

На комп-е их надо обработать последовательно. Для удаления модельного времени существует 2 метода:

  1. Метод с постоянным шагом.

  2. Метод особых состояний.

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

2 метод заключается в том, что каждый раз новое значение таймера выбирают таким, что в этот момент обязательно произойдёт хотя бы 1 событие (> эффект. для прост. моделей и редких событий)

При выборе ЯИМ учитывается ряд обстоятельств:

- надо изучить особенности и варианты языков.

- выбрать язык, ориентированный на имитац. определ. класса систем.

ППП:

Сглаживает недостатки 1 и 2 способов. Предназначен для решения опред. ? прог. Пишем на ЯПОП + используем некоторые типовые готовые задачи из ППП.

  1. Система имитационного моделирования GPSS. Назначение системы. Общие правила записи моделей на GPSS. Назначение основных блоков системы. Динамические элементы модели на GPSS - транзакты.

Система GPSS (General Purpose Simulation System) - это мощная среда компьютерного моделирования общего назначения, разработанная для профессионалов в области моделирования. Это комплексный моделирующий инструмент, охватывающий области как дискретного, так и непрерывного компьютерного моделирования, обладающий высочайшим уровнем интерактивности и визуального представления информации.

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

Модель или программа на языке GPSS представляет текстовый файл, который построен с несколькими соглашениями: Каждая строка текста содержит или описания параметров, или блок модели. Каждая строчка состоит из поля-метки (оно м.б. опущено), сам блок (ключевое слово) и операнд.

Модель GPSS представляет собой последовательность операторов, кот подразделяются на команды (предназначены для описания некот моделирующих элементов GPSS и определения условий моделирования) и блоки (при помощи них программист описывает работу исследуемой системы). Каждый блок выполняет соответствующую подпрограмму - определенный набор операций, связанных с обработкой данных, описывающих состояние модели и условия продвижения транзактов. Выполнение подпрограмм блоков инициируется транзактами. Задача программиста - выбор блоков т.о., чтоб заставить модель вести себя подобно реальной моделируемой системе.

Модель состоит из объектов: 1)динамический (запрос)- транзакт 2)статические - реализуются с помощью блоков (отдельная строка, операторы). Конструкция языка состоит из полей: поле метки→ключевое слово→параметры (заключается в скобки, перечисляется через запятую, смысл определяется его позицией)→комментарии.

БЛОКИ:

1)GENERATE A,B,C,D,E – осуществляет внесение транзактов в модель. Может использоваться для имитации, напр заявок на обслуживание, источников сообщений. (A-средний интервал времени прихода, B-значение полуинтервала, C-начальный сдвиг процесса поступления транзакта, D-кол-во транзактов, кот может пройти через этот блок (по умолчанию ∞), E-уровень приоритета транзактов (от 0 до 127, по умолчанию 0))

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

3) SEIZE A (занять) - занятие прибора транзактом. А- имя точки входа в устройство.

RELEASE A (освободить) –освобождение прибора транзактом, по истечении времени обслуживания.

4)QUEUE А, В (стать в очередь),

DEPART А, В (покинуть очередь). Эти 2 блока используются для сбора статистики об очередях. А - имя очереди, обязательно, В - кол-во транзактов, удаляемых из очереди одновременно (не обязательно, по умолчанию 0).

5)ADVANCE А, В (задержать) - используется для имитации задержки транзакта на время обслуживания А - среднее время задержки, В - полуинтервал.

6) ENTER A,B – процесс занятия МКУ. A – имя или номер устройства, B – кол-во занимаемых каналов МКУ (по умолчанию 1)

Обратный блок к ENTER – LEAVE A,B – освобождение каналов (по умолчанию 1)

Транзакт - запрос, заявка. Могут создаваться и уничтожаться в местах модели, определяемых программистом. В разных частях одной модели могут одновременно обрабатываться транзакты, имеющие разное содержательное значение, кот определяет разработчик. Напр, в модели универсама, транзакты - покупатели, транзакты – сообщения, транзакты – квитанции, транзакты – выхода из строя оборудования. с каждым транзактом связан набор данных, кот обрабатываются и изменяются подпрограммами блоков.

Состояния транзактов: 1) активный – находится в начале цепи текущих событий и назначенный интерпретатором для продвижения в очередной блок. 2)приостановленный - ожидает в цепи текущих событий своей очереди назначения активным транзактом 3)пассивный - находится в цепи пользователя, цепи задержки, цепи ожидания захвата, повторных проверок. 4)прерванный - Такое состояние не исключает одновременного пребывания в одном из перечисленных выше состояний.

  1. Ввод транзактов в модель на GPSS. Блок GENERATE. Его параметры. Выход транзактов из модели. Блок TERMINATE. Использование указанных блоков для управления временем моделирования.

Блок GENERATE осуществляет внесение тран­зактов в модель (напр, источни­ков сообщений или заявок на обслуживание, создания в модели потоков по­вреждений оборудования).

GENERATE A,B,C,D,E

А – средний интервал времени прихода транзактов (по умолч 0), В – полуинтервал (модификатор) (по умолч = 0), С – начальный сдвиг процесса поступления транзакта (по умолч = 0), D – кол-во транзактов, кот могут пройти через этот блок (по умолч ∞). E – уровень приоритета (от 0 до 127, 27, по умолч 0).

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

Пример:

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

      1. GENERATE 3,1 (задано равномерное распределение интервалов времени поступления транзактов; интервалы времени поступления будут принимать значения от 2 до 4 единиц модельного времени с равной вероятностью).

3) GENERATE 100,20,1000 (первый транзакт из этого блока войдет в модель в момент времени, равный 1000, для остальных транзактов интервалы времени поступления будут разыг­рываться интерпретатором из диапазона значений 100±20;).

4) GENERATE 100,20,10,15,3 (первый транзакт будет создан в момент модельного времени =10, остальные транзакты будут создаваться каждые 100±20 единиц модельного времени; максимальное кол-во транзактов, кот могут поступить через этот блок в модель =15; всем транзактам, выходящим из блока, интерпретатор присвоит приоритет 3);

Транзакты удаляются из модели, попадая в блок TERMINATE. Тем самым имитируется, напр, выход транзактов из моделируе­мой системы. В одной модели м.б. любое кол-во таких блоков.

TERMINATE A. А – счетчик завершений (необязательный).

Управление временем моделирования: моделирование будет завершено в тот момент, когда текущее значение счетчика завершений = 0.

START A, А – начальное значение счетчика завершений.

Блок TERMINATE, если в нем есть А, работает так: транзакт удаляется, и текущее значение счетчика завершений уменьшается на А.

Сущ 2 способа управления моделирования:

  1. По времени.

В конце текста модели:

TERMINATE

GENERATE 20000

TERMINATE 1

START 1

В этом способе по истечении интервала модельного времени, соотв операнду А блока GENERATE, моделирование будет завершено, если нач значение счетчика =1.

  1. По кол-ву обслуженных заявок:

TERMINATE 1

START 20000

В основном сегменте модели в блоке TERMINATE А = 1, нач значение счетчика = кол-ву заявок.

  1. Представление обслуживающих приборов в моделях на GPSS. Блоки SEIZE и RELEASE. Их операнды.

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

Если в процессе обслуживания поступает новое требование, оно ставится в очередь последним в своем классе приоритета. Освободившийся после обслуживания прибор занимает заявка, стоящая в начале очереди.

В общем случае схема моделирования прибора должна включать занятие прибора транзактом SEIZE, задержку транзакта на время обслуживания ADVANCE и освобожде­ние прибора RELEASE. В одной модели м.б. описано действие большого ко­личества приборов, поэт каждому из них д.б. присвоено индиви­дуальное имя - числовое или символьное. Числовое имя, присваиваемое про­граммистом, должно выбираться им из диапазона целых чисел 1...9999. Имя занимаемого или освобождаемого прибора определяется операндом А блоков SEIZE и RELEASE.

SEIZE A – точка входа в устройство, имя кот А.

RELEASE A – освобождение устройства, имя кот А.

Примеры:

  1. МЕТ SEIZE KAN (блок SEIZE с именем МЕТ при входе транзакта имитирует занятие прибо­ра, имеющего имя КАN);

  2. RELEASE KAN2 (блок RELEASE при входе транзакта имитирует освобождение занятого при­бора KAN2).

При попытке транзакта войти в блок SEIZE проверяется состояние прибо­ра с именем А. Если прибор не занят, транзакт входит в блок SEIZE и без задержки переходит к следующему за ним блоку; при этом состояние прибора изменяется из «не занят» в «занят». Если прибор занят, транзакт остается в блоке, из кот пытался войти в блок SEIZE, и стано­вится в очередь к данному прибору. По истечении времени обслуживания транзакт, занимавший прибор, входит в блок RELEASE. При этом состояние прибора, имя кот указано операндом А блока RELEASE, изменяется из «занято» в «не занято», а транзакту, стоящему первым в очереди на обслу­живание данным прибором, разрешается вход в блок SEIZE.

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

  1. Моделирование процесса обслуживания заявок. Блок ADVANCE. Использование генератора случайных чисел для вычисления времени завершения обслуживания по параметрам данного блока.

Между блоками SEIZE и RELEASE могут находиться блоки, имитирующие содержание процесса обслуживания заявки. Для имитации задержки транзакта на время обслуживания применяется блок ADVANCE. Длина интервала времени задержки вычисляется по среднему времени и модификатору, задаваемым операндами А и В.

ADVANCE A,B – задержка

А – среднее время задержки, В – полуинтервал.

Пример: ADVANCE 200,25 (транзакты, входящие в блок, задерживаются на 200±25 единиц модельного времени).

Общее назначе­ние блока ADVANCE - имитация задержки транзакта. Он может располагаться в любом месте модели. Блок ADVANCE не препятствует входу транзактов, т. е. перед ним очереди не образуется. Интерпретатор вычисляет время задержки для каждого из них индивидуально и выводит их из блока не в порядке поступления, а по истече­нии определенных для них интервалов времени задержки.

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

Для получения случайной величины R с равномерным распределением на отрезке [0;1] в GPSS имеются встроенные генераторы случайных чисел. Для получения случайного числа путем обращения к такому генератору достаточно записать СЧА RN с номером генератора, например RN1. Но встроенные генераторы случайных чисел GPSS дают числа не на отрезке [0;1], а целые случайные числа, равномерно распределенные от 0 до 999, но их нетрудно привести к указанному отрезку делением на 1000.

  1. Сбор статистики очереди. Блоки QUEUE и DEPART. Параметры блоков. Интерпретация статистической информации, полученной при моделировании с использованием указанных блоков.

В GPSS обеспечивается автоматический сбор статистических данных о каждой из очередей, таких как наибольшая длина очереди за время моделирования, средняя длина очереди, общее кол-во входов в очередь, кол-во входов с нулевой задержкой, процент «нулевых» входов от общего числа входов, среднее время пребывания в очереди с учетом «нулевых» входов и без их учета, а также текущее содержимое очереди (кол-во заявок, находящихся в очереди на момент вывода статистики). Для сбора статистики об очередях исполь­зуются блоки QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DEPART (ПОКИНУТЬ ОЧЕРЕДЬ).

QUEUE A,B

DEPART A,B

А – имя очереди (обязательно), В – указывает, на сколько единиц должен измениться счетчик содержимого очереди при входе транзактов в эти блоки, по умолч =1 (необязат)

При входе транзакта в блок QUEUE регистрируется событие «присоедине­ние к очереди», а при входе транзакта в блок DEPART - «выход из очереди». Ожидая обслуживания прибором, транзакт явл элементом очереди до тех пор, пока не займет прибор. Исходя из этого, при моделировании прибора блок QUEUE должен находиться перед блоком SEIZE, а блок DEPART - после него.

Пример:

QUEUE QCPU

SEIZE CPU

DEPART QCPU

ADVANCE 30,12

RELEASE CPU

Наличие блоков QUEUE и DEPART программы указывает на то, что интерпретатор во время моделирования должен обеспечи­вать сбор данных об очереди QCPU к прибору CPU.

Выполнение подпрограммы блока DEPART включает уменьшение значения счетчика содержимого на величину, заданную операндом В, регистрацию те­кущего значения модельного времени, увеличение счетчика «нулевых» входов в очередь на число единиц, заданное операндом В, если модельное время в момент входа транзакта в блок DEPART равно времени его регистрации в блоке QUEUE, вычисление других статистических данных об очереди.

Приборы и очереди не требуют к-л предварительного объявления в модели. Прибор с заданным именем создается, как только интерпретатор встречает блоки SEIZE или RELEASE, в кот этот прибор упоминается, очередь при встрече блоков QUEUE или DEPART.

QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

OCHERED 3 0 998 517 0.207 3.110 6.453 0

QUEUE – имя очереди, MAX – максимальная длина очереди, CONT – содержимое очереди в момент окончания прогона модели, ENTRY – счетчик числа входов в очередь, ENTRY(0) – счетчик нулевых входов в очередь, AVE.CONT – среднее значение содержимого очереди, AVE.TIME – среднее время пребывания в очереди, AVE.(-0) – среднее время пребывания в очереди без учета нулевых входов, RETRY – кол-во транзактов в модели в момент созд отчета, ожидающих наступления определенных условий, зависящих от состояния данной очереди.

  1. Пример простой модели на языке GPSS: система массового обслуживания с одним прибором и очередью. Стандартный отчет о моделировании, его интерпретация.

Парикмахерская с одним парикмахером при неограниченной приоритетной очереди. Заявки (клиенты) приходят через каждые 15+-10 мин. Мастер обслуживает клиентов в течение 12+-3 мин. Построить модель и определить параметры очереди и нагрузку парикмахера.

GENERATE 15,10 ;генерация транзактов, приход клиентов

QUEUE ochered ;моделирование входа в очередь

SEIZE parik ;попытка занять парикмахера

DEPART ochered ;выход из очереди

ADVANCE 12,3 ;задержка на обслуживание

RELEASE parik ;освобождение парикмахера

TERMINATE ;уходит

GENERATE 15000 ;управление временем моделирования

TERMINATE 1 ;завершение моделирования

;Отчет:

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 998 0 0

2 QUEUE 998 0 0

3 SEIZE 998 0 0

4 DEPART 998 0 0

5 ADVANCE 998 0 0

6 RELEASE 998 0 0

7 TABULATE 998 0 0

8 TERMINATE 998 0 0

9 GENERATE 1 0 0

10 TERMINATE 1 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

PARIK 998 0.797 11.980 1 0 0 0 0 0

QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

OCHERED 3 0 998 517 0.207 3.110 6.453 0

QUEUE – имя очереди, MAX – максимальная длина очереди, CONT – содержимое очереди в момент окончания прогона модели, ENTRY – счетчик числа входов в очередь, ENTRY(0) – счетчик нулевых входов в очередь, AVE.CONT – среднее значение содержимого очереди, AVE.TIME – среднее время пребывания в очереди, AVE.(-0) – среднее время пребывания в очереди без учета нулевых входов, RETRY – кол-во транзактов в модели в момент созд отчета, ожидающих наступления определенных условий, зависящих от состояния данной очереди.

STORAGE – символьное имя МКУ, CAP – емкость МКУ, определенная командой storage, ENTRIES – число входов в МКУ, AVL – доступность МКУ в момент созд отчета, AVE.C – среднее число занятых каналов, UTIL – коэф-т использования МКУ.

Из отчета видно, что поступило 998 клиента (GENERATE 998), обслужено 988 (RELEASE 998). Среднее время обслуж составило 11.980 мин, коэф-т использования канала = 0.797. в очереди за время моделирования нах в ожидании обслуж не более 3 человек, а среднее знач длины очереди составило 3.110.

  1. Логика работы моделирующей системы GPSS. Цепи текущих и будущих событий. Условия переноса транзактов из одной цепи в другую.

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

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

Цепь представляет собой список, в кот интерпретатор вносит транзакты по мере выполнения программы модели. Интерпретатор рассматривает каждый транзакт как элемент одной или нескольких цепей. Каждый транзакт м.б. представлен как звено в цепи. Цепи являются открытыми, имеют начало и конец. Положение транзакта в цепи зависит от того, как скоро он должен вернуться в модель для продолжения движения. Последовательность обработки связана с временем возникновений событий при выполнении моделирования.

В GPSS World имеются 8 видов цепей: цепь текущих событий; цепь будущих событий; цепь задержки; цепь пользователя; цепь парности; цепь прерывания; цепь ожидания захвата; цепь повторных проверок.

2 вида цепей обязательно формируются интерпретатором для каждой модели - цепь текущих событий (ЦТС) и цепь будущих событий (ЦБС). Др создаются по мере необходимости при создании определенных моделирующих элементов.

ЦТС содержит транзакты, движение кот по блокам планируется в текущий момент времени, а также транзакты, движение кот заблокировано ввиду условий в модели. ЦТС формируется с учетом приоритетов транзактов. Транзакты в ЦТС могут находиться в одном из двух состояний: активном, т. е. продвигаться в данный момент интерпретатором, либо приостановленном.

ЦБС состоит из транзактов, движение кот не планируется в текущий момент времени. Это возможно в следующих случаях:

  1. Транзакт попал в блок ADVANCE с ненулевым временем задержки.

  2. Транзакт должен войти в модель в более поздний момент времени через блок GENERATE .

Уровень приоритета не влияет на место транзакта в ЦБС.

Т.о., транзакты в модели располагаются одновременно и в блоках, и в цепях. Интерпретатор изменяет состояние модели при просмотре ЦТС от начала к концу. Он выбирает транзакт и двигает его по модели до тех пор, пока не возникнет одна из трех ситуации:

1. Транзакт входит в блок ADVANCE . Тогда интерпретатор отправляет его в ЦБС на место, соответствующее моменту активизации транзакта.

2. Возникает условие блокировки, т.е. транзакт не может войти в следующий блок. При этом транзакт остается в ЦТС,

3. Транзакт входит в блок TERMINATE при этом транзакт выводится из модели.

После этого интерпретатор выбирает для продвижения следующий транзакт и т.д. до конца ЦТС.

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

Если при обращении к ЦБС в ней находится более одного транзакта с одинаковым планируемым временем выхода и с одинаковым приоритетом, возникает т.н. временной узел. Опасность временного узла состоит в возможном возникновении непредусмотренного вычислительного цикла.

ЦБС и ЦТС явл общими для всей системы моделирования. Они непосредственно не связаны к-л моделирующими элементами GPSS, кроме транзактов.

  1. Имитационная модель GPSS. Объектная модель. Виды объектов: динамические, операционные, аппаратные, статистические, вычислительные, группирующие, запоминающие

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

Для построения ИМ используют следующие языковые средства:

  1. Язык программирования. «+»высокое быстродействие, невысокие требования к ресурсам комп.

  2. Использование систем моделирования со встроенными языковыми средствами. «+»высокая скорость, меньшее время отладки. «-»медленнее работает (gpss).

Любая конструкция состоит из след полей: метка, ключевое слово, параметры, комментарии. Параметры перечисл через запятую, явл позиционными (смысл определяется его положением).

Модель состоит из объектов. Объекты GPSS можно разделить на 7 классов: динамические, операционные, аппаратные, статистические, вычислительные, запоминающие и группирующие.

Динамические объекты, соответствующие заявкам в системах массового обслуживания, наз транзактами. Транзакты могут иметь различные приоритеты.

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

Аппаратные объекты - это абстрактные элементы, на кот м.б. расчленено оборудование реальной системы. К ним относятся одноканальные и многоканальные устройства и логические переключатели.

Статистические объекты служат для сбора и обработки статистических данных о функционировании модели. К ним относятся очереди и таблицы.

К вычислительным объектам относятся переменные (арифметические и булевские) и функции. Они используются для вычисления некот величин, заданных арифметическими или логическими выражениями либо табличными зависимостями.

Запоминающие объекты обеспечивают хранение в памяти ПК отдельных величин, используемых в модели, а также массивов таких величин. К ним относятся сохраняемые величины и матрицы сохраняемых величин.

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

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

ИМ на языке GPSS представляет собой список объектов (операторов и блоков), характеризующих процессы обработки заявок - пути их продвижения в моделируемой системе и сопровождающие это продвижение события. С помощью объектов языка описываются возникновение транзактов, их продвижение, задержки в очередях и устройствах, уничтожение и т.д. Последовательность записи объектов и специальные операторы управления задают маршруты перемещения транзактов между элементами модели.

При возникновении событий в процессе моделирования необходимо учитывать следующие обстоятельства:

  1. Момент времени возникновения события должен быть независимой случайной величиной.

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

3 основных события:

  1. приход заявки (транзакта)

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

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

Проверка состояния обслуживающего прибора. Прибор свободен? НЕТ: поступления заявки на обслуживание в очередь. ДА: поступление заявки на обслуживание; это вызывает: а) переход обслуживающего прибора из свободного состояния в занятое; б) планирование события завершения обслуживания.

  1. начало обслуживания

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

  1. завершение обслуживания

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

Проверка состояния очереди. Есть ли в очереди заявка, ожидающая обслуживания? НЕТ: переход обслуживающего прибора из занятого состояния в свободное ДА: поступление заявки на обслуживание; это вызывает: а) продвижение заявки в очереди; б) планирование события завершение обслуживания.

  1. Логика работы моделирующей системы GPSS. Фазы ввода, просмотра и коррекции таймера.

Логика работы интерпретатора: Интерпретатор рассматривает каждый транзакт как элемент одной или нескольких цепей. Каждый транзакт м.б. представлен как звено в цепи. Цепи являются открытыми, имеют начало и конец. Положение транзакта в цепи зависит от того, как скоро он должен вернуться в модель для продолжения движения. Последовательность обработки связана с временем возникновений событий при выполнении моделирования.

Сущ цепи: текущих событий; будущих событий; пользователя; прерывания; парности.

Имеется только одна ЦТС и одна ЦБС.

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

ЦБС состоит из транзактов, движение кот не планируется в текущий момент времени. Это возможно в следующих случаях:

1. Транзакт попал в блок ADVANCE и в течение времени задержки нет попытки продвинуть его в следующий блок. 2. Транзакт должен войти в модель в более поздний момент времени через блок GENERATE .

Т.о., транзакты в модели располагаются одновременно и в блоках, и в цепях. Интерпретатор изменяет состояние модели при просмотре ЦТС от начала к концу. Он выбирает транзакт и двигает его по модели до тех пор, пока не возникнет одна из трех ситуации:

1. Транзакт входит в блок ADVANCE . Тогда интерпретатор отправляет его в ЦБС на место, соответствующее моменту активизации транзакта.

2. Возникает условие блокировки, т.е. транзакт не может войти в следующий блок. При этом транзакт остается в ЦТС,

3. Транзакт входит в блок TERMINATE при этом транзакт выводится из модели.

После этого интерпретатор выбирает для продвижения следующий транзакт и т.д. до конца ЦТС.

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

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

Транзакты выбираются блоком GENERATE из пассивного буфера, представляющего собой стек со связанной организацией. При уничтожении в блоке TERMINATE транзакт возвращается в вершину пассивного буфера. Каждый транзакт имеет свой номер. Некот транзакты посетят модель несколько раз в процессе прогона, а некот могут вообще ни разу не войти в модель.

Фаза просмотра. (1)Перенести транзакт, находящийся в начале ЦТС, через возможное число блоков → (2)необходимо ли повторно просматривать ЦТС из-за того, что только что перемещенный транзакт вызвал работу определенных блоков? Если ДА, то на п.(1), если НЕТ, то (3)есть ли в ЦТС следующий транзакт? Если НЕТ, то перейти на (4)фазу коррекции таймера. Если ДА, то п(2).

Фаза коррекции таймера. (1)найти транцакт в ЦБС → (2)продвинуть значение таймера до значения времени движ этого транзакта → (3)перенести транзакт из ЦБС в ЦТС и поместить его в кач последнего эл-та в соотв классе приоритетов → (4)совпадает ли значение времени движ следующего транзакта в ЦБС с текущим значением времени? Если НЕТ, то перейти на фазу просмотра. Если ДА, то (5)перенести следующий транзакт из ЦБС в ЦТС и пометить его в кач последнего эл-та в соотв классе приоритетов → (4)

  1. Связь отдельных сегментов модели путем использования одинаковых имен объектов на примере моделирования системы с одним прибором и очередью, но с разными типами заявок.

Задача «Станция технического обслуживания с учетом приоритета»

expf function rn1,c24

0,…1,8

SERVIS_VOLGA FUNCTION RN1,D5

0,360/0.25,360/0.5,300/0.75,300/1,150

SERVIS_MOSCVICH FUNCTION RN1,D5

0,240/0.25,240/0.5,180/0.75,120/1,60

SERVIS_GIGULI FUNCTION RN1,D5

0,270/0.25,270/0.5,180/0.75,180/1,120

WORK STORAGE 13

GENERATE 90,FN$EXPF,,,2

ASSIGN 2,1

ASSIGN 1,FN$SERVIS_VOLGA

TRANSFER ,SERVIS

GENERATE 60,FN$EXPF,,,1

ASSIGN 2,2

ASSIGN 1,FN$SERVIS_MOSCVICH

TRANSFER ,SERVIS

GENERATE 30,FN$EXPF

ASSIGN 2,3

ASSIGN 1,FN$SERVIS_GIGULI

TRANSFER ,SERVIS

SERVIS QUEUE GWORK

ENTER WORK

DEPART GWORK

ADVANCE P1,FN$EXPF

LEAVE WORK

TERMINATE 1

START 10000

  1. Приоритетные дисциплины обслуживания заявок. Назначение приоритетов в блоках GENERATE и PRIORITY. Переход транзактов в блок, отличный от последующего. Блок TRANSFER в режиме безусловной передачи.

Каждому транзакту, входящему в модель, присваивается уровень приори­тета, определенный пользователем. Он влияет на последовательность обработ­ки транзактов интерпретатором, а значит, и на последовательность наступле­ния событий в модели. Наиболее важными приоритетными очередями явл ЦТС, а также цепи задержки, связанные с приборами и МКУ. Изменяя приоритет, можно оказывать влияние на ход моделирования, разрешать ситуации, когда 2 или большее число событий происходят одновременно. Внутри одного приоритета транзакты обрабатываются в порядке «первым пришел - первым обслужен».

Значение приоритета д.б. целочисленным. Если приоритет созда­ваемого транзакта не задан по умолчанию он = 0.

Приоритет транзакта м.б. изменен в блоке PRIORITY. Новое значение приоритета определяется операндом А этого блока. Операнд В не явл обязательным и может принимать только одно значение -BU. Когда в поле В блока PRIORITY задано это значение, транзакт в результа­те выполнения подпрограммы блока занимает место в ЦТС последним в приоритетном классе, заданном операндом А.

PRIORITY А,В

Пр: PRIORITY P$Prior (значение приоритета транзакта, вошедшего в блок, становится равным значе­нию его параметра Prior).

Пр: PRIORITY 2,BU (значение приоритета транзакта, вошедшего в блок, становится равным 2; транзакт занимает место в ЦТС последним среди транзактов, имеющих приоритет 2).

Уровень приоритета транзакта является СЧА PR.

Пр: ASSIGN 1,PR (значение 1-го параметра транзакта, вошедшего в блок, становится равным его уровню приоритета).

Блок GENERATE осуществляет внесение тран­зактов в модель.

GENERATE A,B,C,D,E

А – средний интервал времени прихода транзактов (по умолч 0), В – полуинтервал (модификатор) (по умолч = 0), С – начальный сдвиг процесса поступления транзакта (по умолч = 0), D – кол-во транзактов, кот могут пройти через этот блок (по умолч ∞). E – уровень приоритета (от 0 до 127, 27, по умолч 0).

Блок TRANSFER (ПЕРЕДАТЬ) специально предназначен для выбора или изменения направления движения транзактов в модели. Он может работать в одном из 9 режимов, кот задаются при помощи операнда А. Ни в одном из режимов блок не препятствует входу в него транзактов. В режиме безусловной передачи операнд А не используется, а в кач операнда В записывается имя блока, в кот безусловно и без задержки должен перейти транзакт.

пр: TRANSFER ,BLK2 (транзакт, вошедший в данный блок, направляется в блок с именем BLK2).

  1. Моделирование многоканальных устройств (МКУ). Условия в реальном объекте, необходимые для использования МКУ для их представления в модели. Блоки ENTER и LEAVE.

МКУ служат для моделирования нескольких параллельно работающих объектов. Моделирование МКУ подобно моделированию прибора: транзакт поступа­ет в устройство, занимает определенное кол-во каналов, обслуживается в течение некот времени, после чего покидает МКУ, освобождая занимаемые им каналы.

Условия в реальном объекте, необходимые для использования МКУ для их представления в модели:

-объекты должны иметь одинаковую функцию распределения времени обслуживания

-одинаковые параметры этой функции.

В отличие от прибора, емкость кот всегда равна единице, емкость МКУ д.б. определена программистом. Для этого применяется специ­альная команда STORAGE (ОПРЕДЕЛИТЬ МКУ).

ИмяКоманды STORAGE A

Поле ИмяКоманды - символьное имя МКУ, а поле А - его емкость (количество каналов обслуживания), операнд А м.б. задан только в виде положительного целого числа.

Пр: MKU1 STORAGE 5 TRAKT STORAGE 30 (емкость МКУ с именем MKU1 определена равной 5, МКУ с именем TRAKT - 30).

Событие, связанное с занятием каналов обслуживания, моделируется бло­ком ENTER (ВОЙТИ), а событие, состоящее в освобождении каналов, - блоком LEAVE (ВЫЙТИ).

ENTER A,B

LEAVE A,B

А – имя МКУ. В – кол-во единиц емкости МКУ, кот должен занять (освободить) транзакт. По умолч =1.

Пр: 1) ENTER BLOK3 (войти в МКУ с именем BLOK3);

2)LEAVE SEANS,3 (освободить 3 единицы емкости МКУ с именем SEANS).

Между блоками ENTER и LEAVE может находиться любое кол-во бло­ков. В частности, задержка на время обслуживания в МКУ имитируется при помощи блока ADVANCE.

Если кол-во единиц емкости, заданных операндом В блока LEAVE, превышает кол-во занятых в данный момент времени каналов МКУ, интерпретатор останавливает моделирование и выдает сообщение об ошибке.

В отношении транзактов, ожидающих занятия МКУ, действует правило «первый соответствующий с пропусками».

При входе транзакта в блок LEAVE интерпретатор приостанавливает его продвижение, позволяя очередному транзакту из цепи задержки этого МКУ войти в блок ENTER, и только после этого продвигает вышедший из МКУ транзакт в модели. Транзакт, вышедший из цепи задержки МКУ, пе­реводится в ЦТС и становится в ней последним в своем приоритетном классе.

МКУ имеют следующие СЧА: S — текущее содержимое МКУ; R —свободная емкость МКУ; SR — коэффициент использования в долях 1000; SA — целая часть среднего содержимого МКУ; SM — максимальное содержимое МКУ; SC — число занятий МКУ; ST — целая часть среднего времени занятия МКУ.

  1. Стандартные числовые атрибуты и их использование для управления потоком транзактов. Примеры.

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

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

Умение использовать СЧА позволяет разрабатывать компактные и гибкие модели.

Пр: текущее знач очереди или нагрузки на объект; изменение времени обслуж в зав-ти от текущей длины очереди; система с резервированием, т.е. если один кассир не справляется, то приходит на помощь другой.

Значение текущей длины очереди: Q$ИмяОчереди

Текущее состояние устройства: F

Коэф-т использования: FR

Для МКУ:

Кол-во занятых каналов: S

Кол-во свободных каналов: R

Коэф-т использования: SR

Для записи в процессе моделирования текущих значений СЧА используют ячейки. Занесение информации в ячейку осуществляет блок SAVEVALUE. При входе транзакта в этот блок требуемое значение СЧА фиксируется в ячейке, номер кот определяется операндом блока SAVEVALUE.

X$j - текущее значение, записанное в ячейке j;

Пр: ААА31 ENTER LIN2,R$LIN2 (транзакт, входящий в блок ENTER с именем ААА31, занимает R$lin2 кана­лов МКУ с именем lin2; поскольку СЧА R$lin2 возвращает кол-во свободных каналов этого же МКУ, транзакт занимает всю оставшуюся сво­бодную емкость устройства);

END_MOD TERMINATE TGI (вход транзакта в блок TERMINATE, имеющий имя END_MOD, приводит к за­вершению моделирования, т. к. из счетчика завершения вычитается его теку­щее содержимое - TG1).

Пример: мойка

expf function rn1,C24

0,0/…/.9997,8.0

wash storage 2

GENERATE 5,fn$expf

TEST L Q$qwash,4,bye

QUEUE qwash

ENTER wash

DEPART qwash

ADVANCE 15,8

LEAVE wash

bye TERMINATE 1

Start 10000

  1. Построение модели для оптимизации по нескольким критериям (на примере задачи управления производством). Методы поиска оптимума.

При моделировании приходится подбирать оптимальное значение параметров. Например, кол-во рабочих и их загрузка. 2 варианта: либо прибор простаивает, либо не справляется с нагрузкой и клиенты уходят. Нужно приводить оптимизацию к общему параметру, например, к деньгам. Нужно получить целевую фун-ю распределения.

Можно разобрать на примере распределения ресурсов.

Имеется фирма-поставщик, кот сотрудничает с Вашей фирмой. Она поставляет партии товаров. Заказ на очередную партию приходит быстро, в теч времени подготовки д.б. сформирован, далее отгружается, затем поступает на фирму через время доставки t. Чтобы он был готов для розничной продажи, необходимо время оформления tof.

Ограничения:

  1. Ограничены складские помещения, не может хранить больше чем V единиц товаров;

  2. Если на поставку партии товара подали заказ очень поздно, то фирма терпит убытки;

  3. Нельзя закупать кол-во товара очень большим, чтобы оборот капитала приносил прибыль;

  4. Поставщик не может формировать заказ произвольного объема.

В модели одна из важнейших задач заключ в достижении такого сочетания параметров, при кот достигается оптимум (max/min) некоторой целевой ф-ии. Кол-во параметров, от кот зависит это реш, м.б. различным. Эти параметры наз факторами. Для каждого из факторов можно определить диапазон изменений.

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

  1. Полный эксперимент. Разбить диапазон изменений факторов на небольшие отрезки, и для каждого сочетания факторов провести отдельные эксперименты. Но кол-во экспериментов может оказаться недопустимо большим.

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

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

  1. Переходные процессы в статистических моделях. Необходимость очистки статистических данных. Блок RESET.

Переходный процесс - это такое состояние модели, при кот статистические значения (коэффициент использования, длина очереди) еще не достигли своих стационарных. Если не принимать специальных мер, то результаты моделирования, полученные в переходных процессах, будут искажать истинный результат. Чтобы устранить влияние переходных процессов на результат моделирования, можно использовать один из следующих методов:

  1. с помощью специальных математических методов (теория вероятностей) изменить полученные значения, пересчитать их заново;

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

  3. в самой модели выполнить моделирование в 2 этапа:

- удвоенное/утроенное время переходного процесса

- стационарное состояние

Первый из этих вариантов требует спец математического аппарата и не всегда удобен.

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

Третий подход: чтобы выполнить необходимые этапы используется оператор RESET. Оператор RESET сбрасывает всю статистическую информацию, накопленную в процессе прогона модели. Использование этого оператора заключается в следующем: все значения, полученные в процессе моделирования (данные очереди, многоканальных устройств), удаляются, а сами устройства остаются в том же состоянии, в кот они находились. Оператор не имеет операндов. Оператор RESET используется обычно когда требуется собрать статистику по отдельным интервалам стационарности или исключить влияние переходного периода на собираемую статистическую информацию.

GENERATE 10000

TERMINATE 1

START 1

RESET

START 10

Чтобы не выводить лишний отчет о моделировании, оператор START можно дополнить: START 1,NP.

  1. Переход транзактов в один из двух блоков с заданной вероятностью. Блок TRANSFER в режиме условной передачи. Организация циклических (замкнутых) моделей с помощью блока TRANSFER.

Блок TRANSFER предназначен для выбора или изменения направления движения транзактов в модели. Он может работать в одном из 9 режимов, кот задаются при помощи операнда А. Ни в одном из режимов блок не препятствует входу в него транзактов.

Режим вероятностной передачи:

TRANSFER A,B,C

А – вер-ть перехода от 0 до 1; В – метка, по кот транзакты переходят с вероятностью 1-А; С – метка, по кот транзакты переходят с вероятностью А

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

Пример:

  1. TRANSFER 0.333,Prn,NePrn – из общего числа транзактов, поступающих в блок TRANSFER, примерно 33,3% переходят в блок с именем NePrn, а остальные 66,7% - в блок Prn.

  2. TRANSFER 50,,NePrn – с вероятностью 0,05 транзакт будет направлен в блок с именем NePrn, и с вер-ю 0,95 – в следующий за TRANSFER блок.

Циклическая модель – когда присутствует замкнутый путь (цикл). Транзакты приходят в модель все одновременно, их число ограничено, ни один из них не покидает модель, способ завершения – только по времени (TERMINATE/ GENERATE 20000/ TERMINATE 1/ START 1).

Пример:

;В фирме имеется 100 компов и 90 рабочих мест (10 комп м.б. резервными). Каждый комп работает в течение некот времени, потом выходит из строя, ремонтируется. Потом возвращается на рабочее место или в очередь. Время наработки на отказ составляет 1000+-400 часов. Время ремонта компа 24+-18 часов.

;Построить модель, и подобрать такое кол-во рабочих, кот занимаются ремонтом,чтобы на рабочих местах всегда были бы компы.

workcomp STORAGE 90 ;кол-во рабочих мест

fixer STORAGE 4 ;сколько рабочих

GENERATE ,,,100 ;кол-во компов

ALEX QUEUE RabKomp ;моделирование входа в очередь (работающие компы)

ENTER WorkComp ;рабочий период

DEPART RabKomp ;выход из очереди работающих компов

ADVANCE 1000,400 ;время наработки на отказ

LEAVE WorkComp ;покидает рабочий период

QUEUE SlomKomp ;моделирование входа в очередь (сломанные компы)

ENTER Fixer ;нерабочий период

DEPART SlomKomp ;выход из очереди неработающих компов

ADVANCE 24,18 ;время ремонта компов

LEAVE Fixer ;покидает нерабочий период

TRANSFER ,Alex ;транзакт направляется в блок с именем Alex

GENERATE 20000 ;управление временем моделирования

TERMINATE 1 ;завершение моделирования

start 1 ;Начальное значение счетчика завершений

  1. Функциональный режим блока TRANSFER. Пример модели с использованием данного режима.

Блок TRANSFER предназначен для выбора или изменения направления движения транзактов в модели. Он может работать в одном из 9 режимов, кот задаются при помощи операнда А. Ни в одном из режимов блок не препятствует входу в него транзактов.

TRANSFER FN,B,C

Когда в поле А задан мнемонический указатель FN, блок работает в функциональном режиме. В этом режиме имя блока, в кот переходит транзакт, определяется как сумма значения функции, имя которой задано в поле В, и значения, определенного в поле С. Если операнд С блока TRANSFER не задан, по умолчанию он =0, и адрес блока, в кот направляется транзакт, опре­деляется только значением функции.

Пр: TRANSFER FN,Func4 (вошедший в этот блок транзакт направляется в блок, адрес кот получа­ется в результате вычисления значения функции с именем Func4).

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

Пр: ;Система массового обслуживания. ;Заявки приходят через каждые 4 единицы времени.

IANA FUNCTION RN2,D5

0,SERV1/0.4,SERV1/0.7,SERV2/0.95,SERV3/1,SERV4

expf FUNCTION RN1,C24 ; Экспоненциальная стандартная функция

0,0/…./.9997,8.0

OBSL STORAGE 3

GENERATE 4,FN$expf

ASSIGN MAS,FN$IANA ;обращение к функции

QUEUE ochered1 ;организация очереди

ENTER obsl

DEPART ochered1 ;покидание очереди

TRANSFER FN,IANA

SERV1 ADVANCE 10,FN$expf

TRANSFER ,ENDSERV

SERV2 ADVANCE 12,FN$expf

TRANSFER ,ENDSERV

SERV3 ADVANCE 5,FN$expf

TRANSFER ,ENDSERV

SERV4 ADVANCE 8,FN$expf

ENDSERV LEAVE obsl

TERMINATE

GENERATE 10000 ; управление временем моделирования

TERMINATE 1

START 1

  1. Модель с нетерпеливым клиентом. Пример системы, соответствующей данному виду моделей. Операнд BOTH в блоке TRANSFER. Постановка и решение задачи оптимизации в моделях данного вида.

Система с нетерпеливым клиентом – такая СМО, в кот очередь отсутствует, а заявки либо сразу поступают на обслуживание, либо покидают модель без обслуживания.

Модель массового обслуживания с нетерпеливым клиентом. АТС.

zvonok storage 5 кол-во приборов

GENERATE 10,7 ;поступление звонка

TRANSFER both,service,vihod распределения заявок, если занято, то выход

service ENTER zvonok ;начало разговора

ADVANCE 840,720 ;продолжительность разговора

LEAVE zvonok ;окончание разговора

vihod TERMINATE

GENERATE 10000

TERMINATE 1

Блок TRANSFER предназначен для выбора или изменения направления движения транзактов в модели. Он может работать в одном из 9 режимов, кот задаются при помощи операнда А. Ни в одном из режимов блок не препятствует входу в него транзактов.

TRANSFER BOTH,B,C

При работе блока TRANSFER в режиме BOTH для дальнейшего продвижения вошедшего транзакта м.б. выбран один из двух блоков. Сначала проверяется возможность продвинуть транзакт в блок, ука­занный в поле В. Если это сделать не удается, транзакт пытается войти в блок, определенный операндом С. Если и это невозможно, транзакт остается в блоке TRANSFER, выводится из ЦТС и помещается в цепи повторных проверок моделирующих элементов, вызвавших блокировку. Там он пребывает до тех пор, пока не появится возможность перейти в к-л из 2 блоков.

  1. Описание и использование функций распределения, отличных от равномерной. Метод получения случайных чисел для дискретных и непрерывных функций, задаваемых табличным способом.

Функция – это отображение одного множества на др. Способы описания ф-й: аналитический, графический, табличный.

Описание ф-ии : ИмяФ-ии FUNCTION A,B

А – аргумент ф-ии (источник инф-ии), В – информация о типе ф-ии и кол-ве точек.

Префикс для В: Dn – дискретная, Cn – непрерывная. Для вычисления непрерывной ф-ии использ метод линейной интерполяции, т.е. в точках, где ф-я задана, значения определены.

Обращение к ф-ии: FN$ИмяФ-ии.

Метод Монте-Карло: выбирается случ число от 0 до 1 и находится тот интервал, к кот это число относится.

Функции в GPSS используются в первую очередь для задания случайных процессов, например, для определения процессов прихода заявок в систему. Такое событие описывается функцией распределений.

Аргументом функции обычно является случайным образом полученное значении. Поэтому обычно вместо первой переменной записывается rn1.

Пр: Среднее время обслуживания заявок описывается таблицей:

P вер-ть

Tср.

0,1

12

0,6

14

0,25

16

0,05

8

Beta FUNCTION RN15,D4

0,12/0.1,12/0.7,14/0.95,16/1,8

Экспоненциальная функция Поток заявок явл пуассоновским, если выполняются 3 условия:

  1. Вероятность события (приход заявки) на малом интервале времени пропорциональна длине этого интервала.

  2. Вер-ть 2 событий на малом интервале пренебрежимо мала.

  3. Вер-ть поступления заявки не зависит от предыдущих событий.

Если поток заявок явл пуассоновским, то значения интервалов времени между моментами наступления соседних событий распределено по экспоненциальному закону. Используя в кач операнда А блока GENERATE среднее знач интервалов времени, а в кач операнда В – модификатор-функцию FN$ИмяФ-ии, можно моделировать пуассоновский входящий поток. Такой поток будет хорошо удовлетворять требованиям ординарности, стационарности и отсутствия последействия.

Для использования в модели – 2 способа: 1) добавить к модели стандартную экспоненциальную функцию, затем модифицировать ее, 2) использовать средства языка Plus. Стандартная функция задается таблицей (24 точки), среднее значение равно 1. Для того, чтобы получить число, которое распределено в соответствии с экспон ф-ей, нужно получить случайное число от стандартной экспон ф-и и умножить его на значение среднего. Для этого в блоках GENERATE и ADVANCE описать обращение к ф-и в операндах В.

expf function rn1,C24

0,0/…/.9997,8.0

GENERATE 5, Fn$expf

Нормальная функция распределения описывает большое число разных случайных процессов и является одной из наиболее часто употребимых. Функция имеет 2 параметра – µ - мат ожидание, σ – среднее квадратич отклонение. Стандартная нормальная функция: µ = 0, а σ = 1. Она имеет соответствующую таблицу.

normf FUNCTION RN1,C25

0,-5/…/1,5

advance (fn$normf#4+20)

Обычно эта функция нужна с другими значениями параметров. Для того чтобы получить случайные числа для таких функций, требуется число, кот получится при обращении к этой функции, умножить на значение σ, а потом результат сложить с µ.

  1. Определение дискретных и непрерывных функций в GPSS. Использование функций в блоках GENERATE и ADVANCE.

Функция – это отображение одного множества на др

Способы описания ф-й: аналитический, графический, табличный.

Описание ф-ии : ИмяФ-ии FUNCTION A,B

А – аргумент ф-ии (откуда брать значение), В – информация о типе ф-ии и кол-ве точек.

Префикс для В: Dn – дискретная, Cn – непрерывная.

Дискр функция (Dn) – множество значений которой конечно. Функция типа D со случайным аргументом может определять вероятностное распределение дискретной случайной величины. Для этого д.б. известна полная группа независимых событий и соответствующие вероятности совершения этих событий.

Пример:

Autotype function RN31,D5 (5 т.к. задано 4 значения)

0,1/0.32,1/0.72,2/0.84,3/1,4

Непрерывная функция (Cn).Для вычисления непрерывной ф-ии использ метод линейной интерполяции, т.е. в точках, где ф-я задана, значения определены, а во всех промежуточных точках предполагается, что она меняется линейно.

Обращение к ф-ии: FN$ИмяФ-ии.

Метод Монте-Карло: выбирается случ число от 0 до 1 и находится тот интервал, к кот это число относится.

Пример ф-ии:

Imya FUNCTION RN3, C5

0,2/.4,2.5/.7,4/.82,5/1,7

Чаще всего функция будет являться случайной. Для решения задачи необходима функция, кот с вероятностью Х выдает значение У. Источником будет генератор случайных чисел RN. При использовании в кач аргумента функции СЧА RN формируются случайные числа, равномерно распределенные в интервале от 0 до 0,999999 включительно, кот могут использоваться для получения случайных чисел с заданными законами распределения.

Функции можно использовать в блоках GNENRATE и ADVANCE.

В блоке GENERATE функция используется для имитации неравномерного распределения времени поступления транзактов модель:

GENERATE 4,FN$<имяФункции>

В блоке ADVANCE для имитации задержки транзакта- посетителя в модели с учетом распределения времени обслуживания:

ADVANCE FN$<имяФункции>

  1. Моделирование пуассоновских потоков. Условия адекватности пуассоновской модели случайного процесса. Связь пуассоновского потока и экспоненциального распределения.

Поток заявок явл пуассоновским, если выполняются 3 условия:

  1. Вероятность события (приход заявки) на малом интервале времени пропорциональна длине этого интервала.

  2. Вер-ть 2 событий на малом интервале пренебрежимо мала.

  3. Вер-ть поступления заявки не зависит от предыдущих событий.

Если поток заявок пуассоновский, то функция распределения интервала времени между этими событиями называется экспоненциальной. Используя в кач операнда А блока GENERATE среднее знач интервалов времени, а в кач операнда В – модификатор-функцию FN$ИмяФ-ии, можно моделировать пуассоновский входящий поток. Такой поток будет хорошо удовлетворять требованиям ординарности, стационарности и отсутствия последействия. Чтобы продемонстрировать экспоненц ф-ю, нужно учесть, что кол-во параметров =1, кот наз среднее значение.

Чтобы в модели использовать экспоненциальную ф-ю распред, нужно воспользоваться одним из след путей:

  1. Стандартная экспоненциальная ф-я распределения, у кот среднее знач =1. Чтобы получить значение ф-ии распред отличное от 1, нужно обратиться к стандартной экспоненц ф-ии, и полученное число умножить на среднее значение.

expf FUNCTION RN1,C24

0,…/…/1,..

GENERATE 15,FN$expf

Чтобы удобно было моделировать пуассоновский поток заявок, нужно: если в кач операнда В в блоках GENERATE и ADVANCE использ обращение к ф-ии, то соотв интервал времени (между 2 заявками, задержки) получ путем умножения операнда А на значение этой ф-ии.

  1. GENERATE (Poisson())

GENERATE (Exponential())

Наличие скобок – использование языка PLUS.

  1. Использование GPSS-модели для сравнения альтернативных вариантов обслуживания. Обычная и «быстрая» очереди. Использование блока GATE для управления потоком транзактов.

Обычная очередь - к каждому устройству, «быстрая»- одна ко всем устройствам. Пример - сбербанк (Схема: Вход , очередь, условие, 3 устройства, все на выход).

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

GATE r A,B

r = lr – выключен

ls – включен

А – имя ключа или его номер, В – метка, куда перейти, если условие ложно

Блок работает след образом: входящий транзакт либо задерживается перед ним, либо передается дальше. Операнд r и А образуют логическое условие. Если условие истинно, то транзакт проходит через блок, а если условие ложно, то дальнейшее поведение транзакта зависит от операнда В. Если он есть, то транзакт пытается по нему перейти (режим альтернативного выхода), а если его нет, то ожидает изменение состояния ключа в блоке, из кот пытается войти в GATE. Когда операнд В не указан, блок работает в режиме отказа.

В блоке GATE могут использоваться системные логические атрибуты, кот анализируют состояние других объектов модели. К ним относятся устройства, многоканальные у-ва.

  1. Резидентное и транзитное время транзактов. СЧА: таймеры абсолютного и относительного времени. Блок MARK. Определение и использование таблиц. Блок TABULATE. Описание таблицы: оператор TABLE.

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

При входе каждого транзакта в модель интерпретатор записывает текущее значение таймера абсолютного модельного времени. Временем входа транзакта в модель считается отсчет таймера модельного вре­мени, при кот транзакт входит в блок, следующий за блоком GENERATE, этот отсчет может отличаться от времени входа транзакта в блок GENERATE. Полученный отсчет используется для определения значения системного числового атрибута M1 - резидентного времени транзакта. Оно вычисляется всякий раз при вызове СЧА M1 как разница между текущим значением абсо­лютного модельного времени и временем входа транзакта в модель. Значение M1 явл числовым атрибутом активного транзакта, обрабатываемого ин­терпретатором в данный момент времени.

Чтобы зафиксировать в специальном поле транзакта текущее значения таймера, используется блок MARK_А. Операнд А - имя параметра, в кот должна про­изводиться запись значения СЧА АС1. Если транзакт не имеет такого параметра, то он создается.

Пр: MARK 5 (при входе в блок транзакта в его 5-й параметр записывается текущее значение абсолютного модельного времени).

Вычисление транзитного времени выполняется при входе транзакта в блок, содержащий вызов СЧА транзитного времени транзакта - МРИмя.

Пр: SAVEVALUE Ttrl,MP5 (при входе в блок транзакта вычисляется его транзитное время; полученное значение записывается в кач значения сохраняемой величины Ttrl).

Для получения выборочных распределений случайных величин и числовых значений их характеристик используются таблицы GPSS. Любой СЧА, а так­же выражение в скобках м.б. аргументом таблицы. Определяя таблицу, программист задает диапазоны возможных зна­чений аргумента - частотные интервалы. Таблица д.б. определена до первого обращения к ней в модели.

Описание и использование таблиц:

  1. Таблица очереди – содержит информ о распределении времени пребывания заявки в очереди. Система строит таблицу так: когда заявка покидает очередь, то фиксируется время пребывания в очереди, определяется интервал и хранимое в этом интервале значение числа попаданий увелич на 1.

Описание таблицы очереди: ИмяТабл QTABLE A,B,C,D

A – имя очереди, В – верхняя граница нижнего интервала, С – длина интервалов, D – кол-во интервалов.

Чтобы получить хорошую статистическую таблицу, нужно провести большое кол-во экспериментов.

  1. Таблица распределения времени пребывания в модели.

    1. Абсолютное время – с момента поступления в модель

    2. Транзитное время – между произвольными точками модели

Чтобы построить таблицу распределения, нужно: 1)описать таблицу, 2)указать точку фиксации событий, 3)для транзитного времени указать точку начала.

Описание таблицы: ИмяТабл TABLE A,B,C,D

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

Точка для построения таблицы: TABULATE A; А – имя таблицы.

С какой точки модели: MARK A

  1. Использование выборки из нормального распределения в модели на GPSS. Пример модели с нормальным распределением времени обслуживания.

Нормальная функция распределения описывает большое число разных случайных процессов и является одной из наиболее часто употребимых.

µ - мат ожидание, σ – дисперсия (среднее квадратич отклонение) – ур-нь размытости кривой по отнош к мат ожиданию.

Использовать нормальную ф-ю распределения в моделировании, можно:

  1. С пом стандартной норм ф-ии распределения.

-поместить в модель описание ф-ии

-значения параметров: µ=0, σ=1, σ2=1.

-обратиться к ф-ии, и полученное случ число преобразовать след образом: T=t σ2

Пример1: время обслуж распределено по норм закону с µ=120 и σ2=10.

Normf FUNCTION RN1,C24

ADVANCE (FN$Normf+#10+120)

  1. С пом встроенной ф-ии распредел языка PLUS.

При неправильном сочетании параметров µ и σ2 норм ф-я распределения может выдать отрицательное значение, а если речь идет о времени, то будет ошибка.

Пример2: µ=15 и σ2=3.

Normf FUNCTION RN1,C24

GENERATE (FN$Normf+#3+15)

Пример

;Магазин с двумя продавцами. Одна из целей моделирования состоит в определении, сколько покупателей обслужено в течение всего времени моделирования каждым из продавцов.Кроме того, поставим следующую задачу: подсчитать доход, кот приносит магазину каждый из

;продавцов. Стоимость продаваемых изделий распределена по нормальному закону с мат. ожиданием = 1000 и ср. кв. отклонением = 150. Вероятность покупки у Кости 0.3, а у Кати - 0.45.

normf FUNCTION RN1,C25

0,-5/…/1,5

kos storage 1

katerina storage 1

GENERATE 15,10 ;генерация транзактов

QUEUE ocher ;организация очереди к продавцам

TRANSFER BOTH,kostya,katya;переход по меткам kostya и katya

DEPART ocher ;выход из очереди к продавцам

kostya SEIZE kos ;занятие Кости

ADVANCE 20,10 ;продолжительность обслуживания у Кости

SAVEVALUE 1+,1 ;сохраняемая величина

TRANSFER 0.3,dinis,tanya ;переход по меткам dinis и tanya

tanya SAVEVALUE profk+,(normf#150+1000)

dinis RELEASE kos ;освобождение Кости

katya SEIZE katerina ;занятие Кати

ADVANCE 25,5 ;продолжительность обслуживания у Кати

SAVEVALUE 2+,1

TRANSFER 0.45,vih,kprod ;переход по меткам vih и kprod

kprod SAVEVALUE profp+,(normf#150+1000)

vih RELEASE katerina ;освобождение Кати

TERMINATE

GENERATE 10000

TERMINATE 1

start 1

  1. Арифметические переменные и арифметические операции в GPSS. Операторы VARIABLE. Вычисления в модели с помощью языка PLUS.

Значение арифметической переменной определяется в результате вы­числения соответствующего ей выражения. В выражении м.б. связаны арифметическими, логическими операторами и операторами отношения кон­станты, СЧА, а также вызовы PLUS-процедур и биб­лиотечные процедуры языка PLUS. В GPSS World используются следующие арифметические операции:

- унарное отрицание

^ возведение в степень;

# умножение;

/ деление;

\ целочисленное деление;

@ деление по модулю;

+ сложение;

- вычитание.

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

Арифметические переменные объявл командами VARIABLE (ОПРЕДЕЛИТЬ ПЕРЕМЕННУЮ).

ИмяКоманды VARIABLE выражение.

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

Используя команду EQU, символьному имени арифметической переменной можно поставить в соответствие числовой эквивалент. Команда EQU должна предшество­вать в программе команде VARIABLE.

Арифметические переменные явл СЧА, обращение к кот имеет вид V$имя. Вычисление значения выражения производится каждый раз, когда транзакт входит в блок, содержащий ссылку на переменную, или когда этот СЧА встречается в выражении. Если в выражении имеются ссылки на параметры, используются значения парамет­ров активного транзакта, вызвавшего вычисление переменной.

Пр: ADVANCE V$Tprd (значение интервала времени задержки транзакта, вошедшего в блок, опреде­ляется в результате вычисления арифметической переменной Tprd).

Выражение, определяющее арифметическую переменную, может содер­жать в кач элементов др переменные. Это позволяет разделять длинные выражения на части.

Напр: Var4 VARIABLE V$Varl#V$Var2-V$Var3

Арифметическим переменным, объявляемым командой VARIABLE в одной модели, следует присваивать разные имена, т. к. связан­ные с ними СЧА имеют одинаковое мнемоническое обозначение - Vимя.

  1. Управление логическими переключателями. Оператор INITIAL и блок LOGIC. Проверка состояния логических переключателей. Блок GATE. Его использование с приборами и МКУ. Пример применения данного блока.

Логический ключ – это объект модели, кот может нах-ся в одном из 2 состояний: вкл S и выкл R. Система моделир позволяет изменить знач ключа, а также проанализировать текущее состояние.

Основное назначение ключей: с их помощью из одного сегмента модели можно управлять движением транзактов в др сегменте. Каждый логический переключатель должен иметь числовое или символь­ное имя. Предварительного объявления переключателей не требуется. Переключатель считается объявленным при любом обращении к нему в модели с целью проверки или изменения его состояния.

Информация о текущем состоянии переключателя возвращается при обра­щении к СЧА LS$Имя. Возвращаемым значением явл 1, если переключатель установлен, и 0, если он сброшен.

По умолчанию перед началом модели­рования все ключи устанавливаются интерпретатором в состояние «сброшен».

Начальное состояние переключателя м.б. определено при помощи команды INITIAL A,B. В поле А записывается мнемоническое обозначение LS и имя ключа, кот должен находиться в состоянии «установ­лен». В - величина, которая определяется. По умолчанию =1.

Пр: INITIAL LS$Key3 , INITIAL LS2 (начальное состояние логических переключателей с именами КеуЗ и 2 опре­делено как «установлено»).

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

Для установления и изменения состояния ключа использ блок:

LOGIC r A

r = S – включить, R – выключить, I – переключить.

Чтобы сослаться на ключ, используют его имя или номер А.

Пример использования ключа: шторм в порту бывает через каждые 45±15 дней, и продолжается в теч 40±25 часов. Построить сегмент модели, в кот с соответств периодичностью переключается блок storm. Для этого можно использ 2 способа:

  1. Разомкнутый сегмент – с пом блоков Generate-Advance-Terminate.

    generate 1080,360 – промежуток между штормами

    logic s storm – включить

    advance 40,25 – время шторма

    logic r storm – выключить

    terminate

  2. Циклический сегмент – с 2 блоками advance, этот вариант правильнее отражает условие задачи.

generate ,,,1

cycle logic s storm

advance 40,25

logic r storm

advance 1080,360

transfer ,cycle

Для анализа текущего состояния ключа использ блок:

GATE r A,B

r = lr – ключ выкл, ls – ключ вкл. А – имя или номер ключа, В – метка, если условие ложное.

Этот блок использ для анализа СЧА.

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

Кроме логич ключей в блоке GATE могут использ др системные логические атрибуты, кот анализируют состояние др объектов модели: устройства, многоканальные устр-ва и др.

  1. Использование переменных для записи сложных логических условий. Пример модели со сложными логическими условиями.

Логические переменные для проверки сложных условий строятся следующим образом:

-каждое элементарное условие записывается в скобках

-скобки объединяются знаками: + - #.

Для проверки условий из логических переменных используется блок TEST.

Пример: Can_in – переменная определяет, возможен ли вход в порт, условия: нет шторма (ls$storm=0), есть буксиры(кол-во свободных каналов в МКУ; Буксиры больше одного: r$n_tugs>=1), есть места в порту (кол-во свободных каналов в МКУ; Терминал: r$term>0).

Объявление переменной:

Can_in VARIABLE (ls$storm=0)#(r$n_tugs>=fn$kolb)#(r$term>0)

Проверка: TEST E V$Can_in,1

  1. Построение модели массового обслуживания с завершением обслуживания заявок, стоящих в очереди к моменту закрытия входа.

Схема: вход, Gate в очереди как условие (либо дальше, либо на выход), МКУ, выход. Если время моделирования закончилось, то все на выход, кто заходит. Сначала GATE открыт, с помощью Initial.

Generate 10000

Logic R имя ключа

Далее проверить (длина очереди= 0) И (прибор свободен) с помощью TEST, Terminate1, Start1.

При завершении моделирования может возникнуть такая ситуация, что некоторые транзакты будут находиться все еще в модели. Следовательно, в момент завершения моделирования программа GPSS зафиксирует их присутствие в модели в соответствующих блоках. Предположим, что в очереди заблокированы несколько транзактов, т.к. прибор, в который они должны зайти, занят. Однако часто транзакт, который занимает прибор, освобождает его в текущий момент времени. Значит, один из заблокированных транзактов может двигаться дальше. Поэтому СМ просматривает ЦТС неоднократно, если в данный момент зарегистрировано одно из стандартных событий. При правильно отлаженной модели число необработанных заявок не должно превышать 2-3.

Пример:

expf FUNCTION RN2,C24 ; Экспоненциальная функция распределения

0,0/…/.9997,8.0

normf FUNCTION RN1,C25;нормальная функция распределения

0,-5/…/1,5

moika STORAGE 1

osmotr STORAGE 1

remont STORAGE 2

serv VARIABLE fn$normf#3.5+20

GENERATE 20,fn$expf ;приход машин

logic s 1 ;вкл

GATE LS 1,bye ;проверка состояния ключа

ENTER moika ;занятие мойки

ADVANCE 7,2 ;моют 7+-2 мин

leave moika ;освобождение мойки

ENTER osmotr ;занятие рабочего на техосмотр

ADVANCE v$serv ;осмотр машины

LEAVE osmotr ;уход с техосмотра

TRANSFER 0.3,bye,rem ;30% машин на ремонт, остальные выходят

rem ENTER remont ;занятие ремонтника

ADVANCE 90,45 ;ремонт машины 90+-45 мин

LEAVE remont ;освобождение ремонтника

bye TERMINATE ;удаление транзакта из модели

GENERATE 720 ;моделирование рабочего дня

LOGIC R 1 ;перевести ключ в состояние выключен

TERMINATE 1 ;уменьшение счетчика на единицу

START 1 ;начальное состояние счетчика завершения=1

  1. Сохраняемые величины. Оператор INITIAL и блок SAVEVALUE. Свойства сохраняемых величин.

Сохраняемая величина – это поле модели, кот может сохранять произвольные значения. Эти значения могут сохраняться и после моделирования. Сохраняемая величина имеет имя и порядковый номер. К значению, связанному с сохраняемой величиной, можно обращаться из любого места модели, используя СЧА X$Имя. Сохраняемая величина не требует явного объявления и существует в моде­ли при ссылке на нее в выражении или операторе GPSS.

Начальное значение сохраняемой величины до можно установить с помощью команды INITIAL A,B. В поле А команды указывается мнемоническое обозначение опреде­ляемой величины (X$Имя), в поле В - ее значение. По умолч В=1.

Пр: INITIAL X$PER8,10 (сохр величине с именем PER8 присвоено на­ч значение 10).

Чтобы задать значение сохр величине или изменить это значение, использ блок:

SAVEVALUE A,B

А – номер или имя, В – значение или модификатор.

Использование сохраняемых величин: сохр величины автоматически отображаются в отчете. Эти значения можно использ в ходе моделирования.

Чтобы определить текущее знач сохр величины и в зав-ти от значения изменить направление потока транзакта, использ блок TEST (напр TEST X4, TEST X$имя)

  1. Проверка числовых выражений. Блок TEST. Пример моделирования с использованием данного блока.

Блок TEST предназначен для проверки соотношения между 2 СЧА, для анализа текущего значения пар-ра транзакта, для управления потоками транз.

TEST r A,B,C

A,B – величины, кот сравниваются между собой, С – метка (необязательная).

r= L<, LE≤, E=, GE≥, G>, NE≠.

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

Напр: TEST L Q$PRIB2,3 (транзакт, инициировавший проверку, войдет в блок TEST, если очередь с именем PRIB2 меньше 3; если длина очереди равна 3 или больше, транзакт останется в блоке, из кот пытался войти в TEST;

* Задача * Система массового обслуживания с ограничением на длину очереди * Поток заявок - пуассоновский, среднее значение интервала 2 с. * 5 обслуживающих приборов, работающих параллельно. Время обслуживания * распределено по экспоненциальному закону со средним значенем 25 с. * Длина очереди - не больше количества обслуживающих приборов * Если в момент прибытия заявки длина очереди равна 5, заявка * покидает систему без обслуживания. XPOIS FUNCTION RN1,C24 0,0/…/.9998,8 comps storage 5 ; 5 обслуживающих приборов GENERATE 2,fn$Xpois ;Приход TEST L Q$Qcomps,5,GoodBye QUEUE Qcomps ; Занять очередь ENTER comps ; Войдите! DEPART Qcomps ; Покиньте очередь ADVANCE 20,fn$Xpois ; и начните обслуживаться LEAVE comps ; Обслуживание завершено, освободить прибор GoodBye TERMINATE ; Ваш путь окончен GENERATE 10000 ; Транзакт - таймер TERMINATE 1 ; Завершит моделирование start 1 ; Начальное значение счетчика завершений

  1. Экспериментирование с моделями. Критерии оптимизации системы и их отображение в модели.

В реальной системе или модели одной из важнейших задач при проектировании явл нахождение такого сочетания параметров, при котором достигается оптимум функции. Кол-во параметров м.б. различным. Сами эти параметры называются факторами. Для каждого из этих факторов можно определить диапазон изменений (min и max). Эксперименты бывают однофакторные и многофакторные.

Многофакторные – нужно подобрать 2 и более факторов. Выполнение серии экспериментов с одной и той же моделью. Каждый эксперимент будет отличаться от предыдущего некоторым новым значением оптимизированного пар-ра. Автоматизировать процесс изменения знач пар-ров в автоматич режиме и повторно проводить моделирование. Для этой задачи использ язык PLUS.

Средства связи PLUS с GPSS: можно использ изменение знач тех величин, кот задаются с пом команд языка (имя storage A; start; equ).

Чтобы в эксперименте при каждом след выполнении модели ранее накопленная статистика уничтожалась, использ команду RESET. Чтобы получить зав-ть max длины очереди от среднего интервала между 2 заявками, нужно после каждого выполнения выполнить команду RESET, чтобы сбросить накопленную статистику. В некот случаях для выполн экспериментов использ также команда CLEAR, кот устанавливает все объекты в исходное состояние.

Проведение экспериментов можно осуществить 1 из 2 способов:

  1. Полнофакторный: Разбить каждый диапазон изменений факторов на небольшие отрезки, и для каждого сочетания отрезков провести отдельный эксперимент. Кол-во экспериментов может оказаться очень большим.

  2. Заранее спланировать эксперимент. Из всего множества точек, кот соответствуют значениям факторов, выбрать некот подмножество и провести эксперименты по ним.

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

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

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

Пр.: ats storage 5

5 – параметр, кот нужно оптимизировать.

  1. Краткая характеристика языка PLUS. Назначение и возможности языка. Связь модели GPSS с процедурами языка. Пример.

PLUS (Programming Language Under Simulation). Язык позволяет создавать процедуры выполнения вычислений в ходе моделирования, управления структурами данных, проведения моделирующих экспериментов и обработки их результатов. Вызовы процедур могут содержаться в операндах блоков и команд, находящихся в разных местах модели.

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

Язык PLUS явл составной частью GPSS и не имеет самостоятельного значения. Синтаксис PLUS не содержит к-л дополнительных символов по отношению к алфавиту GPSS World.( _ + - . \ , & ^ @ = < > | ~ : ; # ‘).

При работе с PLUS регистр команд не учитывается. Первым символом в переменной д.б. буква, а длина имени составляет от 1 до 250 символов. Имена могут использоваться как метки и как переменные пользователя.

Виды процедур в PLUS: Библиотечные процедуры, Математические процедуры, Процедуры генерирования случайных чисел, Строковые процедуры, Процедуры запросов по транзактам, Служебные процедуры, Процедуры пользователя.

Для определения процедуры в программе используется оператор PROCEDURE Имя(список аргументов) Оператор

Имя – имя процедуры, определенное пользователем. Список аргументов – Последовательность заданных программистом имен переменных пользователся, используемых для обозначения формальных параметров. Разделителями имен переменных являются запятые. Список м.б. пустым. Оператор – тело процедуры – оператор PLUS. Обычно оператор, определяющий тело процедуры, явл составным.

Пример: (получ зав-ти max длины очереди от ср интервала между поступлением 2 заявок)

procedure mich() begin

Nmean = 3;

while (Nmean < 14) do begin

Str=PolyCatenate("meanVal equ ",Nmean);

doCommand(Str);

doCommand("start 1,NP");

txt = "Среднее значение интервала времени поступления = ";

Str=PolyCatenate(txt,meanVal, " Максимальная длина очереди = ",x$svqm);

doCommand("show Str");

Nmean = Nmean +1;

doCommand("clear");

doCommand("Reset");

end;

end;

  1. Постановка экспериментов с использованием языка PLUS. Пример оптимизирующего эксперимента.

Особым видом процедуры явл эксперимент, для объявления кот используется оператор EXPERIMENT Имя(список аргументов) Оператор

Имя – имя процедуры-эксперимента, определенное пользователем. Список аргументов – последовательность имен переменных, используемых в качестве формальных параметров. Оператор – Тело процедуры – оператор PLUS.

Оператор EXPERIMENT объявляет процедуру пользователя, предназначенную для управления моделированием при проведении эксперимента. После трансляции программы процедура добавляется в библиотеку процедур модели и становится доступной для вызова.

В общем случае программа управления экспериментом, должна циклически выполнять:

  • Инициализацию исходных данных перед каждым новым прогоном модели в соответствии с планом эксперимента (определение набора уровней факторов и Начальных состояний генераторов случайных чисел);

  • Прогон модели;

  • Считывание результатов моделирования для хранения.

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

Программу управления экспериментом целесообразно разрабатывать на языке PLUS. Для этого она д.б. оформлена в виде специальной PLUS-процедуры пользователя, кот объявл оператором EXPERIMENT.

Процедура, объявленная оператором EXPERIMENT м.б. вызвана только командой CONDUCT, предназначенной для вызова процедуры управления экспериментом и передачи аргументов в эту процедуру.

Для формирования GPSS-операторов внутри процедуры в языке PLUS предусмотрена служебная библиотечная процедура DoCommand.

Пример: модель с оптимизацией количества каналов. цель-получить зависимость максимальной длины очереди от среднего интервала между поступлениями 2 заявок

meanVal equ 10

GENERATE meanVal,3;(poisson(3,meanVal))

QUEUE misha

SEIZE masha

DEPART misha

ADVANCE 9,8

RELEASE masha

TERMINATE

GENERATE 10000

saveValue svqm,QM$misha

TERMINATE 1

procedure mich() begin

Nmean = 3;

while (Nmean < 14) do begin

Str=PolyCatenate("meanVal equ ",Nmean);

doCommand(Str);

doCommand("start 1,NP");

txt = "Среднее значение интервала времени поступления = ";

Str=PolyCatenate(txt,meanVal, " Максимальная длина очереди = ",x$svqm);

doCommand("show Str");

Nmean = Nmean +1;

doCommand("clear");

doCommand("Reset");

end;

end;

experiment sem()begin

mich();

end;

  1. Цепь пользователя. Назначение цепи пользователя. Блоки LINK и UNLINK. Индикатор цепи. Пример модели с использованием цепи пользователя.

Цепи пользователя (ЦП) - это списки, в кот транзакты переводятся из ЦТС в соответствии с логикой работы модели, опреде­ленной программистом. Каждой из них присваивается индивидуальное числовое или символьное имя. Каждая цепь пользователя имеет начало и конец.

Удаление транзакта из ЦТС и размещение его в ЦП производится при выполнении подпрограммы блока LINK A,B,C (ВВЕСТИ В ЦЕПЬ).

  • A – номер или имя цепи пользователей

  • B – место цепи, кот должен занять размещаемый в ней транзакт; FIFO, LIFO или Выражение в скобках, СЧАимя или СЧА*имя

  • C – метка альтернативного блока

Наличие или отсутствие операнда С определяет режим работы блока LINK. Если С не задан, то блок используется в режиме безусловного присоединения транзакта к ЦП с именем А, и порядком присоеди­нения В.

Пр: LINK Wait,FIFO (транзакт, вошедший в блок, помещается в конец ЦП с именем Wait);

LINK Nakop,Р2 (вошедший в блок транзакт помещается в ЦП с именем Nakop и занимает в ней место в порядке возрастания значения параметра 2).

Транзакт остается в ЦП до тех пор, пока не будет выведен из нее некот другим транзактом, кот должен для этого войти в блок UNLINK A,B,C,D,E,F (ВЫВЕСТИ ИЗ ЦЕПИ).

  • A – имя ЦП, из которой д.б. удалены транзакты

  • B – имя блока, в кот должны перейти транзакты, вы­веденные из цепи

  • C – кол-во транзактов, подлежащих удалению из цепи (по умолч ALL).

  • D – величина для сравнения, номер параметра, который используется для сравнения

  • E – значения для сравнения

Примеры:

UNLINK G V2,BL5,ALL,3,X$AN1,BL3 (при входе транзакта в этот блок осуществляется просмотр ЦП, числовое имя которой равно значению переменной V2; из цепи удаляются и направляются в блок BL5 все транзакты, у кот значение 3-го параметра больше значения сохраняемой величины AN1; если в ЦП нет таких транзактов, выводящий транзакт переходит в блок BL3);

У каждой ЦП есть свой индикатор, кот м.б. во вкл или выкл состоянии. Индикатор предназна­чен для управления очередью транзактов к некот ресурсу. Он находится в состоянии «вкл», если этот ресурс занят, или в состоянии «выкл», если ресурс свободен. При наличии в цепи пользователя хотя бы одного транзакта индикатор включен.

Пример:

LINK AAA,LIFO,MET1 (транзакт помещается в начало цепи пользователя AAA, если индикатор цепи включен; в противном случае транзакт направляется в блок МЕТ1, при этом индикатор включается).

Т.о., индикатор ЦП используется для того, чтобы при свобод­ном ресурсе транзакт направлялся в блок, заданный операндом С блока link, и не попадал в ЦП, и чтобы при занятом ресурсе транзакты присоединялись к ЦП.

  1. Расщепление транзакта. Блоки SPLIT и ASSEMBLE. Пример моделирования с использованием этих блоков.

Помимо блока GENERATE для ввода транзактов в модель использ блок SPLIT A,B,C (РАСЩЕПИТЬ). При входе транзакта в блок SPLIT в модели появл его копии («потом­ки»), кол-во кот определяет программист. После этого родитель и потомки переходят из блока SPLIT в назначенные для них блоки.

A - Число создавае­мых потомков. После создания копий транзакт-родитель проходит в следующий блок мо­дели, а его потомки - в блок, имя кот указано в поле В. С – имя параметра.

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

Пр: SPLIT       3,LLL,6 - копирование транзактов, создаются 3 копии исходного транзакта, исходный транзакт направляется в следующий по порядку блок, а созданные копии - в блок с меткой LLL, при этом параметр 6 основного транзакта увеличивается на единицу, а транзактов - копий - на 2, 3, 4 соответственно.

Применение блока SPLIT разнообразно. Рассмотрим не­сколько примеров систем, при моделировании кот он м.б. востре­бован.

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

Блок ASSEMBLE A (СОЕДИНИТЬ) предназначен для удаления из модели одного или нескольких транзактов. А - число транзактов одного ансамбля, кот д.б. объединены в один транзакт. Значение операнда А на единицу превышает число членов ансамбля, кот д.б. удалены из модели через блок ASSEMBLE.

ASSEMBLE    5 - объединение транзактов, первый из вошедших в блок транзактов продолжит движение в системе после того, как в блок придут еще четыре транзакта.

kolvo FUNCTION rn17,c2

0,9/1,21

GENERATE 1200,720 ;приход заявки на печать

SPLIT fn$kolvo,printer ;определение количества страниц, направление их на печать

TERMINATE ;вывод заказа из модели

printer QUEUE qPages ;очередь листов

SEIZE exec

DEPART qPages

ADVANCE 30,25 ;печать

RELEASE exec

TERMINATE

GENERATE 10000

TERMINATE 1

START 1

  1. Многофакторные эксперименты. Основные понятия. Зависимость объема вычислений от количества факторов. Поверхность отклика. Постановка эксперимента. Пример двухфакторного эксперимента.

В реальной системе или модели одной из важнейших задач при проектировании явл нахождение такого сочетания параметров, при котором достигается оптимум функции. Кол-во параметров м.б. различным. Сами эти параметры называются факторами. Для каждого из этих факторов можно определить диапазон изменений (min и max). Эксперименты бывают однофакторные и многофакторные.

Многофакторные – нужно подобрать 2 и более факторов. Выполнение серии экспериментов с одной и той же моделью. Каждый эксперимент будет отличаться от предыдущего некоторым новым значением оптимизированного пар-ра. Автоматизировать процесс изменения знач пар-ров в автоматич режиме и повторно проводить моделирование. Для этой задачи использ язык PLUS.

F(x1,x2)=k1x1+k2x2, где к- коэффициент показания значимости 1 фактора, а х- факторы убыли. Функция 2 переменных - поверхность отклика. Задаем одну величину х, получаем точку. По методу наискорейшего спуска можно получить направление.

Соседние файлы в папке Чтоесть