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
3.2.2. Работы аэропорта
Описание системы
Грузы прибывают для отправки в аэропорт в контейнерах со скоростью 2 контейнера в 1 мин. В грузовом аэропорту нет фиксированного расписания, а самолеты отправляются по мере их полной загрузки. В распоряжении имеются 2 типа самолетов. Есть 3 самолета с грузоподъемностью 80 контейнеров и 2 самолета с грузоподъемностью 140 контейнеров. Время полета каждого самолета туда и обратно распределено нормально с математическим ожиданием 3 ч. и среднеквадратичным отклонением 1 ч., минимумом 2 ч. и максимумом 4 ч. Управляющий аэропортом старается как можно чаще использовать самолеты меньшей грузоподъемности. Самолеты, поднимающие 140 контейнеров, используются только тогда, когда других нет в наличии.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.