Скачиваний:
28
Добавлен:
01.05.2014
Размер:
3.65 Кб
Скачать
unit RuleItem;

interface
uses
ItemSet,
dmmTypes,
uContainers,
Instances,
DoubleObject,
DmmConstants,
math,
Classes,
SysUtils;

type
TDMRuleItem = class (TObject)

public
//левая часть правила
m_premise : TDMItemSet;

//правая часть правила
m_consequence : TDMItemSet;

//ожидаемая точность предсказания
m_accuracy : double ;

m_genTime : integer;

m_OwnValues : boolean;

m_OwnValuesCons : boolean;

public

constructor Create(premise : TDMItemSet; consequence : TDMItemSet;
OwnValuesItems : boolean = false); overload;
constructor Create(premise : TDMItemSet; consequence : TDMItemSet;
genTime : integer; ruleSupport : integer;
OwnValuesItems : boolean = false); overload;

property OwnValues: Boolean read m_OwnValues write m_OwnValues;
property OwnValuesCons: Boolean read m_OwnValuesCons write m_OwnValuesCons;

function premise() : TDMItemSet;
function consequence() : TDMItemSet;
function equals(o : TObject) : boolean;
function accuracy() : double;
function compareTo(o : TObject ) : integer;
destructor Destroy;override;

end;


implementation

constructor TDMRuleItem.Create( premise : TDMItemSet; consequence : TDMItemSet;
OwnValuesItems : boolean = false);
begin
m_premise := premise;
m_premise.OwnValues := OwnValuesItems;
m_consequence := consequence;
m_OwnValues := false;
m_OwnValuesCons := true;
end;

constructor TDMRuleItem.Create(premise : TDMItemSet; consequence : TDMItemSet;
genTime : integer; ruleSupport : integer;
OwnValuesItems : boolean );
begin
m_premise := premise;
m_premise.OwnValues := OwnValuesItems;
m_consequence := consequence;
m_OwnValues := false;
m_OwnValuesCons := true;

m_consequence.setCounter(ruleSupport);
m_genTime := genTime;
end;

function TDMRuleItem.premise() : TDMItemSet;
begin
result := m_premise;
end;

function TDMRuleItem.consequence() : TDMItemSet;
begin
result := m_consequence;
end;

function TDMRuleItem.accuracy() : double;
begin
result := m_accuracy;
end;

function TDMRuleItem.equals(o : TObject) : boolean;
begin
if(o = nil) then
begin
result := false;
exit;
end;
if( (m_premise.equals( (o as TDMRuleItem).m_premise ) ) and (m_consequence.equals( (o as TDMRuleItem).m_consequence)) ) then
begin
result := true;
exit;
end;
result := false;
end;

function TDMRuleItem.compareTo(o : TObject ) : integer;
begin
if(m_accuracy = (o as TDMRuleItem).m_accuracy) then
begin
if((m_genTime = (o as TDMRuleItem).m_genTime)) then
begin
result := 0;
exit;
end;
if(m_genTime > (o as TDMRuleItem).m_genTime) then
begin
result := -1;
exit;
end;
if(m_genTime < (o as TDMRuleItem).m_genTime) then
begin
result := 1;
exit;
end;
end;
if(m_accuracy < (o as TDMRuleItem).m_accuracy) then
begin
result := -1;
exit;
end;
result := 1;
end;

destructor TDMRuleItem.Destroy;
begin
if(OwnValues)then
FreeAndNil(m_premise);
if(OwnValuesCons)then
begin
m_consequence.OwnValues := true;
FreeAndNil(m_consequence);
end;
end;

end.
Соседние файлы в папке DMAssociations