Програмне забезпечення ЕОМ

Автор работы: Пользователь скрыл имя, 26 Ноября 2013 в 21:33, курсовая работа

Описание работы

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

Содержание работы

ВВЕДЕНИЕ …………………………………………………………..………......3
1.ПОСТАНОВКА ЗАДАЧИ……….…………………………………………….4
2.ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ……………………………………………...5
2.1 Изучение математических методов решения задач...…...…………….5
2.2 Метод ветвей и границ ………………………………………………… 6
2.3 Метод динамического программирования…………………………….12
3.ПРОЕКТИРОВАНИЕ АРХИТЕКТУРЫ РАЗРАБАТЫВАЕМЫХ ПРОГРАММНЫХ СРЕДСТВ…………………………………………………..14
3.1 Схема взаимодействия программ……………………………………..14
3.2 Формат исходных данных и результаты решения задачи…………..15
3.3 Требования к программному изделию………………………….........16
3.4 Требования к программной документации…..……………………....16
4. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ………………………………………...17
ЭКСПЕРИМЕНТАЛЬНЫЕ РАСЧЕТЫ……………………………………..20
5.1 Контрольные примеры для решения на ЭВМ………………………..20
5.2 Экспериментальные расчеты………………………………………….28
ЗАКЛЮЧЕНИЕ………………………………………………………………….30
ЛИТЕРАТУРА…………………………………………………………………...31
ПРИЛОЖЕНИЕ………………………………………………………………….32

Файлы: 1 файл

Отчет.doc

— 1.18 Мб (Скачать файл)

      if ((strtoint(form2.stringgrid1.Cells[4,1])+C(4,2,3))<=(strtoint(form2.stringgrid1.Cells[2,1])+C(2,3,4))) and ((strtoint(form2.stringgrid1.Cells[4,1])+C(4,2,3))<=(strtoint(form2.stringgrid1.Cells[3,1])+C(3,2,4))) then Result:=3;


end;

function Q(j:integer;i:integer) :integer;

var stolbec,stroka,l,k:integer;

 

 

begin

for l:=1 to form2.StringGrid2.ColCount-2 do

  begin

  if form2.StringGrid2.Cells[l,i]<>'inf' then begin

  if l<>j then

  if form2.StringGrid3.Cells[form2.StringGrid2.ColCount-1,i]=''

    then form2.StringGrid3.Cells[form2.StringGrid2.ColCount-1,i]:=form2.StringGrid2.cells[l,i]

    else if form2.StringGrid2.cells[l,i]<>'inf' then if strtoint(form2.StringGrid2.cells[l,i])<strtoint(form2.StringGrid3.Cells[form2.StringGrid2.ColCount-1,i])

        then  form2.StringGrid3.Cells[form2.StringGrid2.ColCount-1,i]:=form2.StringGrid2.cells[l,i];

  end;

  end;

stroka:=strtoint(form2.StringGrid3.Cells[form2.StringGrid2.ColCount-1,i]);

for k:=1 to form2.StringGrid2.rowCount-2 do

  begin

  if form2.StringGrid3.Cells[j,form2.StringGrid2.rowCount-1]=''

    then form2.StringGrid3.Cells[j,form2.StringGrid2.rowCount-1]:=form2.StringGrid2.cells[j,k]

    else if form2.StringGrid2.cells[j,k]<>'inf' then if strtoint(form2.StringGrid2.cells[j,k])<strtoint(form2.StringGrid3.Cells[j,form2.StringGrid2.rowCount-1])

        then  form2.StringGrid3.Cells[j,form2.StringGrid2.rowCount-1]:=form2.StringGrid2.cells[j,k];

  end;

stolbec:=strtoint(form2.StringGrid3.Cells[j,form2.StringGrid2.rowCount-1]);  }

Result:=stolbec+stroka;

end;

procedure TForm3.BitBtn1Click(Sender: TObject);

var i,j,k,l,schetchik,number,compare,h0,qmax,qj,qi: integer;

    listboxitem_in_stringgrid: boolean;

begin

schetchik:=0;

h0:=0;

for j:=1 to form1.SpinEdit1.Value-1 do

  begin

  listboxitem_in_stringgrid:=false;

  for i:=0 to listbox1.Items.Count-1 do

    begin

    if form2.StringGrid1.Cells[0,j]=listbox1.Items.Strings[i] then listboxitem_in_stringgrid:=true;

    end;

  if listboxitem_in_stringgrid=false

      then  begin

            form2.edit1.text:=form2.edit1.text+' city'+inttostr(j)+'don`t exist ';

            schetchik:=schetchik+1;

            for i:=0 to form2.StringGrid1.ColCount-1 do

                form2.StringGrid1.Cells[i,j]:='';

            end

      else  form2.edit1.text:=form2.edit1.text+' city'+inttostr(j)+'exist ' ;

   end;

form2.Edit1.text:=form2.Edit1.text+inttostr(schetchik);

