9. СИСТЕМЫ ИМИТАЦИОННОГО МОДЕЛИРОВАНИЯ
9.1. GPSS
Система GPSS предназначена для моделирования дискретных объектов процессно-ориентированным способом на языке GPSS. Модель представляет собой сеть, составленную из блоков, выполняющих определенные функции. Сеть дополняется программной частью. Таймер GPSS регистрирует только целочисленные значения времени.
Пример. Интервалы прихода заявок на пункт приема распределены равномерно в диапазоне 18±6 единиц времени. Время обработки заявки распределено также равномерно в диапазоне 16±4 единицы. Заявки приходят, обрабатываются и пересылаются на выполнение. Необходимо собрать статистические данные об очереди заявок за 8 часов. Сетевая модель имеет вид рис.9.1.
Здесь для первого сегмента:
GENERATE - операция генерации транзактов с интервалом 18±6;
QUEUE - "встать в очередь" JOEQ;
SEIZE - "занять свободный прибор (обработки)" JOE;
DEPART - "покинуть очередь" JOEQ;
ADVANCE - "задержать" на 16±4;
RELEASE - "освободить прибор" JOE;
TERMINATE - "завершить" (покинуть).
2-й сегмент моделирует окончание имитации. При выходе из TERMINATE счетчик завершений уменьшает показания на 1. Если требуется один прогон,
то вначале счетчик должен стоять на 1. Это делает START в программном модуле:
SIMULATE
* MODEL SEGMENT 1
GENERATE 18,6
QUEUE JOEQ
SEIZE JOE
DEPART JOEQ
ADVANCE 16,4
RELEASE JOE
TERMINATE
* MODEL SEGMENT 2
GENERATE 480
TERMINATE 1
START 1
END
Здесь * - комментарии. 1 в START - значение счетчика, которое будет уменьшаться предыдущим оператором TERMINATE.
9.2. СИМПАС
СИМПАС – это система имитационного моделирования для дискретных объектов, написанная на паскале. Вместо календаря вводится понятие списка событий, операции с которыми осуществляет специальная процедура. Широко используются термины процессно-ориентированной модели: прибор, транзакт, QUEUE, блокировка, накопитель и др. без визуального представления (в виде подпрограмм). СИМПАС содержит следующие основные понятия и определения.
Транзакт - абстрактный динамический объект, характеризующийся рядом свойств, задаваемых параметрами. В ходе моделирования транзакты могут создаваться (процедура Create), перемещаться и уничтожаться (процедура Destroy).
Ансамбль - связанная по групповому признаку совокупногсть транзактов.
Событие - последовательность действий с изменением состояния модели в результате перемещения транзакта.
Статический объект - некоторый набор системных переменных, постоянно размещенных в оперативной памяти.
Динамический объект - создается по мере необходимости (например, гистограмма).
Очередь - динамический объект, предназначенный для регистрации транзактов на отдельных участках модели.
Прибор - динамический объект, моделирующий обслуживающий компонент для транзактов.
Накопитель - динамический объект, где транзакт может занимать место для дальнейшего распределения.
Список пользователя - список транзактов, создаваемый пользователем для организации нестандартных процедур.
Сигналы - элементы взаимодействия транзактов, находящихся в различных точках модели.
Системная среда - совокупность констант, типов и переменных СИМПАС и списки. В списки могут объединяться транзакты, приборы, очереди, события, графики и т.д.
Структура модели:
Procedure Model;
var
<ссылки на приборы>: pFacility;
<ссылки на очереди>: pQueue;
<ссылки на накопители>: pStorage;
<ссылки на списки транзактов>: pListT;
<ссылки на гистограммы>: pHistgram;
………………………………
begin
InitList(<количество транзактов>);
NewFac(…); …;
NewQueue(…); …;
NewStorage(…); …;
NewUserLT(…); …;
NewHist(…); …;
InitCreate(<номер события>,<время>);…;
while SysTime<…> do
begin
Plan;
case SysEvent of
1:<действия для события 1>;
2:<…>;
……………
end
end;
PrintAll;
end;
Здесь:
InitList - процедура создания системных списков, размещения транзактов в буфер, присвоения начальных значений системным переменным;
NewFac - создание приборов;
NewQueue - процедура очередей;
NewStorage - создание накопителей;
NewUserLT - списки пользователей;
NewHist - гистограммы;
InitCreate - генерация транзактов;
SysTime - системное время;
Plan - подпрограмма имитации;
SysEvent - текущие события;
PrintAll - системный вывод.
Любой транзакт в модели движется от процедуры Create к процедуре Destroy. Продвигается только один транзакт. Транзакт может быть задержан или блокирован. Транзакты могут иметь приоритеты.
9.3. СИМФОР
Система написана на фортране. Предназначена для моделирования дискретных, непрерывных и комбинированных объектов. Модель исследуемого объекта представлена в виде набора системных и пользовательских подпрограмм. Последние имеют такие функции:
USINT - инициализация переменных модели;
STATE - вычисление значения переменных;
SCOND - проверка условий возникновения структурных событий;
EVNTS - поиск алгоритма обработки событий;
SSAVE - сбор статистической информации;
USOUT - нестандартное завершение прогона;
USERR - обработка ошибок;
USFUN - специальная подпрограмма пользователя;
TTRAC - трассировка временных событий;
STRAC - трассировка структурных событий;
TRLOG - оперативная распечатка информации.
Объекты непрерывного моделирования. При непрерывном моделировании симфор работает с тремя типами объектов: структурные переменные (SS), производные (DD), флаги. Симфор автоматически проводит интегрирование NNEQD производных первого порядка, вычисляя значения структурных переменных. Количество интегрируемых переменных MMEQD и структурных переменных MMEQS в модели задается при генерации (формировании) программного пакета, а фактическое число используемых структурных переменных NNEQS и производных NNEQD - при инициализации модели. Интегрирование DD(I) и вычисление SS(I) производится по методу Рунге-Кутта четвертого порядка.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.