Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Course_Jura (1).doc
Скачиваний:
5
Добавлен:
17.12.2018
Размер:
929.28 Кб
Скачать

2.4 Продукційна модель предметної області

Продукційна модель, або модель, базована на правилах - одна з моделей представлення знань, вона дозволяє представити знання у вигляді речень виду «Якщо (умова) то (дія)».

Умовна частина продукції — Умова1, Умова2, …, УмоваN ще інакше називається антецедент або засновок (англ. відповідники premise, antecedent).

Дієва частина продукції або дія — Дія ще інакше називається консеквент або висновок (англ. result, conclusion, consequence). Умовою (антецедентом) є деяке речення-зразок, за яким здійснюється пошук в базі знань, а дією (консеквентом) — дії, що виконуються при успішних результатах пошуку. Умови, що описують поточний стан бази знань, розміщуються в робочій пам'яті. Виконувані дії можуть бути проміжними, що визначають умови для наступних дій, які утворюють конфліктну множину продукційної системи. Вивід в такій базі знань може бути прямим (від даних), або зворотним (від цілі до даних). Даними є вихідні факти, що надходять в робочу пам'ять (базу фактів), на основі яких запускається машина виводу, що здійснює цикл «розпізнавання-дія» перебираючи правила з продукційної бази знань.

Продукційна модель найчастіше використовується в промислових експертних системах. Наприклад, у медичній експертній системі правила if…then можуть використовуватися для встановлення взаємозв'язків між симптомами і діагнозами. Під час виведення реальний симптом зіставляється з тим, які є в лівих частинах правил і в разі збігу права частина відповідного правила вважається можливим діагнозом. Якщо є інші правила, що містять у лівих частинах отриманий можливий діагноз, то він розглядається як проміжний симптом. У цьому випадку здійснюється подальше виведення, яке триває доти, доки не буде отримано результат, з якого вже нічого не можна вивести. Якщо більше немає правил, на основі яких можна зробити виведення з отриманого можливого діагнозу, то він розглядається як <<остаточний>>.

Группа 681 На будь-якому кроці такого виведення може виявитися кілька застосовних правил і тоді породжується дерево виведення, що визначає множину діагнозів.

Продукційна модель приваблює користувачів відносною простотою, наочністю, високою модульністю, легкістю до внесення змін та доповнень, простотою схеми логічного виводу. Існує велика кількість програмних засобів, що реалізують продукційну модель. Це так звані оболонки, або «пусті» бази знань. Прикладами таких баз знань є EXSYS, RuleBook, ЭКО та ін.

Продукційна модель експертної системи управління персонажами:

  1. Система визначає рівень загальних показників

  2. На основі показників вибирається якісний товар

    1. Програмна реалізація продукційної моделі на мові clips

CLIPS, (від англ. C Language Integrated Production System) – програмне середовище для розробки експертних систем. Синтаксис і назва запропоновані Чарльзом Форго (Charles Forgy) в OPS (Official Production System). Перші версії CLIPS розроблялися з 1984 року в Космічному центрі Джонсона (Johnson Space Center), NASA (як альтернатива існувала тоді системі ART * Inference), поки на початку 1990-х не було припинено фінансування, і NASA змусили купити комерційні продукти.

CLIPS є продукційної системою. Основна ідея полягає в представленні знань у вигляді такої форми:

Правило1:     ЯКЩО (виконуються умова 1)     ТОДІ (виконати дію 1)   Правіло2:     ЯКЩО (виконуються умова 2)     ТОДІ (виконати дію 2)  

Текст програми на мові CLIPS:

(deftemplate exist

(slot object)

)

(defrule overtake_enemy

(exist (object "Enemy"))

=>

(printout t "Overtake Enemy" crlf)

)

(defrule take_bonus

(exist (object "Bonus"))

=>

(printout t "Take Bonus" crlf)

)

;;; (assert (exist))

;;; (assert (exist (object "Enemy")))

;;; (assert (exist (object "Bonus")))

;;; (run)

(deftemplate bot

(slot location)

(slot health)

(slot score)

)

(defrule go_to_next_point

(bot (location "Control Point"))

=>

(printout t "Go to the next control point" crlf)

)

(defrule shoot_enemy

(bot (location "Near enemy"))

=>

(printout t "Shoot enemy" crlf)

)

(defrule remove_bot

(bot (health "0"))

=>

(printout t "Remove bot" crlf)

)

(defrule win_round

(bot (score "10"))

=>

(printout t "Bot won the round" crlf)

)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]