Математическая постановка задачи

Автор работы: Пользователь скрыл имя, 20 Декабря 2012 в 14:37, курсовая работа

Краткое описание

Целью данной курсовой работы является построение простейшей статистической модели системы массового обслуживания и написание универсальной программы по её реализации. Для достижения этой цели в работе решены следующие задачи:
 изучен алгоритм построения простейшей модели системы массового обслуживания;
 изучены основные характеристики простейшей модели системы массового обслуживания
 выбран язык программирования, позволяющий реализовать указанную модель;

Вложенные файлы: 1 файл

Курсовая Груздев.docx

— 74.98 Кб (Скачать файл)

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(znach[z+1]<>0) then

          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]-znach[shag-1]);

      //öèêë çàíåñåíèÿ  â ìàññèâ ÿíà÷åíèé

      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(znach[z+1]<>0) then

            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(znach[z+1]<>0) then

            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('Äëèííà î÷åðåäè- '+inttostr(Och[f]));

  end;

//mmo1.Lines.Add(floattostr(tprost));

panel2.Visible:=true;

buf:=2000;

while znach[strngrd1.rowcount]*1000>buf do

  begin

  buf:=buf+100;

  memo1.Lines.Add(inttostr(buf));

  end;

  image1.Width:=buf;

  image1.Canvas.Create;

  scrollbar1.Max:=buf-panel1.Width;

image1.canvas.Rectangle(10,50,buf,51);

image1.Canvas.TextOut(10,50,'0');

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(buf2*10-intr, 25),Point(buf2*10+10-intr, 25), Point(buf2*10+5-intr, 50)]);

    image1.Canvas.TextOut(buf2*10-5-intr,51,FloatToStr(buf1)); //íàäïèñü ñíèçó ïîêàçûâàåò çíà÷åíèå

    image1.Canvas.TextOut(buf2*10+2-intr,10,IntToStr(vh));  //íàäïèñü ñâåðõó ïîêàçûâàåò ïîðÿäêîâûé  íîìåð

    vh:=vh+1;

    end;//îêîí÷àíèå ïåðâîé  ïðîâåðêè íà ïîìåòêó

  if pom[f]=2 then//âûõîäèò

    begin

    buf1:=znach[f];

    buf2:=round(buf1*100);

    buf1:=buf2/100;

    image1.Canvas.Polygon([Point(buf2*10-intr, 76),Point(buf2*10+10-intr,76), Point(buf2*10+5-intr, 51)]);

    image1.Canvas.TextOut(buf2*10-5-intr,37,FloatToStr(buf1));  //  Ïîêàçûâàåò çíà÷åíèå ñâåðõó

    image1.Canvas.TextOut(buf2*10+2-intr,77,IntToStr(vih));  //   ïîêàçûâàåò ïîðÿäêîâûé íîìåð  ñíèçó

    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-panel1.Width;

buf:=20;

ud1.Position:=10;

setlength(zap,strngrd1.RowCount);

for i:=1 to strngrd1.RowCount do zap[i]:=false;

prov;

end;

 

procedure TForm1.ScrollBar1Change(Sender: TObject);

begin

image1.Left:=-scrollbar1.Position;

end;

 

procedure TForm1.ud1Click(Sender: TObject; Button: TUDBtnType);

begin

strngrd1.RowCount:=ud1.Position;

if strngrd1.RowCount>10 then strngrd1.Width:=100 else  strngrd1.Width:=83;

setlength(zap,strngrd1.RowCount);

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('Ïåðèîä ìîäåëèðîâàíèÿ  íå óêàçàí, ââåäèòå ïåðèîä ìîäåëèðîâàíèÿ.') else

begin

if (strtofloat(edit1.Text)<znach[strngrd1.RowCount]) and (strtofloat(edit1.Text)<>0) then begin

v:=false;

i:=2;

l:=0;

if round((tprost/strtofloat(edit1.Text))*100)>100 then labelededit1.Text:='100%' else labelededit1.text:=floattostr(round((tprost/strtofloat(edit1.Text))*100))+'%';

while v=false do

  begin

  if znach[i+1]<strtofloat(edit1.Text) then

    begin

    A:=A+och[i]*(znach[i+1]-znach[i]);

  end else

    begin

    v:=true;

    a:=a+och[i]*(strtofloat(edit1.Text)-znach[i]);

    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.Text))then

    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.Text) then begin

  v:=false;

  if (pom[i]=2)and(znach[i]<strtofloat(edit1.Text)) then inc(l);

  if pom[b-(och[b])+l]=2 then inc(l);

  end;

  inc(i);

  end;

if och[b]>1 then og:=og+strtofloat(edit1.Text)-znach[b-(och[b])+l];

if ((round((a/strtofloat(edit1.Text))*100))/100)<=0 then edit2.Text:='0' else edit2.Text:=floattostr(    (round((a/strtofloat(edit1.Text))*100))/100     );

if k = 0 then edit3.Text:='0' else edit3.Text:=floattostr((round((og/k)*100))/100);

end else mmo1.Lines.Add('Ïåðèîä ìîäåëèðîâàíèÿ  áîëüøå ÷åì ñàìîå ïîñëåäíåå  çíà÷åíèå ìîäåëè èëè íå óêàçàí, ââåäèòå äðóãîé ïåðèîä ìîäåëèðîâàíèÿ.');

 

end;

end;

 

procedure TForm1.strngrd1KeyPress(Sender: TObject; var Key: Char);

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,strngrd1.row]) do if strngrd1.Cells[0,strngrd1.row][i]=',' then g:=true;

i:=length(strngrd1.Cells[0,strngrd1.row]);

if ((key=',') and (g=true)) or ((key=',') and (i<1)) then

begin

  key:=#0;

  end;

if (getasynckeystate(VK_return)<>0) then begin

  strngrd1.Cells[0,strngrd1.row]:=floattostr(strtofloat(strngrd1.Cells[0,strngrd1.row]));

  if strngrd1.Row+1<>strngrd1.RowCount then strngrd1.Row:=strngrd1.Row+1;

  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)<>0) then begin

  edt11.Text:=floattostr(strtofloat(edt11.Text));

  end;

  prov;

end;

 

procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);

begin

memo1.Lines.Add(key);

if (getasynckeystate(VK_return)<>0) and(strtoint(edt1.Text)<>0) then strngrd1.RowCount:=strtoint(edt1.text);

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)<>0) then begin

  edt12.Text:=floattostr(strtofloat(edt12.Text));

  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)<>0) then

    begin

    edt13.Text:=floattostr(strtofloat(edt13.Text));

    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)<>0) then

    begin

    edt14.Text:=floattostr(strtofloat(edt14.Text));

    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)<>0) then

    begin

    Edit1.Text:=floattostr(strtofloat(Edit1.Text));

    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,345500';

strngrd1.Cells[0,1]:='0,487110';

strngrd1.Cells[0,2]:='0,811154';

strngrd1.Cells[0,3]:='0,891254';

strngrd1.Cells[0,4]:='0,429090';

strngrd1.Cells[0,5]:='0,230243';

strngrd1.Cells[0,6]:='0,595449';

strngrd1.Cells[0,7]:='0,542293';

strngrd1.Cells[0,8]:='0,420822';

strngrd1.Cells[0,9]:='0,697501';

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

 

 

 

 

 

 

 

 


 


Информация о работе Математическая постановка задачи