Рейтинг@Mail.ru

   
   

Оглавление  Предыдущий  Следующий

Практические рекомендации по выполнению машинного эксперимента



Имитационное моделирование является мощным инженерным методом исследования сложных систем, используемых в тех случаях, когда другие методы оказываются Малоэффективными. Имитационная модель представляет собой систему, отображающую структуру и функционирование исходного объекта в виде алгоритма, связывающего входные и выходные переменные, принятые в качестве характеристик исследуемого объекта. Имитационные модели реализуются программно с использованием различных языыков. Одним из наиболее распространенных языков, Специально предназначенных для построения имитационых моделей, является GPSS: General Purpose Simulation System (моделирующая система общего назначения). Этот язык разработан фирмой IBM и входит в число наиболее распространенных языков программирования. Имеются трансляторы с языка GPSS для ЭВМ различных типов, в том числе IBM-совместимых ПК.

Функциональная структура GPSS/PC

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

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

      • средний уровень, представляемый схемой из типовых блоков, между которыми перемещаются транзакты;

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


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

Построенная схема является одновременно программой на языке GPSS. Для ее ввода в ЭВМ необходимо последовательность блоков представить в виде списка операций, добавив к названиям блоков требуемые операнды.

Каждый блок GPSS имеет входы и выходы, с помощью которых осуществляется их связь в модели. Существуют два особых блока: GENERATE, имеющий только выход, и TERMINATE, имеющий только вход. Через блок GENERATE транзакты вводятся в модель. Блок TERMINATE удаляет транзакты из модели. Любую модель на языке GPSS можно представить в виде совокупности блоков (рис. 2).

Ниже дано описание основных функциональных объектов GPSS.

Транзакты. Функционирование объекта отображается в модели в виде перемещения транзактов от блока

GENERATE в блок TERMINATE через промежуточные блоки. Транзакты, или сообщения, являются абстрактными подвижными элементами, которые могут моделировать различные объекты реального мира: сообщения, программы, транспортные средства, людей и т.п. Перемещаясь между блоками модели, транзакты вызывают (и испытывают) различные действия. Возможны их задержки в некоторых точках модели, изменения маршрутов и направлений движения, расщепление транзактов на несколько копий и т.п. С каждым транзактом связан упорядоченный набор данных. Он включает номер транзакта, номер блока, в котором в |данный момент находится транзакт, номер следующего блока, время перехода в следующий блок, приоритет, характеризующий очередность обработки транзактов в определенных случаях, а также набор параметров, с помощью которых каждому транзакту можно присвоить числовые значения, выражающие желаемые свой-ва или характеристики моделируемых объектов: вес, скорость, объем, цвет, время обработки и т.п.

Все объекты GPSS имеют числовые характеристики, называемые стандартными числовыми атрибутами (СЧА).

Транзакты имеют четыре СЧА: 

Р$j    — параметр с номером j;

М$i,-   — время прохождения транзактом участка модели; 

МР$j — промежуточное время, записываемое в параметре Рj

Х$j   — номер транзакта.

В GPSS/PC существует ряд блоков, с помощью которых можно изменить значение параметров транзактов. Блок ASSIGN модифицирует значение параметра транзакта входящего в этот блок. Блок INDEX изменяет значение   параметра.   Блок  INCREMENT  увеличивает значение параметра, блок DECREMENT уменьшает величину параметра.

Блок MARK записывает в указанный им параметр текущее значение таймера абсолютного времени или, если параметр не указан, заменяет значение отметки времени текущее значение таймера.


С помощью блока USING осуществляется доступ текущего транзакта к параметрам другого транзакта модели. Блок LOCATE определяет и записывает в параметр текущего транзакта номер блока, в который должен войти определенный транзакт. Пересылка транзакта в требуемую точку модели осуществляется блоком TRANSFER. Блок TEST, проверяя выполнение определенного условия, может также направлять транзакты в заданную точку модели, если условие не выполняется. В этом его действия аналогичны блоку GATE. Для организации в модели циклов используют блок LOOP, с помощью которого можно предусмотреть многократное прохождение транзактом заданной цепочки блоков.