form2.Show;

number:=4;

for i:=0 to form1.spinedit1.Value-1 do

  form2.stringgrid1.Cells[i,0]:=form2.stringgrid1.cells[0,i];

for i:=1 to form2.StringGrid1.ColCount-1 do

  if form2.StringGrid1.cells[0,i]='' then

    begin

    for l:=i to form2.stringgrid1.rowcount do

      for k:=1 to form2.StringGrid1.colCount do

      form2.StringGrid1.Cells[k-1,l]:=form2.StringGrid1.Cells[k-1,l+1]

    end;


for i:=1 to form2.StringGrid1.ColCount-1 do

 

 

 

  if form2.StringGrid1.cells[i,0]='' then

    begin

    for l:=i to form2.stringgrid1.rowcount do

      for k:=1 to form2.StringGrid1.colCount do

     form2.StringGrid1.Cells[l,k-1]:=form2.StringGrid1.Cells[l+1,k-1]

    end;

form2.StringGrid1.RowCount:=form2.StringGrid1.RowCount-combobox1.Items.Count+listbox1.Items.Count;

form2.StringGrid1.colCount:=form2.StringGrid1.colCount-combobox1.Items.Count+listbox1.Items.Count;

form4.visible:=true;

if form3.ListBox1.Items.Count=number then

begin

    case min3 of

    1:form4.edit2.text:=inttostr(strtoint(form2.stringgrid1.Cells[2,1])+C(2,3,4));

    2:form4.edit2.text:=inttostr(strtoint(form2.stringgrid1.Cells[3,1])+C(3,2,4));

    3:form4.edit2.text:=inttostr(strtoint(form2.stringgrid1.Cells[4,1])+C(4,2,3));

    end;

for j:=2 to 4 do

    for i:=2 to 4 do

      if (i<>j) and (i<>min3+1) and (j<>min3+1) then

          if B(i,j)<B(j,i) then form4.edit1.text:=form2.StringGrid1.Cells[0,1]+'->'+form2.StringGrid1.Cells[0,min3+1]+'->'+form2.StringGrid1.Cells[0,i]+'->'+form2.StringGrid1.Cells[0,j]+'->'+form2.StringGrid1.Cells[0,1]

                            else form4.edit1.text:=form2.StringGrid1.Cells[0,1]+'->'+form2.StringGrid1.Cells[0,min3+1]+'->'+form2.StringGrid1.Cells[0,j]+'->'+form2.StringGrid1.Cells[0,i]+'->'+form2.StringGrid1.Cells[0,1] ;

form4.edit3.text:=inttostr(strtoint(form2.stringgrid1.Cells[2,1])+C(2,3,4));

form4.edit4.text:=inttostr(strtoint(form2.stringgrid1.Cells[3,1])+C(3,2,4));

form4.edit5.text:=inttostr(strtoint(form2.stringgrid1.Cells[4,1])+C(4,2,3));

end;

if form3.ListBox1.Items.Count=number-1 then

  if (strtoint(form2.stringgrid1.Cells[2,1])+strtoint(form2.stringgrid1.Cells[3,2])+strtoint(form2.stringgrid1.Cells[1,3]))<(strtoint(form2.stringgrid1.Cells[3,1])+strtoint(form2.stringgrid1.Cells[2,3])+strtoint(form2.stringgrid1.Cells[1,2]))

    then begin

    form4.edit2.text:=inttostr(strtoint(form2.stringgrid1.Cells[2,1])+strtoint(form2.stringgrid1.Cells[3,2])+strtoint(form2.stringgrid1.Cells[1,3]));

    for i:=1 to 3 do form4.edit1.text:=form4.edit1.text+form2.StringGrid1.Cells[0,i]+'->';

    form4.edit1.text:=form4.edit1.text+form2.StringGrid1.Cells[0,1];

    end

    else begin

form4.edit2.text:=inttostr(strtoint(form2.stringgrid1.Cells[3,1])+strtoint(form2.stringgrid1.Cells[2,3])+strtoint(form2.stringgrid1.Cells[1,2]));

    form4.edit1.text:=form2.StringGrid1.Cells[0,1]+'->'+form2.StringGrid1.Cells[0,3]+'->'+form2.StringGrid1.Cells[0,2]+'->'+form2.StringGrid1.Cells[0,1];

    end;

if form3.ListBox1.Items.Count=number-2 then

  begin

  form4.edit2.text:=inttostr(strtoint(form2.stringgrid1.Cells[2,1])+strtoint(form2.stringgrid1.Cells[1,2]));

  form4.edit1.text:=form2.StringGrid1.Cells[0,1]+'->'+form2.StringGrid1.Cells[0,2]+'->'+form2.StringGrid1.Cells[0,1];

  end;

