4. Мебельная фабрика.
; мебельная фабрика обрабатывает 4 вида древисины, время обработки хвойных 30-45, мягких 45-50
;твердых 50-65; экз 65-90. Компоненты поступают с пуассновоским законов -12 минут
obr FUNCTION RN1,c5
0,30/0.25,45/0.5,50/0.75,65/1,90
zavod STORAGE 1
GENERATE (POISSON(1,12))
QUEUE zav1
ENTER zavod
DEPART zav1
ADVANCE FN$obr
LEAVE zavod
TERMINATE 1
procedure det_dep()
begin
qm1_ = 10;
qm2_ = 5;
Nch = 1;
while((Abs(qm1_ - qm2_)>2)&(Nch<100)) do begin
str = polyCatenate("zavod STORAGE ",Nch);
DoCommand(str);
DoCommand("Start 1,NP");
qm1_ = QM$zav1;
str = polyCatenate("Максимальная длина очереди = ",qm1_);
DoCommand("show str");
DoCommand("clear");
DoCommand("Reset");
qm1_ = QM$zav1;
DoCommand("Start 2,NP");
qm2_ = QM$zav1;
str = polyCatenate("Максимальная длина очереди = ",qm2_);
DoCommand("show str");
DoCommand("clear");
DoCommand("Reset");
Nch = Nch + 1;
end;
Nch = Nch - 1;
str = polyCatenate("Оптимальное количество станков = ",Nch);
DoCommand("show str");
end;
experiment sem()
begin
det_dep();
5. Жизненный цикл пк. Эксперимент.
places STORAGE 100
services STORAGE 10
TRANSFER , circle
GENERATE ,,,110 ;Звонок абонента
circle QUEUE places1 ; Вход в очередь
ENTER places ; Попытка занять рабочего места
DEPART places1 ; Выход из очереди
ADVANCE 2000,410 ; Процесс обслуживания
LEAVE places ; Освободить рабочее место
QUEUE services1 ; Вход в очередь
ENTER services ; Попытка занять ремонт
DEPART services1 ; Выход из очереди
ADVANCE 200,28 ; Процесс обслуживания
LEAVE services ; Освободить ремонтное место
TERMINATE 1
***
GENERATE 10000 ; Время моделирования
TERMINATE 1
procedure det_dep()
begin
qm1_ = 10;
qm1_a = 10;
qm2_ = 5;
qm2_a = 5;
Nch = 100;
Nch_a = 10;
while((Abs(qm1_ - qm2_)>2)&(Nch<200)&(Abs(qm1_a - qm2_a)>2)&(Nch_a<200)) do begin
str = polyCatenate("places STORAGE ",Nch);
DoCommand(str);
str = polyCatenate("services STORAGE ",Nch_a);
DoCommand(str);
DoCommand("Start 1,NP");
qm1_ = QM$places1;
qm1_a=QM$services1 ;
str = polyCatenate("Максимальная длина очереди рабочих мест = ",qm1_);
DoCommand("show str");
str = polyCatenate("Максимальная длина очереди на ремонт = ",qm1_a);
DoCommand("show str");
DoCommand("clear");
DoCommand("Reset");
qm1_ = QM$rabotaQ;
qm1_a=QM$remontQ ;
DoCommand("Start 2,NP");
qm2_ = QM$places1;
qm2_a = QM$services1;
str = polyCatenate("Максимальная длина очереди рабочих мест = ",qm2_);
DoCommand("show str");
str = polyCatenate("Максимальная длина очереди на ремонт = ",qm2_a);
DoCommand("show str");
DoCommand("clear");
DoCommand("Reset");
if(Abs(qm1_ - qm2_)>2)
then Nch = Nch + 1;
if(Abs(qm1_a - qm2_a)>2)
then Nch_a = Nch_a + 1;
end;
Nch = Nch - 1;
Nch_a = Nch_a - 1;
str = polyCatenate("Оптимальное количество рабочих мест = ",Nch);
DoCommand("show str");
str = polyCatenate("Оптимальное количество ремонтых мест = ",Nch_a);
DoCommand("show str");
end;
experiment sem()
begin
det_dep();
end;