Изменение приоритета транзакта осуществляет блок PRIORITY. Блок BUFFER возобновляет просмотр списка текущих событий и используется, как правило, в качестве режима блока PRIORITY. С помощью блоков TRACE и UNTRACE осуществляют трассировку движения транзактов в модели. При этом по каждому транзакту выводятся данные следующего вида:

ТРАНЗ 1 ИЗ 2 В 3 ВРЕМЯ 54 TERMINATIONS TO GO 1,

которые означают: транзакт номер 1 выходит из блока 2 в блок 3 в момент времени 54 единицы; значение счетчика завершений равно 1.

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

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


список прерываний помещаются транзакты, обслуживание которых прервано блоком PREEMPT. После снятия прерываний в блоке RETURN транзакты вновь возвращаются в список будущих событий. В список синхронизации помещаются транзакты, ожидающие объединения с другими транзактами в блоках GATHER и ASSEMBLE или находящиеся в блоках MATCH. После выполнения условий синхронизации транзакты возвращаются в список текущих событий. Кроме рассмотренных списков, обработка которых происходит без участия программиста, в GPSS/PC существуют списки пользователя, управление которыми осуществляется с помощью блоков LINK и UNLINK. Списки пользователя имеют стандартные числовые атрибуты, к которым можно обращаться внутри модели:

СН$j — текущее число транзактов в списке j;

СА$j — среднее число транзактов в списке j;

CMSj— максимальное число транзактов в списке j;

СС$j— общее число входов транзактов в списке j;

СТ$j — среднее время пребывания транзакта в списке j.

Процесс движения транзактов в модели сопровождается просмотром содержимого списков, внесением в них изменений, а также перемещением транзактов из одного списка в другой. Транзакты, находящиеся в списке текущих событий, расположены в порядке убывания приоритетов. Когда транзакт вводится в список текущих событий, он становится последним среди транзактов, .имеющих тот же приоритет. Процедура просмотра спи->ска текущих событий выполняет три основных действия.

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

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


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

Устройства. Устройства моделируют объекты, в которых может происходить обработка транзактов. Как правило, она связана с затратами времени. Особенность устройств состоит в том, что каждое из них в данный момент времени может быть занято лишь одним транзактом. В GPSS имеется возможность моделировать прерывания устройств. Существуют средства логической проверки состояния устройств. Каждое из действий с устройством отображается в модели определенным блоком. Захват и освобождение устройства моделируются соответственно блоками SEIZE и RELEASE. Для проверки состояния устройств используют GATE. Прерывание моделирует блок PREEMPT, снятие прерывания—блок RETURN. С устройствами связаны следующие СЧА:

F$j   — состояние устройства с номером j:

О — если устройство свободно,

     1 — если устройство занято; 

FR$j — коэффициент использования устройства j

FC$j — число входов в устройство j; 

FT$j — среднее время использования устройства j одним транзактом.

Устройства имеют также стандартные логические атрибуты (СЛА), каждый из которых может принимать одно из двух значений: ИСТИНА или ЛОЖЬ.

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


Память. Память служит для моделирования объектов, обладающих определенной емкостью. Память моделируется блоками ENTER и LEAVE. Входящий в блок ENTER транзакт занимает определенную часть памяти. При входе транзакта в блок LEAVE память освобождается. Емкость памяти задают с помощью оператора STORAGE, который не является блоком GPSS и относится к числу служебных карт. Память имеет следующие стандартные числовые атрибуты:

S$j    — емкость памяти j

R$j   — свободный объем памяти j

SR$j — коэффициент использования памяти j

SM$j — максимальное заполнение памяти j

SA$j — среднее заполнение памяти j

SC$j— число входов в память j

ST$j — среднее время пребывания транзакта в памяти у.

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

SE$j — память у пуста; 

NE$j — память у не пуста; 

SF$j — память у заполнена; 

SNF$j — память у не заполнена.

Проверка состояния памяти осуществляется блоком gate.

