Автор работы: Пользователь скрыл имя, 02 Апреля 2011 в 23:36, курсовая работа
Целью данной курсовой работы является рассмотрение применения методов распространения ограничений при поиске допустимых решений.
Курсовая работа состоит из двух частей.
В первое части рассмотрены теоретические аспекты задачи распространения ограничений, а также общие сведения об интервальной арифметике.
ВВЕДЕНИЕ 3
1 ОБЩИЕ СВЕДЕНИЯ ОБ ИНТЕРВАЛЬНОЙ АРИФМЕТИКЕ 4
1.1 Интервальная арифметика. Интервальные числа 4
1.2 Стандартная интервальная арифметика 5
1.3 Интервальная арифметика с нестандартными вычитанием и делением 6
1.4 Теоретические аспекты методов распространения ограничений 7
2 МЕТОДЫ РАСПРОСТРАНЕНИЯ ОГРАНИЧЕНИЙ 9
2.1 Алгоритм Indigo 9
2.2 Реализация на ЭВМ алгоритма Indigo 12
2.3 Алгоритм Incremental Hierarchical Constraint Solver (IHCS) 14
ЗАКЛЮЧЕНИЕ 17
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 18
ПРОЛОЖЕНИЕ А. Текст программы на Delphi 19
begin
temp:=False;
for i:=0 to Count-1 do
if Constraints[i] = Elem then
begin
temp:=True;
break;
end;
Result:=temp;
end;
Procedure TSetOfC.Delete(cn : TConstraint);
var i,j : integer;
begin
for i:=0 to Count-1 do
if cn = Constraints[i] then
begin
for j:=i to Count-2 do
Constraints[j]:=Constraints[j+
Dec(Count);
SetLength(Constraints,Count);
break;
end;
end;
end.
{=============================
unit CQueue;
interface
uses Unit1;
type
TQueueOfC = class
Count : integer;
Constraints : array of TConstraint;
constructor Create;
destructor Free;
procedure Add(Elem : TConstraint);
procedure Dequeue;
function IsEmpty : boolean;
function Front : TConstraint;
function IsElemIn(Elem : TConstraint) : boolean;
end;
implementation
Constructor TQueueOfC.Create;
begin
Count:=0;
end;
Destructor TQueueOfC.Free;
begin
Count:=0;
Constraints:=nil;
end;
Procedure TQueueOfC.Add(Elem : TConstraint);
begin
inc(Count);
SetLength(Constraints,Count);
Constraints[Count-1]:=Elem;
end;
Procedure TQueueOfC.Dequeue;
var i : integer;
begin
for i:=0 to Count-2 do
Constraints[i]:=Constraints[i+
dec(Count);
SetLength(Constraints,Count);
end;
Function TQueueOfC.IsEmpty : boolean;
begin
if Count = 0 then
Result:=True
else
Result:=False;
end;
Function TQueueOfC.Front : TConstraint;
begin
Result:=Constraints[0];
end;
Function TQueueOfC.IsElemIn(Elem : TConstraint) : boolean;
var i : integer;
temp : boolean;
begin
temp:=False;
for i:=0 to Count-1 do
if Constraints[i] = Elem then
begin
temp:=True;
break;
end;
Result:=temp;
end;
end.
{=============================
unit VSet;
interface
uses Unit1;
type
TSetOfV = class
Count : integer;
Variables : array of TVariable;
constructor Create;
destructor Free;
procedure Add(Elem : TVariable);
function IsElemIn(v : string) : boolean;
end;
implementation
Constructor TSetOfV.Create;
begin
Count:=0;
end;
Destructor TSetOfV.Free;
begin
Count:=0;
Variables:=nil;
end;
Procedure TSetOfV.Add(Elem : TVariable);
begin
inc(Count);
SetLength(Variables,Count);
Variables[Count-1]:=Elem;
end;
function TSetOfV.IsElemIn(v : string) : boolean;
var i : integer;
temp : boolean;
begin
temp:=False;
for i:=0 to Count-1 do
begin
if Variables[i].VarName = v then
temp:=True;
break;
end;
Result:=temp;
end;
end.
Информация о работе Применение методов распространения ограничений при поиске допустимых решений