Применение методов распространения ограничений при поиске допустимых решений

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

Индиго и IHCS.doc

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

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+1];

     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+1];

  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.

Информация о работе Применение методов распространения ограничений при поиске допустимых решений