Логические ключи. Для представления в модели коммутируемых  объектов  с двумя  состояниями   (ВКЛЮЧЕНО — ВЫКЛЮЧЕНО) используют логические .ключи, моделируемые блоками LOGIC и GATE. При входе транзакта в блок LOGIC происходит срабатывание соответствующего ключа. Ключ может быть включен (S), выючен (R) или переключен (I). Ключи не имеют СЧА. Их состояние определяется стандартными логическими атриибутами:

LS$j — ключ j включен;


LR$j — ключ j выключен.

Проверка состояния ключа осуществляется блоком GATE.

Очереди. Транзакты в процессе движения могут задерживаться перед блоками, вход в которые в данных условиях невозможен. При поступлении транзактов на вход задерживающих блоков образуются очереди. Для сбора статистики об очередях в местах задержки ставят блоки QUEUE. Эти блоки являются средством регистрации очереди. При входе транзакта в блок QUEUE текущая длина очереди получает приращение. Уход из очереди отображается блоком DEPART.

Очереди имеют следующие стандартные числовые атрибуты:

Q$j    — текущая длина очереди j;

QM$j — максимальная длина очереди j;

QA$j — средняя длина очереди j;

QC$j — число входов в очередь У;

QZ$j — число входов в очередь с нулевым временем пребывания (транзакт прошел через блок QUEUE, не задерживаясь в очереди);

QT$j  — среднее время пребывания в очереди j, включая нулевые входы;

QX$j — среднее время пребывания в очереди j без нулевых входов.

Таблицы. Для сбора статистических данных и их представления используют таблицы. Занесение информации в таблицу осуществляется блоком TABULATE в момент входа очередного транзакта в этот блок. Описание структуры таблицы и типа заносимых данных (СЧА) осуществляется картой TABLE.

Стандартные числовые атрибуты таблиц:

ТВ$j   — среднее значение фиксируемой в таблице j переменной;

ТС$j   — число входов в таблицу./;

TD$j   — стандартное среднеквадратическое отклонение табулируемой переменной.


Ячейки. Для записи в процессе моделирования текущих значений СЧА используют ячейки. Занесение информации в ячейку осуществляет блок SAVEVALUE при входе транзакта в этот блок требуемое значение СЧА фиксируется в ячейке, номер которой определяется  операндом блока SAVEVALUE. Изменение содержимого ячеек может осуществляться  блоками  SDECREMENT  (вычитание) и SINCREMENT (суммирование).

Функции и переменные. Функции служат для отображения  зависимостей  между двумя  СЧА.   В  GPSS/PC имеются два типа функций: непрерывные (С) и дискретные (D). 


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

X1,Y1,X2,Y2,X3,Y3,X4,Y4

где X — аргумент, Y - значение функции.

Функцию описывают картой FUNCTION. За ней помещают одну или несколько карт, содержащих координатные точки. Карта описания функции задает ее тип, количество пар точек (Xi, Yi,) и СЧА, используемый в качестве аргумента.

Формат этой карты имеет следующий вид:

НОМЕР FUNCTION А, В,

где НОМЕР — номер функции, задаваемый программистом;
А                — аргумент  (любой СЧА);
В             — тип функции.

Тип функции указывают: Сn — для непрерывной и Вn — для дискретной функции, где п — число пар точек (Xi Yi).

Форматы операторов GPSS/PC. Операторы GPSS/RC имеют следующий формат:

Метка _ Операция _ Операнды _ ; Комментарии.

Знак _ указывает пробел, знак ; объявляет начало поля комментариев. Метка, если она имеется, должна начинаться с первой колонки и содержать не более пяти алфавитно-цифровых символов, начинающихся с буквы. Звездочка (*) в первой колонке означает строку комментариев.

Поле операции содержит название блока или служебного оператора (карты). Это поле может начинаться со второй колонки и должно быть отделено от метки пробелом. Длина поля операции — не менее четырех символов (начальные символы блоков или карт). Поле операндов отделяют от поля операции пробелом. Между операндами должны стоять запятые. Карты описания таблиц, функций, переменных и памятей должны иметь в поле метки числа от 1 до 32 767 или предварительно определенный символ.