Автор: Пользователь скрыл имя, 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
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,
begin
Indicator.Font.Color:=clRed;
Indicator.Caption:='&Подождите идут вычисления...';
Indicator.Caption:='&Готово :)';
iCountNumber:=StringGrid1.
for index:=1 to iCountNumber do
begin
DK[index]:=StrToInt(
TK[index]:=StrToInt(
D[index]:=StrToInt(
C[index]:=StrToInt(
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(
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+
Result.Text:='Порядок вычисления требований: '+Result.Text;
Result.Text:=Result.Text+'мини
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:=
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:=
end;
end.