You are on page 1of 16

TRNG I HC CNG NGHIP H NI

KHOA CNG NGH THNG TIN

BO CO BI TP LN H CHUYN GIA
TI: Xy dng h chuyn gia nhn dng con vt
Gv hng dn: TS. Phm Vn H

Sinh vin thc hin:


1. L Thanh Ngh
2. Vn Lng
Lp: KHMT2 K5

H Ni 12/08/2013

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

Mc lc
Phn cng cng vic ............................................................................................................................... 2
I.

Phn tch bi ton ............................................................................................................................ 3

II.

Thit k chng trnh ..................................................................................................................... 3


1.

Kin trc chng trnh: ........................................................................................................... 3

2.

M hnh suy din .................................................................................................................... 3

3.

C s tri thc: ......................................................................................................................... 4

III.

Ci t chng trnh ................................................................................................................... 7


1.

Thut ton suy din tin .......................................................................................................... 7

2.

Thut ton gii thch li khuyn khi ngi dng nhn nt Gii thch ................................. 8

3.

Thut ton tm bao ng ......................................................................................................... 9

4.

Thut ton tm lut d tha ................................................................................................... 10

5.

Thut ton tm s kin d tha ............................................................................................. 11

IV.

Demo chng trnh ................................................................................................................... 14


1.

Giao din chnh ..................................................................................................................... 14

2.

Giao din qun l s kin ..................................................................................................... 14

3.

Giao din qun l tp lut ..................................................................................................... 15

TI LIU THAM KHO............................................................................................................................ 16

Phn cng cng vic


STT
1
2

H tn
L Thanh Ngh
Vn Lng

Cng vic
Tm hiu thut ton suy din tin, vit bo co
Tm hiu cc thut ton gii quyt d tha d liu

Nhm 27 Lp KHMT2-K5

I.

Mn: H chuyn gia

Phn tch bi ton

1. Mc ch
p dng cc kin thc hc, lp trnh mt chng trnh m phng, dng
h chuyn gia. H nhn dng mt s ng vt trong bi ny s dng c s tri
thc ngi dng da trn cc s kin ngi dng a vo. H chuyn gia s s
dng mt ng c suy din thch hp kt hp cc s kin ngi dng a
vo vi cc lut c xy dng sn tm c mc tiu thch hp.
2. Cch thc thc hin
- Ngn ng la chn: C#
- S dng c s d liu bao gm tp cc s kin, cc lut, lu tr trong
cc tp .txt.
- S dng 3 giao din: giao din chnh chy chng trnh (frmMain),
giao din trnh by (frmExplain), giao din qun l tp s kin, tp lut
(frmManagerRule)
- S dng cc thut ton nh suy din tin, thut ton tm bao ng, loi
b lut tha, s kin tha.

II.

Thit k chng trnh

1. Kin trc chng trnh:

Mt phin lm vic gm:


-

Mc tiu cn gii quyt

Ngi dng chn cc c im

a ra kt qu.

2. M hnh suy din


-

Cch la chn mc tiu:

H nhn dng ng vt a ra kt lun l ng vt g da trn cc c


im (thuc tnh) ni bt ca n. (Cc thuc tnh ny c xy dng sn
trong phn c s tri thc).
3

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

i vi mi thuc tnh, h s ghi nhn gi tr c hay khng c thuc tnh


thng qua cc la chn ca ngi dng, v a ra kt lun v con vt
da trn cc c tnh m n c.
H s dng suy din tin da trn cc lut tm c p n.
-

Biu din tri thc:

Tri thc ca h nhn dng ng vt gm tp cc s kin (gm cc c im


ca ng vt), tp lut
Cc s kin c biu din trong file text Node.txt.
Cc lut c biu din trong file Rule.txt gm 2 mnh mi lut, dng
lut dn If.then.
-

Cch thc suy din:

Hot ng ca h l i chng minh l mt con vt no da trn c s


