Znalostní technologie I.
 Rozcestnik                   Pár slov ...                   Znalostní technologie II.                   Znalostní technologie III.                   Znalostní technologie IV.                   Další zdroje                  
Dnes je:        Aktuální čas: 00:00       Moudra: 

Pokračování LEKCE 2.

Jak je program Clipsem zpracováván

Píšeme první program v Clipsu


Veškerou činnost programu, který napíšete řídí tzv. inferenční mechanismus. Podle stavu báze faktů (= báze dat, báze znalostí, to co je uvedené v konstrukci deffacts) provádí příslušná pravidla (to co je v konstrukci defrule).

Provádí tři důležité činnosti:
  1. inferenční mechanismus vytvoří jakousi množinu aktivovaných pravidel - to je taková množina pravidel, která budou moci být v nejbližším okamžiku provedena, tedy ta pravidla, která mají splněnu podmínkovou část (jestliže takové pravidlo existuje, může být provedeno to co je definováno v usuzovací - akční části pravidla). Co znamená, že mají splněnu podmínkovou část? Podmínková část pravidla, kterou vytvoříte, se totiž porovnává s bází faktů (tedy s tím co vytvoříte v konstrukci deffacts). A jestliže tato báze faktů obsahuje taková data - fakta, která jsou postačující pro to, aby bylo dané pravidlo vykonáno, tak pak bude moci být pravidlo vykonáno. Takové pravidlo se Vám objeví v okně Agenda. Agenda je tvořena množinou těch aktivovaných pravidel.
  2. po vytvoření této množiny aktivovaných pravidel, inferenční mechanismus vybere jedno pravidlo. To které bude vybráno závisí na dané řídící strategii. Tato strategie se volí v Clipsu - Execution/Options/Strategy.
  3. nakonec inferenční mechanismus vybrané pravidlo vykoná. V agendě můžete pozorovat, že dané pravidlo z ní zmizí. To co bude pravidlem provedeno závisí na tom, co jste v usuzovací-akční části pravidla napsali. Například můžete přidat nějaký fakt do báze faktů nebo nějaký fakt zrušit.

Tedy inferenční mechanismus je to algoritmus, který zajišťuje vykonávání pravidel na základě stavu báze faktů. Určuje jak a v jakém pořadí budou tato pravidla aplikována. Můžeme postupovat ve směru od počátečního stavu k cílovému. Pak mluvíme o strategii řízené daty (data driven strategy nebo jinak dopředné/přímé řetězení) nebo od cílového stavu směrem k počátečnímu. Pak se jedná o strategii řízenou cílem (goal driven strategy nebo jinak zpětné řetězení).

Píšeme první program v Clipsu

Půjdeme krok po kroku. Od nejjednodušších záležitostí k těm těžším (ale nebojte, ne zas tak moc). Program budeme postupně rozšiřovat.

Úloha č.1:

Zadání:
  1. Evidujte různé krevní skupiny v bázi faktů
  2. Všechny krevní skupiny vypište
  3. Evidujte různé osoby a jejich krevní skupiny
  4. Vypište všechny osoby jejichž krev známe
  5. Vypište jen ty osoby, které mají krev B
  6. Vypište jen ty osoby, které mají krev AB, v případě, že taková krev není evidována, tento případ ošetřete.
  7. Evidujte jaké krevní skupiny jsou navzájem kompatibilní (stačí 2 - 3)
  8. Zjistěte jaká krevní skupina je ke zkoumané skupině kompatibilní.
Stáhnout řešení: (krev_1.clp a krev_2.clp)

Vysvětlení:

1/ Evidujte různé krevní skupiny v bázi faktů (soubor: krev_1.clp)

2/ Všechny krevní skupiny vypište (soubor: krev_1.clp)

Zobrazení řešení první a druhé části úlohy 1.

Pro to, abychom vypsali všechny krevní skupiny stačí jedno pravidlo. Jak vidíte, je zde jen jedna podmínka: (skupina ?nejaka) … tzn. jako byste se ptali: za podmínky, že v bázi faktů je nějaká krevní skupina (?nejaka) evidována, pak tyto všechny skupiny (?nejaka) vypiš. Pro vypsání se používá funkce printout t. Pro odřádkování - crlf.

Jak to tedy funguje?

Výzkum podmínkové části pravidla

  (skupina ?nejaka)

Ve struktuře deffacts máte uvedeny konkrétní skupiny takto:

  (skupina A)
  (skupina B)
  (skupina 0)
  (skupina AB).

Aby inferenční mechanismus věděl s jakými fakty chcete pracovat, pak v podmínkové části pravidla musíte uvést přesné znění dané relace tzn. v našem příkladu skupina (pozor na velká a malá písmena). Pak se inf. mech. podívá právě do struktury deffacts, kde je název dané relace s názvem skupina. Ale protože chcete vypsat konkrétní krevní skupiny, musíte využít v podmínkové části pravidla k relaci proměnnou, která bude zastupovat konkrétní krevní skupinu (A, B, 0, AB). Z toho vyplývá, že podmínková část pravidla je splněna pro 4 fakty (pro skupinu A, B, 0 a AB).

Vysvětlení pravidla vypis_vsechny_skupiny

Výzkum usuzovací části pravidla

Tedy pravidlo s názvem vypis_vsechny_skupiny se provede 4-krát. Nesmíte zapomenout uvést co chcete vypsat - opět uvedete daný název proměnné, který musí být stejný jako ten název proměnné uvedený v podmínkové části pravidla, aby inf. mech. věděl, co chcete vypisovat. Velmi jednoduše můžete vyzkoumat, jak vše toto funguje, pomocí krokování. Funkcí Reset způsobíte to, že v Agendě uvidíte danou množinu aktivovaných pravidel (tedy těch, které mohou být vykonány). Pak nedáte Run, ale Step (Execution/Step). Tím způsobíte, že se Vám vykoná jen jedno pravidlo z celkových čtyř a v Agendě tím pádem pravidlo z Agendy zmizí. To opakujete do té doby, dokud v Agendě nezbude žádné pravidlo, které by se mohlo vykonat.



<== Zpět       ^ Nahoru ^       Pokračování ==>


Validace

Valid XHTML 1.0 Strict

Valid CSS!

Monitoring webu