Rozšírený dopredný produkčný systém

Produkčný systém napísaný v jazyku PROLOG by mal zvládať aj pravidlá typu M z N. To znamená, že ak má pravidlo napríklad 5 elementárnych podmienok, a má atribút MN nastavený na 3, tak na splnenie tohoto pravidla stačí, aby malo splnené tri z týchto elementárnych podmienok. Ak pravidlo obsahuje špeciálne podmienky, musia byť splnené tie z nich, ktoré majú naviazané premenné, to znamená že parameter MN sa týka len normálnych podmienok – typ VZOR faktu.

Atribút priorita hovorí o tom, ktoré pravidlo (aplikovateľná inštancia) sa vyberie na vykonanie. Vyberie sa vždy pravidlo, ktoré má v danom kroku najvyššiu prioritu. Ak by bolo viac pravidiel s rovnakou prioritou, vyberie sa podľa poradia.
Priorita je dynamická a v našom prípade sa počíta ako súčin statickej priority a pomeru splnených ku všetkým elementárnym podmienkam. (Len typ VZOR.)
Ak máme dve pravidlá so statickou prioritou 10, obe sú typu 3 z 5, prvé pravidlo má splnené tri podmienky a druhé štyri, tak výpočet priority bude:
Prvé: 10 * 3 / 5 = 6
Pruhé: 10 * 4 / 5 = 8
a vykoná sa druhé pravidlo, lebo v danom kroku má vyššiu prioritu.

Okrem špeciálnej podmienky nerovná sa "<>" je potrebné vytvoriť aj porovnania na väčší ">" a menší "<", prípadne väčší a rovný a podobne.

Nasledujúci príklad bázy poznatkov je veľmi zjednodušená verzia lekárskeho diagnostického systému. Je k dispozícii jedna báza pravidiel. Postupne prídu traja pacienti, každý s nejakými príznakmi. Ich príznaky sú uvedené v jednotlivých bázach faktov. Systém by mal v každom z týchto prípadov nájsť správne riešenie. (Aktuálne – príznaky pre COVID-19 sú zvyčajne rovnaké ako pri chrípke.)

Špeciálna báza znalostí.
Pravidlá sú typu M z N a majú prioritu.
Pre angínu
FAKTY:
(teplota 38.5)
(bolest hrdla)
(pocit na dávenie)
(nabeh choroby postupny)

PRAVIDLÁ:

DIAG1:
MN 3
PRIORITA 5
AK ((teplota ?T)(bolest hrdla)
    (bolest hlavy)(pocit na dávenie)(> T 38.2))
POTOM ((pridaj mozne ochorenie angina)
       (sprava Mozne ochorenie: angina))

DIAG2:
MN 3
PRIORITA 5
AK ((nadcha)(teplota ?T)(mierny kasel)
    (nabeh choroby postupny)(< T 38.3))
POTOM ((pridaj mozne ochorenie viroza)
       (sprava Mozne ochorenie: viroza))

DIAG3:
MN 4
PRIORITA 5
AK ((unava a malatnost)(bolest svalov)
    (teplota ?T)(pocit zimnice)(suchy kasel)
    (nabeh choroby rychly)(> T 38.5))
POTOM ((pridaj mozne ochorenie chripka)
       (sprava Mozne ochorenie: chripka))

Pre chrípku

FAKTY:
(unava a malatnost)
(bolest svalov)
(bolest hlavy)
(teplota 39.5)
(pocit zimnice)
(suchy kasel)
(nabeh choroby rychly)
(nadcha)

Pre prechladnutie (virózu)

FAKTY:
(nadcha)
(bolest hlavy)
(teplota 37.3)
(nabeh choroby postupny)