Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
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 Запоминание времени входа в систему;
TimeCarSys:=TIME;
comment Задержка на время подъезда к экскаватору;
HOLD(TimeCarIn);
comment Машина встает в очередь и активизирует экскаватор;
INTO(HeadCar);
ACTIVATE Eks;
comment Машина ожидает загрузки в очереди;
PASSIVATE;
comment Загруженная машина уезжает из системы;
HOLD(TimeCarOut);
GrAll:=GrAll+GrCar;
TimeCarAll:=TimeCarAll+(TIME-TimeCarSys);
end;
comment Класс "экскаватор";
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;
comment Класс "генератор машин";
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;
comment Создание и активизация объектов;
Gen:-NEW Generator;
HeadCar:-NEW Head;
Eks:-NEW Ekskavator(Proiz_Eks);
ACTIVATE Gen;
comment Начало моделирования;
HOLD(Tmod);
comment Вывод результатов;
Outtext("Zagryzra = ");
OutFix((Tmod-Eks.TimeEksProstoy)/Tmod,2,4);
Outimage;
Outtext("Gryz za cmehy = ");
OutInt(GrAll,6);
Outimage;
Outtext(" Sredhee time = ");
OutFix(TimeCarAll/Gen.ColCar,2,6);
Outimage;
inint;
End;
End;
Результаты работы программы:
Загрузка экскаватора = 0.57
Объем груза за смену = 122
Среднее время пребывание самосвалов в карьере = 49.88
Дата публикования: 2015-01-23; Прочитано: 159 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!