60 likes | 176 Views
JUI - 11. přednáška Příklad využití Prologu pro tvorbu expertních systémů. RNDr. Jiří Dvořák, CSc. dvorak@uai.fme.vutbr.cz. Nová syntaxe pravidel a faktů. Pravidla: if podmínka then závěr Podmínka může být složena z jednoduchých podmínek spojených pomocí and a or .
E N D
JUI - 11. přednáškaPříklad využití Prologu pro tvorbu expertních systémů RNDr. Jiří Dvořák, CSc. dvorak@uai.fme.vutbr.cz
Nová syntaxe pravidel a faktů • Pravidla: • if podmínka then závěr • Podmínka může být složena z jednoduchých podmínek spojených pomocí and a or. • Zavedení nových operátorů • :-op(800,fx,if). • :-op(700,xfx,then). • :-op(300,xfy,or). • :-op(200,xfy,and). • Fakta: • fact(tvrzení).
Interpret pro novou syntaxi • is_true(P):-fact(P). • is_true(P):-if Podmínka then P, • is_true(Podmínka). • is_true(P1 and P2):-is_true(P1),is_true(P2). • is_true(P1 or P2) :-is_true(P1);is_true(P2). • Nevýhodou této jednoduché inferenční procedury je skutečnost, že uživatel musí zadat všechna relevantní fakta ještě před zahájením procesu usuzování. • Fakta by se měla zadávat interaktivně v dialogu s expertním systémem v okamžiku, kdy jsou zapotřebí.
Mechanismus dopředného řetězení • forward:-new_derived_fact(P),, • write('Odvozeno:'),write(P),nl, • assert(fact(P)),forward; • write('Zadna dalsi fakta:'). • new_derived_fact(Zaver):- • if Podm then Zaver, not fact(Zaver), • composed_fact(Podm). • composed_fact(Podm):-fact(Podm). • composed_fact(Podm1 and Podm2):- • composed_fact(Podm1),composed_fact(Podm2). • composed_fact(Podm1 or Podm2):- • composed_fact(Podm1);composed_fact(Podm2).
Vysvětlovací mechanismus • :-op(800,xfx,<=). • is_explained(P,P):-fact(P). • is_explained(P,P <= DukazPodm):- • if Podm then P,is_explained(Podm,DukazPodm). • is_explained(P1 and P2, Dukaz1 and Dukaz2):- • is_explained(P1,Dukaz1),is_explained(P2,Dukaz2). • is_explained(P1 or P2,Dukaz):- • is_explained(P1,Dukaz);is_explained(P2,Dukaz). • Tento mechanismus poskytne vysvětlení, jak se dospělo k výsledku. Jde v podstatě o generování důkazního stromu. • is_explained(P,Dukaz) platí, jestliže Dukaz je důkaz, že P platí.
Zpracování neurčitosti • :-op(900,xfx,::). • certainty(P,Jist):-given(P,Jist). • certainty(P,Jist):- • if Podm then P :: J1, • certainty(Podm,J2), • Jist is J1*J2. • certainty(Podm1 and Podm2,Jist):- • certainty(Podm1,Jist1), • certainty(Podm2,Jist2), • Jist is min(Jist1,Jist2). • certainty(Podm1 or Podm2,Jist):- • certainty(Podm1,Jist1), • certainty(Podm2,Jist2), • Jist is max(Jist1,Jist2).