Автор работы: Пользователь скрыл имя, 20 Декабря 2012 в 14:37, курсовая работа
Целью данной курсовой работы является построение простейшей статистической модели системы массового обслуживания и написание универсальной программы по её реализации. Для достижения этой цели в работе решены следующие задачи:
изучен алгоритм построения простейшей модели системы массового обслуживания;
изучены основные характеристики простейшей модели системы массового обслуживания
выбран язык программирования, позволяющий реализовать указанную модель;
s1:=2;
//tprost:=znach[1];
pom[1]:=1;
for shag:=1 to strngrd1.RowCount do //íà÷àëî îáùåãî öèêëà ïåðåñ÷¸òà ïî øàãàì
begin
if s1>strngrd1.RowCount then break;
if (pom[shag]=1)then //ïðîâåðêà íà
ïðèíàäëåæíîñòü çíà÷åíèÿ ê
begin
ttek:=znach[shag];
tpost:=ttek+(-(1/l)*ln(R[s1]))
tpost:=(round(tpost*100))/100;
s1:=s1+1; //óâåëè÷åíèå çíà÷åíèå ðàíäîìíîãî ìàññèâà
//öèêë çàíåñåíèÿ â ìàññèâ ÿíà÷åíèé
for a:=1 to strngrd1.RowCount do
if (znach[a]=0)then
begin
znach[a]:=tpost;
pom[a]:=1;
break;
end;
for j:=1 to (a-1) do
begin
for z:=1 to (strngrd1.RowCount-j)do
begin
if (znach[z]>znach[z+1])and(
begin
b:=znach[z];
znach[z]:=znach[z+1];
znach[z+1]:=b;
s2:=pom[z];
pom[z]:=pom[z+1];
pom[z+1]:=s2;
end;
end;
end;
//îêîí÷àíèå öèêëîâ çàíåñåíèÿ â ìàññèâ
if (prost=0) then
begin
if s1<=strngrd1.RowCount then
begin
if (r[s1]<i) then q:=q1 else q:=q2;
ttek:=znach[shag];
tok:=ttek+q;
tprost:=tprost+(znach[shag]-
//öèêë çàíåñåíèÿ â ìàññèâ ÿíà÷åíèé
for a:=1 to strngrd1.RowCount do
if (znach[a]=0)then
begin
znach[a]:=tok;
pom[a]:=2;
break;
end;
for j:=1 to (a-1) do
begin
for z:=1 to (strngrd1.RowCount-j)do
begin
if (znach[z]>znach[z+1])and(
begin
b:=znach[z];
znach[z]:=znach[z+1];
znach[z+1]:=b;
s2:=pom[z];
pom[z]:=pom[z+1];
pom[z+1]:=s2;
end;
end;
end;
//îêîí÷àíèå öèêëîâ çàíåñåíèÿ â ìàññèâ
prost:=1;
s1:=s1+1;
end;
end else
begin
qo:=qo+1;
memo1.Lines.Add(Inttostr(qo));
end;
end;
if s1>strngrd1.RowCount then break;
if (pom[shag]=2) then
begin
if (qo=0) then
begin
prost:=0;
end else
begin
qo:=qo-1;
memo1.Lines.Add(Inttostr(qo));
if (r[s1]<i) then q:=q1 else q:=q2;
ttek:=znach[shag];
tok:=ttek+q;
//öèêë çàíåñåíèÿ â ìàññèâ ÿíà÷åíèé
for a:=1 to strngrd1.RowCount do
if (znach[a]=0)then
begin
znach[a]:=tok;
pom[a]:=2;
break;
end;
for j:=1 to (a-1) do
begin
for z:=1 to (strngrd1.RowCount-j)do
begin
if (znach[z]>znach[z+1])and(
begin
b:=znach[z];
znach[z]:=znach[z+1];
znach[z+1]:=b;
s2:=pom[z];
pom[z]:=pom[z+1];
pom[z+1]:=s2;
end;
end;
end;
//îêîí÷àíèå öèêëîâ çàíåñåíèÿ â ìàññèâ
prost:=1;
s1:=s1+1;
end;
end;
end;
for f:=1 to strngrd1.rowcount do
begin
if f=1 then Och[f]:=0 else
begin
if pom[f]=1 then Och[f]:=Och[f-1]+1;
if (pom[f]=2) and (Och[f-1]<>0) then Och[f]:=och[f-1]-1;
end;
end;
for f:=1 to strngrd1.RowCount do //âûâîä äàííûõ â ïîëå ìåìî
begin
if pom[f]=1 then mmo1.Lines.Add('âõîäèò â '+FloatToStr(znach[f]));
if pom[f]=2 then mmo1.Lines.Add('âûõîäèò â '+FloatToStr(znach[f]));
mmo1.Lines.Add('Äëèííà î÷
end;
//mmo1.Lines.Add(floattostr(
panel2.Visible:=true;
buf:=2000;
while znach[strngrd1.rowcount]*1000>
begin
buf:=buf+100;
memo1.Lines.Add(inttostr(buf))
end;
image1.Width:=buf;
image1.Canvas.Create;
scrollbar1.Max:=buf-panel1.
image1.canvas.Rectangle(10,50,
image1.Canvas.TextOut(10,50,'
vh:=1;
vih:=1;
intr:=0;
memo1.Lines.Add('-------------
for f:=1 to strngrd1.RowCount do
begin
if pom[f]=1 then //âõîäèò
begin
buf1:=znach[f];
buf2:=round(buf1*100);
buf1:=buf2/100;
image1.Canvas.Polygon([Point(
image1.Canvas.TextOut(buf2*10-
image1.Canvas.TextOut(buf2*10+
vh:=vh+1;
end;//îêîí÷àíèå ïåðâîé ïðîâåðêè íà ïîìåòêó
if pom[f]=2 then//âûõîäèò
begin
buf1:=znach[f];
buf2:=round(buf1*100);
buf1:=buf2/100;
image1.Canvas.Polygon([Point(
image1.Canvas.TextOut(buf2*10-
image1.Canvas.TextOut(buf2*10+
vih:=vih+1;
end;//îêîí÷àíèå âòîðîé ïðîâåðêè íà ïîìåòêó
end;//îêîí÷àíèå îáùåãî öèêëà
panel1.Visible:=true;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
//form2.Close;
li:=0;
scrollbar1.Max:=image1.Width-
buf:=20;
ud1.Position:=10;
setlength(zap,strngrd1.
for i:=1 to strngrd1.RowCount do zap[i]:=false;
prov;
end;
procedure TForm1.ScrollBar1Change(
begin
image1.Left:=-scrollbar1.
end;
procedure TForm1.ud1Click(Sender: TObject; Button: TUDBtnType);
begin
strngrd1.RowCount:=ud1.
if strngrd1.RowCount>10 then strngrd1.Width:=100 else strngrd1.Width:=83;
setlength(zap,strngrd1.
prov;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
var A,og:Double;
i,k,b,l,vh:integer;
v:boolean;
begin
if (edit1.text='') then mmo1.Lines.Add('Ïåðèîä
begin
if (strtofloat(edit1.Text)<znach[
v:=false;
i:=2;
l:=0;
if round((tprost/strtofloat(
while v=false do
begin
if znach[i+1]<strtofloat(edit1.
begin
A:=A+och[i]*(znach[i+1]-znach[
end else
begin
v:=true;
a:=a+och[i]*(strtofloat(edit1.
end;
inc(i);
end;
i:=1;
k:=0;
b:=0;
vh:=1;
while v=true do
begin
if (pom[i]=1) and (znach[i]<strtofloat(edit1.
begin
k:=k+1;
b:=i;
end;
if pom[i]=2 then begin
inc(vh);
if znach[vh]<znach[i] then og:=og+znach[i]-znach[vh];
end;
if znach[i+1]>strtofloat(edit1.
v:=false;
if (pom[i]=2)and(znach[i]<
if pom[b-(och[b])+l]=2 then inc(l);
end;
inc(i);
end;
if och[b]>1 then og:=og+strtofloat(edit1.Text)-
if ((round((a/strtofloat(edit1.
if k = 0 then edit3.Text:='0' else edit3.Text:=floattostr((round(
end else mmo1.Lines.Add('Ïåðèîä
end;
end;
procedure TForm1.strngrd1KeyPress(
var
g:Boolean;
i,c:integer;
begin
if not (Key in ['0'..'9', ',','']) then Key := #0;
g:=false;
for i:=1 to length(strngrd1.Cells[0,
i:=length(strngrd1.Cells[0,
if ((key=',') and (g=true)) or ((key=',') and (i<1)) then
begin
key:=#0;
end;
if (getasynckeystate(VK_return)<>
strngrd1.Cells[0,strngrd1.row]
if strngrd1.Row+1<>strngrd1.
end;
prov;
end;
procedure TForm1.edt11KeyPress(Sender: TObject; var Key: Char);
var
g:Boolean;
i:integer;
begin
if not (Key in ['0'..'9', ',','']) then Key := #0;
g:=false;
for i:=1 to length(edt11.Text) do if edt11.Text[i]=',' then g:=true;
i:=length(edt11.Text);
if ((key=',') and (g=true)) or ((key=',') and (i<1)) then
begin
key:=#0;
end;
if (getasynckeystate(VK_return)<>
edt11.Text:=floattostr(
end;
prov;
end;
procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
begin
memo1.Lines.Add(key);
if (getasynckeystate(VK_return)<>
if not (Key in ['0'..'9','']) then Key := #0;
prov;
end;
procedure TForm1.edt12KeyPress(Sender: TObject; var Key: Char);
var
g:Boolean;
i:integer;
begin
if not (Key in ['0'..'9', ',','']) then Key := #0;
g:=false;
for i:=1 to length(edt12.Text) do if edt12.Text[i]=',' then g:=true;
i:=length(edt12.Text);
if ((key=',') and (g=true)) or ((key=',') and (i<1)) then
begin
key:=#0;
end;
if (getasynckeystate(VK_return)<>
edt12.Text:=floattostr(
end;
prov;
end;
procedure TForm1.edt13KeyPress(Sender: TObject; var Key: Char);
var
g:Boolean;
i:integer;
begin
if not (Key in ['0'..'9', ',','']) then Key := #0;
g:=false;
for i:=1 to length(edt13.Text) do if edt13.Text[i]=',' then g:=true;
i:=length(edt13.Text);
if ((key=',') and (g=true)) or ((key=',') and (i<1)) then
begin
key:=#0;
end;
if (getasynckeystate(VK_return)<>
begin
edt13.Text:=floattostr(
end;
prov;
end;
procedure TForm1.edt14KeyPress(Sender: TObject; var Key: Char);
var
g:Boolean;
i:integer;
begin
if not (Key in ['0'..'9', ',','']) then Key := #0;
g:=false;
for i:=1 to length(edt14.Text) do if edt14.Text[i]=',' then g:=true;
i:=length(edt14.Text);
if ((key=',') and (g=true)) or ((key=',') and (i<1)) then
begin
key:=#0;
end;
if (getasynckeystate(VK_return)<>
begin
edt14.Text:=floattostr(
end;
prov;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
g:Boolean;
i:integer;
begin
if not (Key in ['0'..'9', ',','']) then Key := #0;
g:=false;
for i:=1 to length(Edit1.Text) do if Edit1.Text[i]=',' then g:=true;
i:=length(Edit1.Text);
if ((key=',') and (g=true)) or ((key=',') and (i<1)) then
begin
key:=#0;
end;
if (getasynckeystate(VK_return)<>
begin
Edit1.Text:=floattostr(
end;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
prov;
if btn1.Enabled=true then begin
btn1Click(sender);
bitbtn4.Enabled:=false;
end;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
strngrd1.RowCount:=10;
strngrd1.Cells[0,0]:='0,
strngrd1.Cells[0,1]:='0,
strngrd1.Cells[0,2]:='0,
strngrd1.Cells[0,3]:='0,
strngrd1.Cells[0,4]:='0,
strngrd1.Cells[0,5]:='0,
strngrd1.Cells[0,6]:='0,
strngrd1.Cells[0,7]:='0,
strngrd1.Cells[0,8]:='0,
strngrd1.Cells[0,9]:='0,
edt11.Text:='5';
edt12.Text:='0,4';
edt13.Text:='0,6';
edt14.Text:='0,5';
ud1.Position:=10;
edt1.Text:=inttostr(10);
prov;
end;
end.
Оглавление
Введение 4
1.Математическая постановка задачи 6
2. Решение задачи 7
3.Интерпретация 15
4. Перечень идентификаторов 17
5. Описание алгоритма 18
6. Блок-схема алгоритма 19
7. Проверка счёта по программе 20
Заключение 21
Список используемой литературы 23