Вы находитесь на странице: 1из 3

public class item

{
public string var; // Bien chay
public string Fire_val; // Gia tri chay
public string val;//Gia tri cua luat luc truyen vao
public item()
{
var = "";
val = "";
}
}

public class Rule


{

public bool Chay;


public ArrayList VeTrai;
public ArrayList VePhai;

public Rule()
{
VeTrai= new ArrayList(0);
VePhai= new ArrayList(0);
}
}

public class CSTT


{
public ArrayList RuleArr;
public ArrayList ResultArr;
public CSTT()
{
RuleArr = new ArrayList(0);
ResultArr = new ArrayList(0);
}

// Tạo luật với các giá trị xuất phát cho các biến
public void TaoCacLuat(string sTuoi, string sThucGiac, string sNgu, string sKhoc)
{
// Luat 1 - khoi tao
Rule rl = new Rule();

item itm = new item();


itm.var = "Tuổi";
itm.Fire_val = "<4tháng";
itm.val = sTuoi;
rl.VeTrai.Add(itm);

itm = new item();


itm.var = "Khóc";
itm.val = sKhoc;
itm.Fire_val = "NhiềuBuổiTối";
rl.VeTrai.Add(itm);

itm = new item();


itm.var = "NguyênNhân";
itm.Fire_val = "XemSơĐồKhócNhiều";
rl.VePhai.Add(itm);
// Luat 1 - them vao danh sach luat
RuleArr.Add(rl);

// Luat 2 - khoi tao


rl = new Rule();

itm = new item();


itm.var = "Tuổi";
itm.Fire_val = "<4tháng";
itm.val = sTuoi;
rl.VeTrai.Add(itm);

itm = new item();


itm.var = "Khóc";
itm.val = sKhoc;
itm.Fire_val = "KhôngNhiềuBuổiTối";
rl.VeTrai.Add(itm);

itm = new item();


itm.var = "ThứcGiấc";
itm.val = sThucGiac;
itm.Fire_val = "BanĐêm";
rl.VeTrai.Add(itm);

itm = new item();


itm.var = "NguyênNhân";
itm.Fire_val = "BéĐóiBụng";
rl.VePhai.Add(itm);

// Luat 2 - them vao danh sach luat


RuleArr.Add(rl);

// Luat 3 - khoi tao


rl = new Rule();

itm = new item();


itm.var = "Ngủ";
itm.val = sNgu;
itm.Fire_val = "ÍtHơnBạnKhác";
rl.VeTrai.Add(itm);

itm = new item();


itm.var = "NguyênNhân";
itm.Fire_val = "KhôngChơiĐùaLúcThức";
rl.VePhai.Add(itm);

// Luat 3 - them vao danh sach luat


RuleArr.Add(rl);
}

/// <summary>
/// Hàm kích hoạt luật
/// </summary>
public bool KichHoatLuat(Rule Luat)
{
if( Luat.Chay) return false; // Luat da chay
for(int i=0;i<Luat.VeTrai.Count;i++)
{
item v = (item)Luat.VeTrai[i];
if( !v.val.Equals(v.Fire_val))
return false;
}
item it = new item();
it=(item)Luat.VePhai[0];
it.val=it.Fire_val;
Luat.VePhai.Clear();
Luat.VePhai.Add(it);
return true;
}

// Suy diễn tiến


public void SuyDienTien()
{
bool CapNhat = true;
ArrayList LSET = new ArrayList(0);
//LSET = tap luat
for(int i=0;i<RuleArr.Count;i ++)
LSET.Add(RuleArr[i]);
while(CapNhat)
{
CapNhat = false;
for(int i=0;i<LSET.Count;i++)
if(KichHoatLuat((Rule)LSET[i]))
{
ResultArr.Add(LSET[i]);
LSET.RemoveAt(i);
CapNhat = true;
i--;
}
}

// Lấy kết quả sau khi suy diễn


public string LayKetQua()
{
string str = "";
for(int i=0;i<ResultArr.Count;i++)
{
Rule rl = (Rule)ResultArr[i];
item it = (item)rl.VePhai[0];
str+= it.Fire_val;
}

str.Trim();
if (str.Length == 0)
str = "HỏiBácSĩ";
return str;
}
} // End class CSTT

Вам также может понравиться