Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
rabota_po_tmo_MOYa.doc
Скачиваний:
14
Добавлен:
20.04.2015
Размер:
120.32 Кб
Скачать

Программа

program Kachok;

uses crt;

const nmax=100;

{Функция FAKT вычисляет N!}

function FAKT(n:integer):real;

var i:integer;

fc:real;

begin

if n<=1 then FAKT:=1 else

begin

fc:=1;

{Цикл определения N!}

for i:=2 to n do fc:=fc*i;

FAKT:=fc; end; end;

{Функция POK a в степени x – показательная a>0  a^x=exp(x*ln(a))}

function POK(a,x:real):real;

begin

POK:=exp(x*ln(a)); end;

var key:char;

alfa,betta,VRsr,q1,q2,q3,P0,Pn,Pk,zk,Pz,SUM,PkPLUS1,PnPLUSs,VRog,VRblZ,SRdln,SR4treb,N0,N3,POKUP,Kpr,Kz,Gek:real;

k,n,S,So:integer;

FC:text;

begin

assign(fc,'rezultat.txt');

rewrite(fc);

clrscr;

write('Ввести количество обслуживающих касс ');readln(n);

write('Ввести среднее количество покупателей, поступающих в час ');readln(alfa);

write('Ввести среднее время обслуживания одного покупателя (в минутах) ');readln(VRsr);

betta:=1/(VRsr/60); {переходим в часы}

write('Ввести стоимость потерь, связанных с простаиванием покупателя в очереди q1 ');readln(q1);

write('Ввести стоимость потерь за простой кассы q2 ');readln(q2);

write('Ввести стоимость эксплуатации кассы при обслуживании требований в единицу времени q3 ');readln(q3);

{Вероятность того, что система свободна}

P0:=0;

{Счет суммы}

for k:=0 to n-1 do P0:=P0+POK((alfa/betta),k)/FAKT(k);

{результат Р0}

P0:=1/(P0+POK((alfa/betta),n)/FAKT(n)/(1-alfa/(n*betta)));

writeln(fc,'Вероятность того, что система свободна ',P0:6:5);

{Вероятность того, что k касс занято}

zk:=0;

for k:=1 to n do

begin

Pk:=POK((alfa/betta),k)/FAKT(k)*P0;

writeln(fc,'Вероятность того, что занята ' ,k:3,'касс ',Pk:6:5);

zk:=zk+Pk; end;

{Вероятность того, что все приборы заняты}

Pz:=1-zk;

writeln(fc,'Вероятность того, что все приборы заняты ',Pz:6:5);

{Поиск числа требований в системе из уравнения по заданию, задаем условие для k}

Pk:=P0;

k:=0;

SUM:=0;

repeat

k:=k+1;

if k<n then PkPLUS1:=alfa/((k+1)*betta)*Pk else PkPLUS1:=alfa/(n*betta)*Pk;

SUM:=SUM+PkPLUS1;

Pk:=PkPLUS1;

until(SUM>0.999) or (PkPLUS1<0.00001);

So:=k-n;

{Вероятность того, что в очереди S требований}

Pn:=POK((alfa/betta),n)/FAKT(n)*P0;

for S:=0 to So do

begin

PnPLUSs:=Pn*POK((alfa/(n*betta)),S);

writeln(fc,'P(',S:3,')=',PnPLUSs:6:5); end;

{Среднее время, в течение которого клиент ждет обслуживания}

VRog:=Pz/(n*betta-alfa);

writeln(fc,'Среднее время, в течение которого клиент ждет обслуживания ',VRog:6:2);

{Вероятность того, что время ожидания в очереди больше заданного}

VRblZ:=Pz*exp(-(n*betta-alfa)*VRog);

writeln(fc,'Вероятность того, что время ожидания в очереди больше заданного ',VRblZ:8:7);

{Средняя длина очереди}

SRdln:=Pn*alfa/(n*betta)/sqr(1-(alfa/(n*betta)));

writeln(fc,'Средняя длина очереди ',SRdln:6:5);

{Среднее число требований в системе}

SR4treb:=0;

for k:=1 to n-1 do SR4treb:= SR4treb+POK((alfa/betta),k)/FAKT(k-1);

SR4treb:=SRdln+Pn*n/(1-alfa/(n*betta))+P0*SR4treb;

writeln(fc,'Среднее число покупателей в системе ',SR4treb:6:5);

{Среднее число свободных приборов}

N0:=0;

for k:=0 to n-1 do N0:=N0+(n-k)/FAKT(k)*POK((alfa/betta),k)*P0;

writeln(fc,'Среднее число свободных приборов ',N0:8:5);

{Среднее число приборов, занятых обслуживанием}

N3:=n-N0;

writeln(fc,'Среднее число приборов, занятых обслуживанием ',N3:8:3);

POKUP:=N3;

writeln(fc, 'Среднее число обслуживаемых клиентов ',POKUP:8:3);

{Коэффициент простоя приборов}

Kpr:=N0/n;

writeln(fc,'Коэффициент простоя приборов ',Kpr:3:5);

{Коэффицент загрузки приборов}

Kz:=N3/n;

writeln(fc,'Коэффициент загрузки приборов ',Kz:8:3);

{Суммарные потери за месяц}

Gek:=12*30*(SRdln*q1+N0*q2+N3*q3);

writeln(fc,'Суммарные потери за месяц ',Gek:6:2);

close(FC);

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]