Автор работы: Пользователь скрыл имя, 07 Декабря 2011 в 13:05, контрольная работа
Определить следующие величины:
- количество прибывших автомобилей, количество клиентов, получивших отказ;
- вероятность того, что прибывающий клиент не сможет воспользоваться услугами банковского автомата;
- вероятность того, что прибывающий клиент обслуживается без ожидания;
- среднее время ожидания клиента в очереди.
Смоделировать работу банкомата в течение суток
Задание:
Банк имеет один пункт, где клиенты обслуживаются
банковским автоматом не выходя из автомобиля.
Автомобили пребывают в среднем с интенсивностью 12
автомобилей в час. Среднее время, необходимое
для обслуживания клиента банкоматом,
равно 6 мин. Максимальная вместимость
полосы обслуживания банкоматом составляет 10
автомобилей. При заполненной полосе прибывающие
клиенты должны искать обслуживание в
другом банке. Определить
следующие величины:
- количество прибывших автомобилей, количество
клиентов, получивших отказ;
- вероятность того, что прибывающий клиент
не сможет воспользоваться услугами банковского
автомата;
- вероятность того, что прибывающий клиент
обслуживается без ожидания;
- среднее время ожидания клиента в очереди.
Смоделировать работу банкомата в течение
суток
Исходный код программы
для Delphi 7:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, StdCtrls,Math;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Label5: TLabel;
Edit4: TEdit;
Label6: TLabel;
Edit5: TEdit;
Label7: TLabel;
Label8: TLabel;
Edit6: TEdit;
Label9: TLabel;
Edit7: TEdit;
Label10: TLabel;
Edit8: TEdit;
Label11: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
K,p,i,io,n,m:integer;ro,Potk,
landa,Toc,T,Tk,Mi,R,Trazg:
Tin: array [0..300] of real;
Tout: array [0..300] of real;
begin
Landa:=Strtofloat(edit1.Text);
Trazg:=Strtofloat(Edit2.Text)/
Mi:=1/Trazg;
Tk:=12;//часов в сутки
P:=Strtoint(Edit3.Text);//
ro:= Landa/ Mi;
T := 0;
Tzvezda := 0;
K := 0;
n := 0; // обслужено
m := 0; // отказано
Pbo:=0;
i:=0;
io:=0;
Randomize;
R:=random;
tz := (1/Landa)*Ln(R);
bTz:=T+tz;
while T < Tk do
begin
if Tzvezda > bTz then begin
T := bTz;
K := K+1;
if p+1 >= k then
begin
n := n+1;
end
else
begin
m := m+1;
k := k-1;
end;
if K = 1 then
begin
R := random;
tobsl := -(1/Mi)*ln(R);
Tzvezda := bTz+tobsl;
Pbo:=Pbo+1;
end
else
begin
Tin[i] := T;
i := i+1;
end;
if K > 0 then begin
R:=random;
tobsl := -(1/Mi)*ln(R);
Tzvezda := bTz+tobsl;
end;
R:=Random;
tz := -(1/Landa)*ln(R);
bTz := bTz+tz; end
else begin
T := Tzvezda;
if K > 0 then begin
K := K-1;
end;
if K = 0 then begin
Tzvezda := Tk;
end else
begin
Tout[io]:=T;
io:=io+1;
R:=Random;
tobsl := -(1/Mi)*Ln(R);
Tzvezda := T+Tobsl;
end; end;end;
//вычисление характеристик
n:=n-K;
Toc:=0;
for i:= 0 to io-1 do begin
Toc:=Toc+Tout[i]-Tin[i];
end;
Toc:=Toc/io;// клиентов прибыло
Edit4.Text:=inttostr(n+m);//
Edit5.Text:=inttostr(m);// n-m количество обслуженных
машин
//вероятность отказа
Potk:=m/(n+m);
Edit6.Text:=floattostr(Potk);
// вероятность что будет обслужена без
очереди
Pbo := Pbo/(Pbo+io);
//Pbo:=1-Potk;
Edit7.Text:=floattostr(Pbo);
// время ожидания
Edit8.Text:=floattostr(Toc);
end;
end.