tri thc v s la chn cc c im con vt ca ngi dng.
3. C s tri thc:
Thu thp tri thc v mt s c im ring phn loi ng vt da trn
phn nhm ng vt trong khoa hc sinh hc.
4. Cc thut ton c s dng
a. Thut ton suy din tin
Input:
- Tp cc mnh cho GT={gt1, gt2, gt3, gt4, gtm }.
- Tp cc lut R = { r1, r2, r3, r4,, rm} vi ri = p1^^ pn q vi i = 1,.., n.
- Tp KL = { q1,, qk}.
Output:
) u c suy ra t GT v tp
(
- Thng bo thnh cng nu
lut R
Phng php:/*

*/

/*TG l tp cc s kin(mnh ) ng cho n thi im ang xt*/


void SDT()
{
TG = GT

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

/* SAT l tp hp cc lut c dng p1^^ pn q, sao


)
(
cho
*/
SAT = Loc(R, TG)
while (KL TG) and (SAT ) do
{
(

)/*Ly lut r trong SAT*/


/*Gi s: ri = p1^^ pn q */
* +

* +

/*B sung v phi vo TG*/


/*Loi i lut p dng*/

/*Tnh li tp SAT*/

}
If

then exit (Thnh cng)

Else exit (Khng thnh cng)


}
b. Thut ton tm bao ng
Input: Tp thuc tnh X cn tnh bao ng trn lc quan h R=(U,F).
u ra: Tp thuc tnh X+
Phng php: /* Kim tra ln lt tng ph thuc hm fi = , nu

X+ th kt np v phi (tc ) vo vo X+: X+ := X+ .


Lp li cho n khi no X+ = Const.*/
void TimBaoDong()
{
flag = True;
X+ = X;
while Flag
{
Flag = False;
For mi fi =
{
If X+
{
5

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

X+ = X+ ;
Flag = True;
}
}
}
}
c. Thut ton tm ph ti thiu
Input : Lc quan h ban u Q v tp ph thuc hm F, s lng ph
thuc hm trong F l m.
Output : Tp ph thuc hm ti thiu ca F
Bc 1 :
Tch v phi mi ph thuc hm trong F sao cho v
phi ca mi ph thuc hm ch cha mt thuc tnh
(iu ny lun thc hin c do b trn)
f: X Y
F
A
Y
g = X A F = F
g
m = m + 1
Bc 2 : Tm tp ph thuc hm y bng cch loi
b cc thuc tnh d tha v tri ca tng ph
thuc hm.
f X A
F
B
X
X' =X B
If (X' A
F+) X = X'
Ch :
Vic tm tt c cc tp X' X theo thut ton trn
hon ton thay th c vic tm X' cch tm cc tp
con ca X.
Bc 3 : Loi b cc ph thuc hm d tha trong F.
f
F
G = F f {loi f ra khi F. v lu { F f} vo G }
If (F + = G+ ) {gi th tc kim tra F, G tng ng
di}

Nhm 27 Lp KHMT2-K5

III.

Mn: H chuyn gia

Ci t chng trnh

1. Thut ton suy din tin


/// <summary>
/// Thut ton suy din tin
/// </summary>
private void ForwardReasoning()
{
bool flag = false;
foreach (var item in listRule)
{
Stack THOA = new Stack();
ArrayList VET = new ArrayList();
string TGIAN = txtDacDiem.Text.Trim();
string KL = ((Rule)item).clauseRight;
if (KL.ToLower()[0] != 'b') continue;
FindTHOA(TGIAN, THOA, VET);
while (THOA.Count > 0 && !CheckedOfClause(TGIAN, KL))
{
Rule rule = (Rule)THOA.Pop();
VET.Add(rule);
TGIAN += "^" + rule.clauseRight;
if (CheckedOfClause(TGIAN, KL))
{
txtKetQua.Text = "y l " +
Common.ReadNameToDesc(KL) +"!";
flag = true;
break;
}
FindTHOA(TGIAN, THOA, VET);
}
temVET = VET;
}
if (!flag) txtKetQua.Text = "Khng tm thy con vt ph hp!";
}

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

2. Thut ton gii thch li khuyn khi ngi dng nhn nt Gii thch
protected void LoadExplain()
{
ArrayList listNode = new ArrayList();
LoadListNode(listNode);
if (VET == null) return;
string mes = "Qu trnh suy din:\r\n";
string exp = "Gii thch: \r\n";
foreach (var itemV in VET)
{
Rule r = (Rule)itemV;
mes += "Theo lut "+r.nameRule +": "+ r.clauseLeft + "=>"
+ r.clauseRight + " th:\r\n";
mes += Common.RuleToExplain(r) + "\r\n";
}
txtExplain.Text = mes;
}
public static string RuleToExplain(Rule rule)
{
string[] s = rule.clauseLeft.Split('^');
string left = "";
for (int i = 0; i < s.Length; i++)
{
if (i < s.Length - 1) left += ReadNameToDesc(s[i]) + " v
";
else left += ReadNameToDesc(s[i]);
}
return left + " => " + ReadNameToDesc(rule.clauseRight);
}

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

3. Thut ton tm bao ng


public static string timBaoDong(string baoDong, string[] R)
{
string result = baoDong;
bool flag = false;
bool[] flagArray = new bool[R.Length];
for (int i = 0; i < R.Length; i++)
{
flagArray[i] = false;
}
int count = 0;
bool flag2 = true;
while (!flag)
{
if (flagArray[count])
{
if (count == (R.Length - 1) && flag2)
{
break;
}
count++;
if (count == R.Length) { count = 0; flag2 = true; }

continue;
}
string s = R[count].Substring(0, R[count].IndexOf('='));
if (match(result, s))
{
flag2 = false;
flagArray[count] = true;
s = R[count].Substring(R[count].IndexOf('>') + 1);
if (!match(result, s))
{
result += "^" + s;
}

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

}
count++;
if (count == R.Length && flag2)
{
break;
}
if (count == R.Length)
{
flag2 = true;
count = 0;
}
flag = true;
foreach (bool item in flagArray)
{
if (!item)
{
flag = false;
break;
}
}
}
return result.ToString();
}

4. Thut ton tm lut d tha


private void bttRemove_Click(object sender, EventArgs e)
{
ArrayList arr = Common.GetList();
ArrayList DuThua = new ArrayList();
foreach (var item in arr)
{
string[] split = item.ToString().Split(':');
string clauseLeft =
split[1].Substring(0,split[1].IndexOf('='));
string clauseRight =
split[1].Substring(split[1].IndexOf('>')+1);
10

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

string[] strList = Common.ArrayListToArrayString(arr,


item.ToString());
string baodong = Common.timBaoDong(clauseLeft, strList);
if (Common.match(baodong, clauseRight))
DuThua.Add(item);
}
string ms = "Cc lut d tha:\r\n";
foreach (var item in DuThua)
{
ms += item.ToString() + "\r\n";
}
if (MessageBox.Show(ms, "Thng bo",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) ==
System.Windows.Forms.DialogResult.OK)
{
for (int i = 0; i < lstbDSLuat.Items.Count; i++)
{
if (ms.Contains(lstbDSLuat.Items[i].ToString()))
{
lstbDSLuat.Items.RemoveAt(i--);
}
}
}
Common.WriteTextToFile("Rule.txt", lstbDSLuat);
Common.LoadFileToListBox("Rule.txt",lstbDSLuat);
}

5. Thut ton tm s kin d tha


private void bttSuKienDuThua_Click(object sender, EventArgs e)
{
if (lstbDSLuat.SelectedIndex == -1)
{
MessageBox.Show("Bn hy chn 1 lut", "Thng bo");
return;
}
ArrayList arr = Common.GetList();
11

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

string[] R = Common.ArrayListToArrayString(arr);
string re =
lstbDSLuat.SelectedItem.ToString().Split(':')[1].Split('=')[0];
string[] ev = re.Split('^');
ArrayList Events = new ArrayList();
foreach (var item in ev)
{
string bd = Common.timBaoDong(Common.RemoveEvent(re,
item), R);
if (Common.match(bd, item))
Events.Add(item);
}
if (Events.Count == 0)
{
MessageBox.Show("Khng c s kin no d tha","Thng
bo");
return;
}
string ms = "Cc s kin d tha:\r\n";
foreach (var item in Events)
{
ms += item + "\r\n";
}
ms += "Bn c mun loi b cc s kin d tha ra khi
lut:\r\n"+lstbDSLuat.SelectedItem;
string te = lstbDSLuat.SelectedItem.ToString();
if (MessageBox.Show(ms, "Thng bo",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) ==
System.Windows.Forms.DialogResult.OK)
{
foreach (var item in Events)
{
string a = te.Substring(0, te.IndexOf(':') + 1) +
Common.RemoveEvent(re, item.ToString()) + te.Substring(te.IndexOf('='));
lstbDSLuat.Items[lstbDSLuat.SelectedIndex] = a;
}
12

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

Common.WriteTextToFile("Rule.txt", lstbDSLuat);
}
}

13

Nhm 27 Lp KHMT2-K5

IV.

Mn: H chuyn gia

Demo chng trnh

1. Giao din chnh

2. Giao din qun l s kin

14

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

3. Giao din qun l tp lut

15

Nhm 27 Lp KHMT2-K5

Mn: H chuyn gia

TI LIU THAM KHO


1. Gio trnh H Chuyn Gia
2. Cc h c s tri thc.
3. http://en.wikipedia.org/wiki/Expert_system
4. http://www.cs.nott.ac.uk/~sxp/ES3/sld001.htm

16

You might also like