Постановка задачи
В стоматологической поликлинике «32 зуба» в г.Кемерово работает 4 врача. Рабочий день с 9 до 18 часов (8 часов). В среднем в течении дня обслуживается 65 клиентов (в среднем в течении часа 65/8=9,5). Среднее время обслуживания 1 клиента 30 минут (1/2 часа). Стоимость 1 часа работы стоматолога составляет 1200 рублей. Стоимость потерь, связанных с простаиванием стоматолога без работы составляет 2500 рублей в час. Стоимость потерь, связанных с простаиванием клиента в очереди составляет 20 рублей в час.
Необходимо проанализировать работу стоматологической поликлиники и сделать выводы по эффективности работы.
Математическая постановка задачи.
Рассмотрим систему, состоящую из 4 обслуживающих приборов, работающих параллельно и независимо друг от друга. Предположим, что на систему поступает поток требований со средней интенсивностью 65/8 заказов в час (65 заказов / на 8 часов работы ). Время обслуживания каждого требования случайно. Средняя интенсивность обслуживания 30 минут ( 1/2 часа). Если требование (клиент), поступившее в систему, застает все приборы занятыми, то оно встает в очередь и ждет до тех пор, пока прибор не освободится. В каждый момент времени любой прибор может обслужить не более одного требования. Требуется проанализировать работу системы и рассмотреть способы увеличения прибыли.
Обозначим Pk(t) – вероятность того, что в момент времени t в системе находится k-требований. Будем считать, что в начальный момент t=0 в системе не было требований.
Начальные условия задаются следующим образом:
Pо(0)=1 , k=1, 2, 3… Pk (0)=0
Вероятность того, что в системе отсутствуют требования (все свободны, заказов нет):
Вероятность того, что в системе k-приборов занято обслуживанием:
Вероятность того, что все приборы заняты:
Вероятность того, что в очереди находятся s требований:
Среднее время, в течение которого требование ждет начала обслуживания:
Вероятность того, что время ожидания в очереди больше заданного времени Т=Т0:
Средняя длина очереди – А:
Среднее число требований, находящихся в системе – В:
Среднее число свободных приборов – No:
N3-Среднее число приборов, занятых обслуживанием
Коэффициент простоя приборов – Kn:
Коэффициент загрузки приборов:
Экономическая эффективность (Суммарные потери за отчетный период):
q1– стоимость потерь, связанных с простаиванием требования в очереди 20 руб
q2– стоимость единицы времени простоя прибора в системе 2500 руб
q3– стоимость единицы времени эксплуатации прибора 1200 руб
Программа.
Program RGR (imput, YY);
uses CRT;
type
list= array [1..1000] of real;
var
Q,Qdn, P0, PP, ALF, BET,Be, Pt, SPk, TT,A,B,N0,Kn,Nz,Kz,GG, St1, St2, St3 : real;
TT1,m,n,nm1,k,i,L1,Vr : integer;
Pk: list;
YY: Text;
{вычисление n!}
function FAC (m: integer): integer;
var
i,nn : integer;
begin
IF m=0 then
FAC:=1
else
begin
nn:=1;
for i:=1 to m do
begin
nn:=nn*i;
end;
FAC:=nn;
end;
end;
function Si (m,k: integer): Longint;
var
i,nn : longint;
begin
nn:=1;
for i:=1 to k do
begin
nn:=nn*m;
end;
Si:=nn;
end;
function S (m: real;k: integer): real;
var
nn : real;
i : integer;
begin
nn:=1.0;
for i:=1 to k do
begin
nn:=nn*m;
end;
S:=nn;
end;
begin ClrScr;
assign(YY,'ст1.txt');
REWRITE(YY);
write ('введите количество обслуживающих устройств:');
readln (n);
writeln(YY,'n=',n:4);
write('Введите среднее число требований в день=');
readln(ALF);
write('Продолжительность рабочего дня=');
readln(Vr);
ALF:=ALF/Vr;
writeln (YY,'среднее число требований в час=',ALF:6:2);
write ('введите время обслуживания 1 требования (в минутах):');
readln (BET);
BET:=BET/60;
writeln(YY,'Время обслуживания 1 требования в час=',BET:6:2);
write ('введите стоимость часа работы одного прибора :');
readln (St3);
write ('введите стоимость часа простаивания одного прибора :');
readln (St2);
write ('введите стоимость часа простаивания одного требования (заказа) в очереди:');
readln (St1);
SPk:=0.0;
nm1:=n-1;
BET:=1/BET;
Q:=ALF/BET;
P0:=1.0;
for i:=1 to nm1 do
begin
P0:=P0+S(Q,i)/FAC(i);
end;
P0:=P0+S(Q,n)/FAC(nm1)/(n-Q);
P0:=1.0/P0;
writeln(YY,'вероятность того, что в системе отсутствуют требования: ', P0:9:7);
writeln;
SPk:=SPk+P0;
for i:=1 to n do
begin
Pk[i]:=P0*S(Q,i)/FAC(i);
SPk:=SPk+Pk[i];
writeln (YY,'вероятность того, что в системе работают ',i:3,'прибора : ', Pk[i]:9:7);
end;
writeln;
PP:=P0*S(Q,n)/FAC(nm1)/(n-Q);
writeln (YY,'вероятность того, что все приборы заняты: ', PP:9:7);
writeln;
Qdn:=Q/n;
I:=n;
while SPk < 0.9999 do
begin
i:=i+1;
Pk[i]:=P0*S(Qdn,i)*Si(n,n)/FAC(n);
SPk:=SPk+Pk[i];
writeln (YY,'вероятность того, что в очереди ',(i-n):3,'требования : ', Pk[i]:9:7);
writeln (YY,'Сумма Pk: ',SPk:9:7);
end;
writeln;
TT:=PP/(n*BET-ALF);
TT1:=ROUND(TT*60);
writeln (YY,'среднее время ожидания в очереди( в час): ', TT:9:3);
writeln(YY,'среднее время ожидания в очереди (в минут)= ',TT1:6);
writeln;
Pt:=PP/exp((n*BET-ALF)*TT);
writeln (YY,'вероятность того, что время ожидания в очереди превышено: ', Pt:9:7);
writeln;
A:=Qdn*Pk[n]/(SQR(1-Qdn));
writeln (YY,'средняя длина очереди: ', A:9:3);
writeln;
B:=0.0;
for i:=1 to nm1 do
begin
B:=B+S(Q,i)/FAC(i-1);
end;
B:=B*P0;
B:=B+n*Pk[n]/(1.0-Qdn);
B:=B+A;
writeln (YY,'среднее число требований находящихся в системе: ', B:9:3);
writeln;
N0:=n;
for i:=1 to nm1 do
begin
N0:=N0+S(Q,i)*(n-i)/FAC(i);
end;
N0:=N0*P0;
writeln (YY,'среднее число свободных приборов: ', N0:9:3);
writeln;
Kn:=N0/n;
writeln (YY,'Коэффициент простоя приборов: ', Kn:9:3);
writeln;
Nz:=n-N0;
writeln (YY,'среднее число занятых приборов: ', Nz:9:3);
writeln;
Kz:=Nz/n;
writeln (YY,'Коэффициент загрузки приборов: ', Kz:9:3);
writeln;
GG:=30*Vr*(A*St1+N0*St2+Nz*St3);
writeln (YY,'Потери предприятия в рублях: ', GG:12:3);
writeln;
CLOSE(YY)
end.