form2.StringGrid2.RowCount:=form2.StringGrid1.RowCount;

  form2.StringGrid2.colCount:=form2.StringGrid1.colCount;

  form2.StringGrid2.ColCount:=form2.StringGrid2.colcount+1;

  form2.StringGrid2.rowCount:=form2.StringGrid2.rowcount+1;

  form2.StringGrid3.RowCount:=form2.StringGrid2.RowCount;

  form2.StringGrid3.colCount:=form2.StringGrid2.colCount;

for i:=0 to form2.StringGrid1.RowCount-1 do

  for j:=0 to form2.StringGrid1.colcount-1 do


 

 

form2.stringgrid2.cells[j,i]:=form2.stringgrid1.cells[j,i];

if form3.ListBox1.Items.Count>number then

  for i:=1 to strtoint(form3.Edit1.text)-2 do

  begin

  for j:=1 to form2.StringGrid2.colCount-2 do            //min po strokam

    for i:=1 to form2.StringGrid2.RowCount-2 do

     if form2.StringGrid2.cells[j,i]<>'inf' then

       if form2.StringGrid2.cells[form2.StringGrid2.RowCount-1,i]='' then form2.StringGrid2.cells[form2.StringGrid2.RowCount-1,i]:=form2.StringGrid2.Cells[j,i]

         else if strtoint(form2.StringGrid2.cells[j,i])<strtoint(form2.StringGrid2.cells[form2.StringGrid2.RowCount-1,i]) then form2.StringGrid2.cells[form2.StringGrid2.RowCount-1,i]:=form2.StringGrid2.cells[j,i];

  for j:=1 to form2.StringGrid2.colCount-2 do         //otnimaem po strokam

   for i:=1 to form2.StringGrid2.RowCount-2 do

     if form2.StringGrid2.cells[i,j]<>'inf' then form2.StringGrid2.cells[i,j]:=inttostr(strtoint(form2.StringGrid2.cells[i,j])-strtoint(form2.StringGrid2.cells[form2.StringGrid2.RowCount-1,j]));

  for i:=1 to form2.StringGrid2.colCount-2 do        //min po stolbcam

    for j:=1 to form2.StringGrid2.RowCount-2 do

     if form2.StringGrid2.cells[i,j]<>'inf' then

       if form2.StringGrid2.cells[i,form2.StringGrid2.RowCount-1]='' then form2.StringGrid2.cells[i,form2.StringGrid2.RowCount-1]:=form2.StringGrid2.Cells[i,j]

         else if strtoint(form2.StringGrid2.cells[i,j])<strtoint(form2.StringGrid2.cells[i,form2.StringGrid2.RowCount-1]) then form2.StringGrid2.cells[i,form2.StringGrid2.RowCount-1]:=form2.StringGrid2.cells[i,j];

  for i:=1 to form2.StringGrid2.colCount-2 do         //otnimaem po stolbcam

    for j:=1 to form2.StringGrid2.RowCount-2 do

     if form2.StringGrid2.cells[j,i]<>'inf' then form2.StringGrid2.cells[j,i]:=inttostr(strtoint(form2.StringGrid2.cells[j,i])-strtoint(form2.StringGrid2.cells[j,form2.StringGrid2.RowCount-1]));

  for i:=1 to form2.StringGrid2.rowCount-2 do

  h0:=h0+strtoint(form2.StringGrid2.cells[form2.StringGrid2.RowCount-1,i]);

  for i:=1 to form2.StringGrid2.rowCount-2 do

  h0:=h0+strtoint(form2.StringGrid2.cells[i,form2.StringGrid2.colCount-1]);

  form2.Edit2.Text:=inttostr(h0);

  end;

qmax:=0;

  qj:=0;

  qi:=0;

  for i:=1 to form2.StringGrid2.colCount-2 do

    for j:=1 to form2.StringGrid2.RowCount-2 do

      if form2.StringGrid2.cells[j,i]<>'inf' then

      begin

        if  strtoint(form2.StringGrid2.cells[j,i])=0

        then begin

              if Q(j,i)>qmax then begin qmax:=Q(j,i);

                                  qj:=j;

                                  qi:=i; end;

             end;

      end;

  h0:=ho+qmax;

  for i:=1 to  form2.StringGrid2.rowCount-2 do

  form2.StringGrid2.cells[qj,i]:='';

  for i:=1 to  form2.StringGrid2.rowCount-2 do

  form2.StringGrid2.cells[i,qi]:='';

  form2.StringGrid2.rowCount:=form2.StringGrid2.rowCount-1;

  form2.StringGrid2.colCount:=form2.StringGrid2.colCount-1;

  form4.Edit1.Text:=form4.Edit1.Text+form2.StringGrid1.cells[0,i]+form2.StringGrid1.cells[0,i];

end;

end.

         


 

 

 

unit Unit4;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

type

  TForm4 = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Edit4: TEdit;

    Edit5: TEdit;

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form4: TForm4;

implementation

uses Unit3;

{$R *.dfm}

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);

begin

form3.Close;

end;

end.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Информация о работе Програмне забезпечення ЕОМ