TimeEksProstoy:=TIME;
comment Работа экскаватора;
comment Выбираем из очереди первую машину;
Work: FOR M:-HeadCar.First WHILE M=/=NONE DO
Begin
comment Удаляем машину из очереди;
M.out;
comment Загружаем машину;
HOLD(M.GrCar*PrEks);
comment Отправляем загруженную машину;
ACTIVATE M;
End;
comment Запоминаем время начала простоя экскаватора;
TimeEksStart:=Time;
comment Экскаватор простаивает;
PASSIVATE;
comment Приехала машина. Конец простоя экскаватора;
TimeEksProstoy:=TimeEksProstoy+(Time-TimeEksStart);
GOTO Work;
End;
Объект «генератор машин»
Правила поведения объекта «генератор машин»:
1. До времени окончания моделирования создавать объекты «машина» с соответствующими параметрами через случайные промежутки времени.
Описание класса «генератор машин»
Process CLASS Generator;
comment Generator - имя класса;
Begin
comment Описание переменных класса "генератор машин";
comment TCarIn - время подъезда машины к экскаватору;
comment TCarOut - время отъезда машины от экскаватора;
Real TCarIn, TCarOut;
comment GCar -грузоподъемность машины;
comment ColCar -количество созданных машин;
Integer GCar, ColCar;
comment описание ссылочной переменной на машину;
ref(Car) Mnew;
comment Сначала количество машин равно нулю;
ColCar:=0;
WHILE (TIME<=Tmod)
DO
Begin
comment Получение случайных величин, распределенных по равномерному закону, для времени подъезда и для времени отъезда машины;
TCarIn:=UNIFORM(A_TCarIn,B_TCarIn,U_TCarIn);
TCarOut:=UNIFORM(A_TCarOut,B_TCarOut,U_TCarOut);
comment Получение случайной величины, распределенной по равномерному закону для целых чисел, для грузоподъемности машины;
GCar:=RANDINT(A_GCar,B_GCar,U_GCar);
comment Создание новой машины;
Mnew:- NEW Car(TCarIn,GCar,TCarOut);
comment Машина поехала;
ColCar:=ColCar+1;
ACTIVATE Mnew;
comment Через случайное время появится новая машина;
HOLD(UNIFORM(A_Mnew,B_Mnew,U_Mnew));
End;
End;
Текст программы
Begin
comment Описание глобальных переменных;
comment Границы случайного равномерного распределения времени подъезда машин к экскаватору;
real A_TCarIn, B_TCarIn;
comment Границы случайного равномерного распределения времени отъезда машин от экскаватора;
real A_TCarOut, B_TCarOut;
comment Границы случайного равномерного целого распределения
грузоподъемности;
integer A_GCar, B_GCar;
comment Границы случайного равномерного распределения времени появления машин в системе;
real A_Mnew,B_Mnew;
comment Базовые числа для получения распределения;
integer U_TCarIn, U_TCarOut, U_GCar, U_Mnew;
comment Время моделирования;
real Tmod;
comment Производительность экскаватора;
integer Proiz_Eks;
comment Задание начальных значений;
A_TCarIn:=20.0;
B_TCarIn:=30.0;
A_TCarOut:=20.0;
B_TCarOut:=30.0;
A_GCar:=3;
B_GCar:=5;
A_Mnew :=10.0;
B_Mnew :=20.0;
U_TCarIn:=3;
U_TCarOut:=7;
U_GCar:=13;
U_Mnew :=17;
Proiz_Eks:=2;
Tmod :=480.0;
comment Блок моделирования;
SIMULATION
Begin
comment Описание переменных блока моделирования;
comment Эскаватор;
Ref (Ekskavator) Eks;
comment Генератор;
Ref (Generator) Gen;
comment Очередь машин к экскаватору;
Ref (Head) HeadCar;
comment Общее количество груза;
Integer GrAll;
comment Общее время пребывания машин в системе;
Real TimeCarAll;
comment Описание классов;
comment Класс "машина";
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 Запоминание времени входа в систему;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.