Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Інтелектуальні системи Методичні вказівки до ви...doc
Скачиваний:
7
Добавлен:
25.11.2019
Размер:
4.88 Mб
Скачать

Завдання на лабораторну роботу.

Завдання: Маємо ємність заповнену рідиною. Рідина підігрівається парою, при досягненні температури 85С, потрібно перекрити клапан подачі пари, вивести повідомлення про те що закрився клапан подачі пари та відкрити клапан зливу рідини і також вивести повідомлення. При досягненні нижнього рівня закрити клапан зливу рідини та вивести повідомлення на екран.

Програма повинна мати два правила.

Записати до протоколу конструкцію фактів, побудовані правила та хід виконання програми в середовищі CLIPS.

Методика лабораторної роботи. Мова програмування clips.

CLIPS (назва якого являє собою скорочення від C Language Integrated Production System  продукційна система, інтегрована з мовою C)  це мова програмування, що дозволяє використовувати цілий ряд підходів, що забезпечує підтримку програмування на основі правил, об’єктно-орієнтованого та процедурного програмування. Мова CLIPS була розроблена з використанням мови програмування С у космічному центрі NASA/Джонсон.

Після запуску програми CLIPS на екрані з’являється запрошення, яке повідомляє користувачу, що він працює з інтерпретатором:

CLIPS (V6.241 06/19/07)

CLIPS>

В режимі інтерпретатора користувач може виконувати багато команд. Всі команди в CLIPS записуються в круглих дужках. Наприклад команда exit  вихід з програми CLIPS:

CLIPS> (exit)

Поля в системі clips.

В системі CLIPS присутні такі поля: число з плаваючою крапкою, ціле число, символ, рядок, зовнішній адрес, адреса факту, ім’я екземпляра і адреса екземпляра.

Розглянемо тільки такі поля: символ та рядок.

Символи – це набір знаків (чисел та літер), між якими немає розділяючих знаків, до яких відносяться: знаки табуляції, повернення каретки, та " ( ) < ; & | ~.

Символи не повинні починатися з таких знаків, як ? та $?.

Приклади символів:

fire

45-23-2

shut-down

month_May

!?#$^*

Система CLIPS чутлива до реєстру, тому символи:

system

SYSTEM

System

сприймаються системою, як різні символи.

Рядки повинні починатися і закінчуватися подвійними лапками.

Приклад:

"month May"

Наступні рядки сприймаються системою, як різні:

"expert"

" expert"

"expert "

" expert "

Щоб записати в рядок подвійними лапками використовують знак \.

Приклад:

"\"expert\""

Так само записується в рядок знак \.

"\\expert\\"

Робота з фактами в системі clips.

Факти в CLIPS складаються з ім’я відношення (символічного поля), за яким іде від нуля та більше слотів1 (символічне поле) і зв’язаних з ними значень.

Приклад:

(person (name "John Public")

(age 23)

(eye-color blue)

(hair-color black))

Факт починається і закінчується круглими дужками, після відкритої дужки іде ім’я відношення person, а потім в круглих дужках ім’я слоту name, age, eye-color, hair-color та значення слоту "John Public", 23, blue, black.

Щоб задати факт системі CLIPS, для початку потрібно визначити конструкцію факту. Конструкця факту задається через ключове слово deftemplate. Формат конструкції виглядає наступним чином:

(deftemplate <relation-name> [<optional-comment>]2

<slot-definition>)

Запис <optional-comment>  коментарі, що записуються в подвій них лапках.

Запис <slot-definition> визначається наступним чином:

(slot <slot-name>) | (multislot <slot-name>)

Знак | означає, що <slot-definition> можна записувати одним із двох варіантів.

Значення слоту name "John Public" представлений як рядок, тобто одне значення. Для того, щоб John та Public були двома різними значеннями в конструкції замість slot пишуть multislot

Отже визначимо конструкцію для факту person:

(deftemplate person "Example"

(slot name)

(slot age)

(slot eye-color)

(slot hair-color))

Факти в системі CLIPS можуть не мати конструкції deftemplate, такі факти називаються упорядкованими фактами. Ці факти використовуються в двох випадках.

По-перше, в якості прапорців, наприклад показати, що виконані всі замовлення:

(all-orders-processed)

По-друге, для фактів, що мають один слот, ім’я слоту стає синонімом імені відношення, наприклад:

(time 16:00)

що пропорційне такому факту:

(time (value 16:00))

Після того, як ми визначили конструкцію для факту person добавимо в систему CLIPS факт за допомогою команди assert, що має такий синтаксис:

(assert <fact>+)

де <fact>+  означає, що додається один або декілька фактів.

Добавимо факт person в систему CLIPS:

CLIPS> (deftemplate person "Example"

(slot name)

(slot age)

(slot eye-color)

(slot hair-color))

CLIPS> (assert (person (name "John Public")

(age 23)

(eye-color blue)

(hair-color black)))

<Fact-0>

CLIPS>

Значення <Fact-0> означає, що добавлений факт з індексом 0.

Для перегляду фактів, що присутні в системі CLIPS (в списку фактів) існує команда facts:

CLIPS> (facts)

f-0 (person (name "John Public")

(age 23)

(eye-color blue)

(hair-color black))

For a total of 1 fact.

CLIPS>

Для видалення фактів існує команда retract:

(retract <fact-index>+)

де <fact-index>+  один або декілька індексів фактів.

Для модифікації фактів існує команда modify:

(modify <fact-index> <slot-modifier>+)

<slot-modifier> має вид (<slot-name> <slot-value>).

CLIPS> (modify 0 (age 30))

<Fact-1>

CLIPS> (facts)

f-1 (person (name "John Public")

(age 30)

(eye-color blue)

(hair-color black))

For a total of 1 fact.

Команда modify видаляє факт з індексом 0 та добавляє факт з індексом 1.