- •Лабораторне заняття № 1 Ознайомлення з мовою програмування Пролог
- •1.1 Загальні відомості про мову Пролог
- •1.2 Елементи мови Пролог
- •1.3 Структура програм Пролога
- •1.3.1 Секція domains Пролог-програми
- •1.3.2 Секція predicates
- •1.3.3 Секція clauses
- •1.3.4 Секція goal
- •1.3.5 Секція database
- •1.4 Розробка найпростішого інтерфейсу програми
- •1.5 Використання структур як доменів відношень
- •1.6 Процедури як елемент представлення знань
- •1.7 Цілісність і несуперечність баз даних і знань
- •1.8 Зміст звіту з лабораторної роботи
- •Лабораторна робота № 2 Керування ходом виконання програм у системі Пролог
- •2.1 Робота системи Пролог при виконанні запитів
- •2.2 Уніфікація термів
- •2.3 Пошук з поверненням при виконанні Пролог-програм
- •2.4 Використання відкату після невдачі для організації найпростішого інтерфейсу виводу
- •2.5 Організація повторюваних процесів
- •2.6 Керування пошуком з поверненням
- •2.7 Керування ходом виконання програм з використанням відсікання
- •2.8 Застосування предикату not -- заперечення як неуспіх
- •2.9 Використання методу відкату і відсікання
- •2.10 Відкат і відсікання при реалізації відносин типу „один-до-багатьох”
- •2.11 Ступінчаті функції і відсікання
- •2.12 Труднощі у використанні відсікання і заперечення
- •2.13 Зміст звіту з лабораторної роботи
- •Лабораторна робота № 3 Рекурсія і рекурсивні процедури в Пролозі
- •3.1 Визначення поняття рекурсії
- •3.2 Склад рекурсивної процедури
- •3.3 Особливості виконання рекурсивних процедур Прологом-системою
- •3.4 Приклад рекурсивної процедури пошуку довжини маршруту на графі
- •3.5 Обмеження і властивості, що забезпечують цілісність відношень
- •3.6 Зміст звіту з лабораторної роботи
- •Лабораторна робота № 4 Списки і процедури їх обробки
- •4.1 Списки як рекурсивні структури даних
- •4.2 Використання списків у Пролог-програмах
- •4.3. Найпростіші процедури роботи зі списками
- •4.4 Процедури обробки списків
- •4.5. Компонування даних у список
- •4.6. Зміст звіту з лабораторної роботи
- •Лабораторна робота № 5 Способи представлення баз даних у Пролог-програмах
- •5.1 Вступ
- •5.2 Представлення відносин у вигляді фактів
- •5.3 Представлення атрибутів у вигляді фактів
- •5.4 Представлення бази даних у вигляді списку структур
- •5.5 Представлення бази даних у вигляді лінійної рекурсивної структури
- •5.6 Представлення бази даних у вигляді двійкового дерева
- •5.7 Порівняння різних видів представлення бази даних
- •Лабораторна робота № 6 Динамічні бази даних
- •6.1 Вступ
- •6.2 Прості прийоми роботи з динамічними бд
- •6.3 Зв’язок статичних і динамічних баз даних
- •6.4 Процедура роботи з динамічною бд, що навчається у користувача
- •6.5 Розширення бази даних у файли
- •6.6. Організації файлових бд на основі файлів прямого доступу
- •6.6. Особливості представлення динамічних баз даних у Visual Prolog
- •6.7 Зміст звіту з лабораторної роботи
- •Лабораторна робота № 7 створення простої експертної системи
- •7.1 Вступ
- •7.2 Завантаження бази знань і режим консультації
- •7.2 Структура бази знань esta
- •7.3 Формати файлів баз знань в esta
- •7.4 Елементарні прийоми роботи з секціями
- •7.5 Елементарні прийоми роботи з параметрами
- •7.6. Зміст звіту з лабораторної роботи
- •Лабораторна робота № 8 розробка нечітких систем керування з використанням fuzzy logic toolbox математичного пакета matlab
- •8.1 Вступ
- •8.2 Склад графічного інтерфейсу
- •8.3 Редактор бази знань RuleEditor
- •8.4 Вступ Приклад виконання роботи
- •8.5 Зміст звіту з лабораторної роботи
- •8.6 Контрольні питання
- •Лабораторна робота № 9 порівняльне дослідження роботи алгоритмів мамдані та сугено
- •9.1 Вступ
- •9.2 Алгоритм Мамдані (Mamdani)
- •9.3 Алгоритм Сугено (Sugeno)
- •9.4 Порядок виконання роботи
- •9.5 Зміст звіту з лабораторної роботи
- •9.6 Контрольні питання
- •Список використаних джерел
- •Додаток а Службові предикати Пролога для роботи з файлами
- •Додаток б Індивідуальні завдання До лабораторних робіт № 1, 2, 4
- •Додаток в Індивідуальні завдання До лабораторної роботи № 3
- •Додаток г Індивідуальні завдання до лабораторної роботи № 5
- •Додаток д варіанти завдань до виконання лабораторної роботи № 7
- •Тема 11. Експертна система аналізу поточної успішності студентів на факультеті.
- •С.В. Зікратий, х.В. Паньків системи штучного інтелекту лабораторний практикум
С. В. Зікратий
Х. В. Паньків
СИСТЕМИ ШТУЧНОГО ІНТЕЛЕКТУ
ЛАБОРАТОРНИЙ ПРАКТИКУМ
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Івано-Франківський національний технічний університет
нафти і газу
Кафедра комп’ютерних технологій в системах управління та автоматики
С. В. Зікратий
Х. В. Паньків
СИСТЕМИ ШТУЧНОГО ІНТЕЛЕКТУ
ЛАБОРАТОРНИЙ ПРАКТИКУМ
Івано-Франківськ
2015
УДК 681.5
ББК 32.965
З-12
Рецензент:
Николайчук М. Я. кандидат технічних наук, доцент кафедри комп’ютерних технологій в системах управління та автоматики Івано-Франківського національного технічного університету нафти і газу
Рекомендовано методичною радою університету
(протокол № 5 від 17.04.2014 р.)
Зікратий С. В., Паньків Х. В.
З-12 Системи штучного інтелекту: лабораторний практикум – Івано-Франківськ: ІФНТУНГ, 2015. – 91 с.
МВ 02070855-9024-2014
Лабораторний рактикум містить короткі теоретичні відомості та завдання до лабораторних робіт з дисципліни “Системи штучного інтелекту”. Розроблений відповідно до робочої програми даної навчальної дисципліни. Призначено для підготовки бакалаврів денної та заочної форм навчання за напрямом підготовки 6.050201 “Системна інженерія”.
УДК 681.5
ББК 32.965
М
В
02070855-9024-2014 ©
Зікратий С.
В.
Паньків Х.В.
© ІФНТУНГ, 2015
УДК 681.5
ББК 32.965
З-12
Рецензент:
Николайчук М. Я. кандидат технічних наук, доцент кафедри комп’ютерних технологій в системах управління та автоматики Івано-Франківського національного технічного університету нафти і газу
Рекомендовано методичною радою університету
(протокол № 5 від 17.04.2014 р.)
Зікратий С. В., Паньків Х. В.
З-12 Системи штучного інтелекту: лабораторний практикум – Івано-Франківськ: ІФНТУНГ, 2015. – 91 с.
МВ 02070855-9024-2014
Лабораторний рактикум містить короткі теоретичні відомості та завдання до лабораторних робіт з дисципліни “Системи штучного інтелекту”. Розроблений відповідно до робочої програми даної навчальної дисципліни. Призначено для підготовки бакалаврів денної та заочної форм навчання за напрямом підготовки 6.050201 “Системна інженерія”.
УДК 681.5
ББК 32.965
МВ 02070855-9024-2014 © Зікратий С. В.
Паньків Х.В.
© ІФНТУНГ, 2015
Відповідальний за випуск,
завідувач кафедри комп’ютерних
технологій в системах управління та автоматики Л. М. Заміховський
Член експертно-рецензійної комісії університету М. Й. Федорів
Нормоконтролер Г. Я. Онуфрик
Інженер І категорії НТБ Л. З. Костюк
ЗМІСТ
с.
ЗМІСТ 5
ВСТУП 6
ЛАБОРАТОРНЕ ЗАНЯТТЯ № 1 Ознайомлення з мовою програмування Пролог 7
ЛАБОРАТОРНА РОБОТА № 2 Керування ходом виконання програм у системі Пролог 16
ЛАБОРАТОРНА РОБОТА № 3 Рекурсія і рекурсивні процедури в Пролозі 28
ЛАБОРАТОРНА РОБОТА № 4 Списки і процедури їх обробки 33
ЛАБОРАТОРНА РОБОТА № 5 Способи представлення баз даних у Пролог-програмах 40
ЛАБОРАТОРНА РОБОТА № 6 Динамічні бази даних 47
ЛАБОРАТОРНА РОБОТА № 7 СТВОРЕННЯ ПРОСТОЇ ЕКСПЕРТНОЇ СИСТЕМИ 58
ЛАБОРАТОРНА РОБОТА № 8 РОЗРОБКА НЕЧІТКИХ СИСТЕМ КЕРУВАННЯ З ВИКОРИСТАННЯМ FUZZY LOGIC TOOLBOX МАТЕМАТИЧНОГО ПАКЕТА MATLAB 68
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 80
ДОДАТОК А Службові предикати Пролога для роботи з файлами 81
ДОДАТОК Б Індивідуальні завдання До лабораторних робіт № 1, 2, 4 82
ДОДАТОК В Індивідуальні завдання До лабораторної роботи № 3 84
Додаток Г Індивідуальні завдання до лабораторної роботи № 5 85
ВСТУП
Метою проведення лабораторних робіт є отримання навичок розробки та реалізації основних елементів систем штучного інтелекту. Методичні вказівки присвячені вивченню основних конструкцій та принципів програмування в середовищі розробки Пролог, основних прийомів роботи з базами даних на основі Пролог-програм та опануванню основних навичок розробки експертних систем.
Назву "Пролог" отримано від словосполучення "Програмування за допомогою логіки" (PROgramming in Logic). Пролог був розроблений і вперше реалізований у 1973 р. Алэном Колмероэ й іншими членами "групи штучного інтелекту" Марсельського університету (Франція). Головним завданням групи було створення системи для обробки природної мови.
Експертні системи (ЕС) – це системи штучного інтелекту (інтелектуальні системи), призначені для вирішення погано формалізованих і слабо структурованих завдань у певних проблемних областях на основі закладених у них знань фахівців-експертів. У цей час ЕС впроваджують у різні види людської діяльності, де використання точних математичних методів і моделей є складним або взагалі неможливим. Системи-Оболонки є найбільш простим засобом формалізації (автоформалізації) експертних знань, що практично не вимагають участі посередників в особі інженера по знаннях або програміста при їхньому використанні.
Основним засобом досліджень у перших шести роботах вибрано Visual Prolog 5.2 та в останніх двох – Exsys CORVID v.3.х і 4.х.
Лабораторне заняття № 1 Ознайомлення з мовою програмування Пролог
Мета роботи: ознайомитися з основними відомостями про мову програмування Пролог, структурою Пролог-програм та оболонкою Прологу.
1.1 Загальні відомості про мову Пролог
Пролог – машинна мова п'ятого покоління, що застосовується при побудові експертних систем, природно-мовних інтерфейсів та інтелектуальних систем керування. Теоретичною основою Прологу є розділ символьної логіки, що називається численням предикатів. Предикат – це логічна функція, що виражає деяке відношення між своїми аргументами і приймає значення "істина", якщо це відношення існує або "неправда", якщо воно відсутнє.
На відміну від Паскаля, Бейсика й інших традиційних процедурних мов програмування, де програміст повинний описати процедуру рішення крок за кроком, наказуючи комп'ютерові, як вирішувати проблему, при використанні Прологу програмістові досить описати задачу й основні правила її рішення, а Пролог сам визначить, як прийти до рішення. Прологові властивий ряд властивостей, якими не володіють процедурні мови програмування, що робить його могутнім засобом логічного програмування. До таких властивостей відносяться:
1) механізм висновку з пошуком і поверненням,
2) убудований механізм зіставлення зі зразком,
3) проста, але виразна структура даних з можливістю її зміни.
Пролог відрізняється однаковістю програм і даних. Дані і програми лише дві різні точки зору на об'єкти Прологу. У єдиній базі даних можна вільно створювати і знищувати окремі елементи. Оскільки не існує розходження між програмою і даними, то можна змінювати програму під час її роботи. Природним методом програмування є рекурсія.
Пролог є декларативною мовою. Це означає, що маючи, необхідні факти і правила, він може використовувати дедуктивні висновки для рішення задач програмування. Пролог – мова описів і замість серії кроків, що визначають, як комп'ютер повинний вирішувати проблему, програма на Пролозі містить опис проблеми, що містить у собі:
1) імена і структури об'єктів, використовуваних у задачі;
2) імена відношень (предикатів), що існують між об'єктами;
3) основну мету (задачу), розв'язувану даною програмою;
4) факти і правила, що описують відношення між об'єктами.
Такий опис використовується для специфікації бажаних відносин між наявними вхідними даними і вихідними даними, що генеруються на підставі вхідних. Перші дві області описів аналогічні секції оголошень програм на Паскалі. Третя описує формулювання основної мети програми. Четверта містить список логічних тверджень у формі фактів, таких як, наприклад,
Іван любить Марію
Петро любить пиво
або у формі правил, наприклад,
Іван любить X, якщо Петро любить Х
(Іван любить те, що любить Петро).
На основі наявних правил і фактів Пролог робить висновки. Маючи два вищенаведені факти й одне правило, Пролог прийде до висновку, що
Іван любить пиво.
А якщо задати Прологові задачу, Наприклад,
Знайти усіх, хто любить пиво ,
то він знайде всі розв’язки цієї задачі. При цьому він автоматично керує рішенням задачі, намагаючись під час виконання програми знайти всі можливі набори значень, що задовольняють поставленій задачі. При цьому пошук здійснюється по всій базі даних, що введена в систему (термін база даних використовується при об'єднанні набору фактів для спільного їхнього використання при рішенні деякої конкретної задачі).
У Пролозі використовується метод пошуку з поверненням, що дозволяє у випадку знаходження одного рішення переглянути всі зроблені припущення ще раз, щоб визначити, чи не приводить нове значення змінної до ще одного рішення. Синтаксис Прологу дуже короткий і простий.
