Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Чтоесть / Текстовый документ
.txt 3. Журнальный киоск.
* Модель журнального киоска
; Покупатели приходят по 20 человек в час, пуассоновский поток.
; Каждый покупатель желает приобрести от 1 до 4 журналов.
; 1 журнал покупают 50% покупателей
; 2 журнала покупают 30% покупателей
; 3 журнала покупают 15% покупателей
; 4 журнала покупают 5% покупателей
; На 1 журнал продавец затрачивает в среднем 2 минуты (экспоненциальное распределение).
;
; Найти оптимальное кол-во продавцов, которые справятся с нагрузкой
kiosker STORAGE 1 ; Многоканальное устройство - продавцы
kiosk FUNCTION RN1,D5
0,1/.5,1/.8,2/.95,3/1,4
GENERATE (Poisson(1,3)) ; 20 человек в час, т.е 60/20 = 3 - интервал(каждые 3 мин.)
ASSIGN 1,fn$kiosk ; запишем параметы в параметр p1
ASSIGN 2,p1 ; запишем то же самое число в новый параметр
QUEUE och ; вход в регистратор очерди
ENTER kiosker ; занять продавца
DEPART och ; выход из регистратора очереди
cikl ADVANCE (exponential(1,0,2)) ; задержка в очерди
ASSIGN 1-,1 ; вычитаем из первого параметра 1
TEST E p1,0,cikl ; Замыкаем цикл
LEAVE kiosker ; освободить продавца
TERMINATE ; Выход
generate 1000 ; Оператор
terminate 1
procedure det_dep()
begin
qm1_ = 10;
qm2_ = 5;
Nch = 1;
while((Abs(qm1_ - qm2_)>2)&(Nch<100)) do begin
str = polyCatenate("kiosker Storage ",Nch);
DoCommand(str);
DoCommand("Start 1,NP");
qm1_ = QM$och;
str = polyCatenate("Максимальная длина очереди = ",qm1_);
DoCommand("show str");
DoCommand("clear");
DoCommand("Reset");
DoCommand("Start 2,NP");
qm2_ = QM$och;
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();
end;
* Модель журнального киоска
; Покупатели приходят по 20 человек в час, пуассоновский поток.
; Каждый покупатель желает приобрести от 1 до 4 журналов.
; 1 журнал покупают 50% покупателей
; 2 журнала покупают 30% покупателей
; 3 журнала покупают 15% покупателей
; 4 журнала покупают 5% покупателей
; На 1 журнал продавец затрачивает в среднем 2 минуты (экспоненциальное распределение).
;
; Найти оптимальное кол-во продавцов, которые справятся с нагрузкой
kiosker STORAGE 1 ; Многоканальное устройство - продавцы
kiosk FUNCTION RN1,D5
0,1/.5,1/.8,2/.95,3/1,4
GENERATE (Poisson(1,3)) ; 20 человек в час, т.е 60/20 = 3 - интервал(каждые 3 мин.)
ASSIGN 1,fn$kiosk ; запишем параметы в параметр p1
ASSIGN 2,p1 ; запишем то же самое число в новый параметр
QUEUE och ; вход в регистратор очерди
ENTER kiosker ; занять продавца
DEPART och ; выход из регистратора очереди
cikl ADVANCE (exponential(1,0,2)) ; задержка в очерди
ASSIGN 1-,1 ; вычитаем из первого параметра 1
TEST E p1,0,cikl ; Замыкаем цикл
LEAVE kiosker ; освободить продавца
TERMINATE ; Выход
generate 1000 ; Оператор
terminate 1
procedure det_dep()
begin
qm1_ = 10;
qm2_ = 5;
Nch = 1;
while((Abs(qm1_ - qm2_)>2)&(Nch<100)) do begin
str = polyCatenate("kiosker Storage ",Nch);
DoCommand(str);
DoCommand("Start 1,NP");
qm1_ = QM$och;
str = polyCatenate("Максимальная длина очереди = ",qm1_);
DoCommand("show str");
DoCommand("clear");
DoCommand("Reset");
DoCommand("Start 2,NP");
qm2_ = QM$och;
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();
end;
Соседние файлы в папке Чтоесть