При событийном подходе система моделируется путем идентификации изменений, происходящих в ней в моменты свершения событий. Задача исследователя заключается в описании событий, которые могут изменить состояние системы, и определении логических взаимосвязей между ними. Имитация функционирования системы осуществляется путем выполнения упорядоченной во времени последовательности логически взаимосвязанных событий.
Подход сканирования активностей
При использовании подхода сканирования активностей разработчик описывает действия, в которых принимают участие элементы системы, и задает условия, определяющие начало и окончание этих действий. События, которые начинают или завершают действие, не планируются разработчиком модели, а инициируются по условиям, определенным для данного действия. Условия начала или окончания действия проверяются после очередного продвижения имитационного времени. Если заданные условия удовлетворяются, происходит соответствующее действие. Для того чтобы было выполнено каждое действие в модели, сканирование условий производится для всего множества действий при каждом продвижении имитационного времени.
Процессо-ориентированный подход
Многие имитационные модели содержат последовательности компонентов, которые возникают в них по определенной схеме, например очередь, в которой клиенты ожидают обслуживания. Логика возникновения компонентов по требуемой схеме может быть обобщена и задана в одном операторе. Имитационный язык затем транслирует такие операторы в соответствующую последовательность событий, происходящих с компонентами модели. Имитационные языки, включающие операторы для моделирования процесса прохождения элементов через систему, обычно называются процессо-ориентированными. Эти операторы определяют последовательность событий, которые автоматически выполняются имитационным языком, по мере того как элементы продвигаются через систему.
Процессо-ориентированный подход сочетает в себе черты событийного подхода и подхода сканирования активностей. Он обеспечивает описание прохождения компонентов через процесс,содержащий ресурсы. Простота этого подхода состоит в том, что определяемая операторами логика событий заложена в самом имитационном языке.
3.2. Программное моделирование
3.2.1. Работа карьера
В карьере работает один экскаватор, который нагружает машины различной грузоподъемности. Машины подъезжают в карьер через случайные промежутки времени, равномерно распределенные в интервале от 7 до 12 минут. Время, затрачиваемое машиной на подъезд к экскаватору и отъезд от экскаватора, и грузоподъемность машин также случайные величины, распределенные равномерно в интервалах [20,30] и [3,5], соответственно. Экскаватор тратит на погрузку одной тонны породы 2 минуты. Время прибытия машин в карьер носит случайный характер и распределено равномерно в пределах [10,20].
Необходимо промоделировать данную систему с целью получения загрузки самосвала, объема груза за смену и среднее время пребывание самосвалов в карьере в течение 8 ч.
Объект «машина»
Правила поведения объекта «машина»:
1. Машина подъезжает к экскаватору и встает в очередь на погрузку.
2. Экскаватор загружает машину по очереди.
3. Загруженная машина уезжает от экскаватора и покидает систему.
Описание класса «машина»
Process CLASS Car(TimeCarIn,GrCar,TimeCarout);
comment Car - имя класса;
comment Описание формальных параметров;
comment TimeCarIn,GrCar,TimeCarout - формальные параметры;
comment TimeCarIn - время подъезда к экскаватору;
comment GrCar - грузоподъемность;
comment TimeCarOut - время отъезда от экскаватора;
Real TimeCarIn,TimeCarOut;
Integer GrCar;
Begin
comment Описание переменных класса "машина";
comment TimeCarSys - время входа машины в систему;
real TimeCarSys;
comment Запоминание времени входа в систему;
TimeCarSys:=TIME;
comment Задержка на время подъезда к экскаватору;
HOLD(TimeCarIn);
comment Машина встает в очередь и активизирует экскаватор;
INTO(HeadCar);
ACTIVATE Eks;
comment Машина ожидает загрузки в очереди;
PASSIVATE;
comment Загруженная машина уезжает из системы;
HOLD(TimeCarOut);
GrAll:=GrAll+GrCar;
TimeCarAll:=TimeCarAll+(TIME-TimeCarSys);
end;
Объект «экскаватор»
Правила поведения объекта «экскаватор»:
1. Если в очереди есть машины, экскаватор выбирает первую машину из очереди.
2. Экскаватор загружает машину.
3. Загруженная машина уезжает от экскаватора и покидает систему.
4. Если в очереди нет машин, экскаватор переходит в режим простоя до тех пор, пока не приедет машина.
Описание класса «экскаватор»
Process CLASS Ekskavator(PrEks);
comment Ekskavator - имя класса;
comment Описание формальных параметров;
comment PrEks - производительность экскаватора;
integer PrEks;
Begin
comment Описание переменных класса "экскаватор";
comment TimeEksStart - время начала простоя;
comment TimeEksProstoy - простой экскаватора;
real TimeEksStart,TimeEksProstoy;
comment описание ссылочной переменной на машину;
ref(Car) M;
comment Сначала простой равен времени начала работы экскаватора;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.