|
OdvozováníÚvod... Odvozování na základě pravidel - Inferenční mechanismusInference v systému NEST je kombinací zpětného a přímého řetězení. Na začátku konzultace systém vezme všechny cíle
(cílem je buď výrok, který není použit v předpokladu žádného pravidla, nebo výrok, který uživatel označí jako cílový),
postupně je označuje jako „aktuální“ a snaží se je vyhodnotit. „Aktuální“ výrok je nejprve vyhodnocován metodou zpětného odvozování následujícím způsobem:
- je zkontrolováno, není-li aktuální výrok již vyhodnocen (nachází se ve stavu „final“). Pokud ano, je
vyhodnocování ukončeno;
- následuje zjištění, z jakých zdrojů se má váha výroku zjišťovat. Pokud je zdroj jiný než „inference“, je
vyhodnocování přerušeno a je spuštěn příslušný zdroj. Pokud zdroj není uveden, použije se „inference“;
- jsou zjištěna všechna pravidla, ve kterých je výrok v závěru. Pokud neexistuje žádné takové pravidlo, je
vyhodnocování přerušeno a je položen dotaz uživateli (efekt je stejný, jako by byl u výroku zadán zdroj „uživatel“).
Jsou-li známy příspěvky všech pravidel, je odvozena výsledná váha výroku (pomocí funkce GLOB - viz práce s neurčitostí),
stav výroku je označen jako finální a vyhodnocování je ukončeno (nikoliv přerušeno). Pokud nejsou známy příspěvky
všech pravidel, pravidla jsou seřazena dle zadané priority pravidel (od začátku, od konce, minimální délka, maximální
délka, dle zadání experta), vezme se první nevyhodnocené pravidlo a pokusí se zjistit jeho příspěvek následovně:
- pokud není známa váha kontextu, zjistí váhu kontextu (probíhá stejně jako zjišťování váhy předpokladu). Je-li
váha kontextu (její maximální hranice) menší nebo rovna prahu platnosti kontextu, je příspěvek pravidla „IRRELEVANT“
(tj. nulový);
- je zjištěna váha předpokladu tak, že nejprve je zjištěna váha všech výrazů (u výroků se vezme jejich váha,
u konjunkcí je váha jednotlivých výroků vyhodnocena pomocí funkce CONJ) a jednotlivé výrazy jsou vyhodnoceny pomocí
funkce DISJ. Pokud váha některého výroku není známa (výrok není ve stavu „final“), je tento výrok označen
za „aktuální“ a je pro něj spuštěno vyhodnocování;
- pomocí funkce CTR je spojena váha předpokladu a váha kontextu (má-li pravidlo kontext) a výsledná váha je
opět pomocí funkce CTR spojena s vahou jednotlivých závěrů. Tím je pravidlo vyhodnoceno a jeho stav je označen
jako „final“ (zároveň jsou spuštěny jeho akce).
Je-li odvozování přerušeno, je zjištěn atribut, od kterého je odvozen výrok, při jehož vyhodnocování došlo k přerušení.
Hodnota tohoto atributu je zjištěna z příslušného zdroje (dotazem od uživatele nebo ze souboru či externí funkce). Poté, co je
hodnota zjištěna, je spočítána příslušná váha všech výroků, které jsou od daného atributu odvozeny a jejich stav je
označen jako „final“. (Stejně jsou vzaty i výroky odvozené od numerických atributů, které mají jako zdroj daný atribut.)
Tyto výroky jsou postupně brány a je pro ně spuštěno přímé odvozování, které probíhá takto:
- pro výrok jsou zjištěna všechna pravidla, ve kterých je výrok v předpokladech;
- pravidlo je vyhodnoceno stejným způsobem, jako tomu bylo při zpětném odvozování s tím rozdílem, že pokud
při vyhodnocování nějakého výroku z předpokladu pravidla dojde k přerušení, toto přerušení je ignorováno a místo
toho je ukončeno vyhodnocování tohoto pravidla (to znamená, že se neposílá dotaz uživateli ani není použit jiný
zdroj);
- je-li pravidlo úspěšně vyhodnoceno, procházejí se postupně výroky ze závěrů pravidla. Tento výrok je nejprve
vyhodnocen metodou zpětného odvozování s tím, že je opět ignorováno přerušení a místo něj je vyhodnocování
výroku ukončeno. Pokud se povede výrok vyhodnotit, je pro něj spuštěna metoda přímého odvozování.
Když jsou probrány všechny výroky metodou přímého odvozování, je celé odvozování spuštěno nanovo. Odvozování na základě podobnosti...
|
|
|