Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Объект «машина»
Правила поведения объекта «машина»:
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;
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;
Дата публикования: 2015-01-23; Прочитано: 163 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!