Описание блока simulationbegin … end определяют декларации классов для процессов, которые будут функционировать в модели, задают переменные, массивы, процедуры, являющиеся общими для всех процессов. Операторы тела блока с префиксом simulation обычно используются для инициализации работы модели и выдачи результатов моделирования.
Работа блока с префиксом simulation начинается с операторов, заданных в теле класса simulation, которые выполняют стандартные действия, необходимые при инициализации работы любой модели. В частности, модельное время обнуляется.
Для разработчика модели инициализация состоит в задании начальных значений общим переменным и массивам, генерации процессов и объектов, образующих исходное состояние моделируемой системы, запуск этих процессов в работу и указании условий окончания работы модели.
В карьере работает один экскаватор, который нагружает машины различной грузоподъемности. Машины подъезжают в карьер через случайные промежутки времени, равномерно распределенные в интервале от 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 Сначала простой равен времени начала работы экскаватора;
TimeEksProstoy:=TIME;
comment Работа экскаватора;
comment Выбираем из очереди первую машину;
Work: FOR M:-HeadCar.First WHILE M=/=NONE DO
Begin
comment Удаляем машину из очереди;
M.out;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.