Представлення неточних знань та стратегії неточного виводу в умовах невизначеності
(Astra-2200 of СКАНЕР (формат A4) (розв”язність 600*1200) (глибина кольору 36 bit)))
(defmessage-handler СКАНЕР Print-slots (PP instance))
(SEND Astra-2200 of СКАНЕР Print-slots)
Message handler Print-slots буде працювати для всіх підкласів, які ми можемо визначити для класу СКАНЕР. Головна різниця між об”єктом і невпорядкованим фактом заключається в понятті успадкування (inheritance). Успадкування дозволяє описати властивості та поведінку класу в термінах інших класів. Система СИКОН підтримує множинне успадкування : клас може прямо успадковувати слоти і message handlrer’и від більше чим від одного класу.
1.3Продукційні правила.
Синтаксис
(defrule <ім”я правила> [<коментар>] [<декларація>]
<умовний елемент>* ; антецедент або Ліва Частина (ЛЧ)
=> <дія>*) ; консеквент або Права Частина (ПЧ)
Символ “*” в визначенні означає один або множину елементів зв”язаних кон”юнкцією, текст після символу “;” означає коментар.
Правило є сукопність умов (ЛЧ) і дій (ПЧ), які повинні бути здійснені при виконанні умов. Умовний елемент лівої частини правила називається також паттерном ( patterns). Стрілка (=>) відділяє ЛЧ від ПЧ. Правила визначаються з допомогою конструкції defrule.
Виконання правил (або запалення) базується на існуванні або неіснуванні паттернових сутностей(фактів або об”єктів). Машина виводу системи СИКОН робить спроби порівняти паттерни ЛЧ з паттерновими сутностями поточного стану системи і застосовує дію правої частини. Дія правила є функція, яка типово не повертає значення, а здійснює деяку корисну дію, таку як затвердити (assert) або викреслити (retract).
Приклад правила:
(defrule приклад-правила (рефріжератор світло включене) (рефріжератор двері відчинені)
=> (assert (рефріжератор їжа зіпсована)))
1.4Стратегія розв”язування конфліктів.
Якщо всі паттерні правила порівнюються з паттерновими сутностями поточного стану системи, правило активується і ставиться на порядок денний (agenda). Порядок денни є сукупністю активацій тих правил, які порівнялись з паттернами сутності. Окрема підмножина правил може бути згрупована в модулі з допомогою конструкцій defmodule. Кожний модуль має свій порядок денний. Коли є багато активацій на порядку денному машина виводу визначає яку активацію слід запалити. Термін запалення означає, що СИКОН вибрала відповідне правило для виконання з порядку денного. Порядок денний діє подібно стеку. СИКОН впорядковує активації на порядку денному в термінах зростаючого пріорітету. СИКОН завжди виконує дію правої частини верхнього правила на порядку денному. Це правило потім видаляється з порядку денного і виконується дія нового верхнього правила порядку денного. Цей процес продовжується поки не залишиться ні однієї активації або не зустрінеться команда зупинитись.
Впорядкування на порядку денному базується на таких факторах:
Заново активоване правило розміщається вище всіх правил з нижчим пріорітетом та нижче всіх правил з вищим пріорітетом;