Вычислительная практика

Автор: Пользователь скрыл имя, 22 Ноября 2012 в 00:06, курсовая работа

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

По заданию мне необходимо по входным данным составить такую последовательность требований, при которой суммарный штраф будет минимален, т.е. решение данной задачи сводится к полному перебору всех возможных последовательностей и вычислению штрафа с запоминанием последовательности с минимальным штрафом. Полный перебор заключается в том, что мы переставляем элементы множества N = {1,2,...,n}. Символической записью этой конструкции является  = (i1,i2,i3,..., in).Под задачей упорядочения понимается, как правило, задача построения одной или нескольких перестановок, удовлетворяющих определенным ограничениям и доставляющих экстремум некоторой функции или функциям, определенным на рассматриваемом множестве перестановок.

Содержание

Введение……………………………………………………………………………………………3
1.Постановка задачи………………………………………………………………4
2.Описание алгоритма……………………………………………………………5
3.Описание программы……………………………………………………………7
4.Тестовые примеры…………………………………………………………………9
5.Анализ результат………………………………………………………………12
Заключение……………………………………………………………………………………13
Литература……………………………………………………………………………………14
Приложение …………………………………………………………………………………15

Работа содержит 1 файл

PZ10.doc

— 121.50 Кб (Скачать)

var

    i:byte;

begin

result:=1;

for i:=1 to n_fact do result:=result*i;

end;

 

procedure TMain.GoProcessClick(Sender: TObject);

var

New_Penalty,Optimum_penalty,index:integer;

begin

Indicator.Font.Color:=clRed;

Indicator.Caption:='&Подождите идут вычисления...';

Indicator.Caption:='&Готово :)';

iCountNumber:=StringGrid1.RowCount-1;

for index:=1 to iCountNumber do

        begin

        DK[index]:=StrToInt(StringGrid1.Cells[1,index]);

        TK[index]:=StrToInt(StringGrid1.Cells[2,index]);

         D[index]:=StrToInt(StringGrid1.Cells[3,index]);

         C[index]:=StrToInt(StringGrid1.Cells[4,index]);

        end;

for index:=1 to iCountNumber do Current[index]:=index;

Optimum_penalty:=2147483647;

for index:=1 to Fact(iCountNumber) do

     begin

      New_Penalty:=Current_Penalty(Current);

      if (New_Penalty<Optimum_penalty) then

       begin

        Optimum_penalty:=New_Penalty;

        Best:=Current;

       end;

     Follow_Sequence;

       end;

Result.Clear;

for index:=1 to iCountNumber do Result.Text:=Result.Text+IntToStr(Best[index])+' ';

Result.Text:='Порядок  вычисления требований: '+Result.Text;

Result.Text:=Result.Text+'минимальный штраф='+IntToStr(Optimum_Penalty);

Indicator.Font.Color:=clBlue;

Indicator.Caption:='&Готово :)';

end;

 

procedure TMain.FormActivate(Sender: TObject);

begin

StringGrid1.Cells[0,1]:='1';

StringGrid1.Cells[0,0]:='Номер';

StringGrid1.Cells[1,0]:='Начальный момент времени';

StringGrid1.Cells[2,0]:='Время  выполнения';

StringGrid1.Cells[3,0]:='Директивный  срок';

StringGrid1.Cells[4,0]:='Степень важности';

end;

 

procedure TMain.AddClick(Sender: TObject);

begin

if StringGrid1.RowCount=10 then ADD.Enabled:=False;

if StringGrid1.RowCount<3 then Delete.Enabled:=True;

StringGrid1.Cells[0,StringGrid1.RowCount]:=IntToStr(StringGrid1.RowCount);

StringGrid1.RowCount:=StringGrid1.RowCount+1;

end;

 

procedure TMain.DeleteClick(Sender: TObject);

begin

if StringGrid1.RowCount=3 then Delete.Enabled:=False;

if StringGrid1.RowCount<13 then ADD.Enabled:=True;

StringGrid1.RowCount:=StringGrid1.RowCount-1;

end;

end.


Информация о работе Вычислительная практика