- •Лабораторне заняття № 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. Експертна система аналізу поточної успішності студентів на факультеті.
- •С.В. Зікратий, х.В. Паньків системи штучного інтелекту лабораторний практикум
9.5 Зміст звіту з лабораторної роботи
1. Вказати номер, тему й мету лабораторної роботи.
2. Зобразити FIS-структури для розроблених систем за різними алгоритмами.
3. Навести перелік правил.
4. Відобразити отримані результати – перехідні процеси, поверхні відгуку.
5. Зробити порівняльні висновки стосовно роботи системи з різним настройками.
9.6 Контрольні питання
1. Наведіть алгоритми нечіткого виведення, які ви знаєте.
2. Перелічіть методи дефазифікації.
3. Який метод дефазифікації використовується в алгоритмі Мамдані?
4. Як створити нечітку систему за алгоритмом Сугено?
5. Що таке функції належності? Які типи функцій належності ви знаєте?
6. Як задаються функції належності для різних систем?
Список використаних джерел
1. Глибовець М. М. Штучний інтелект. Підручник для студентів вищих навчальних закладів, які навчаються за спеціальностями "Комп'ютерні науки" та "Прикладна математика" / М. М. Глибовець, О. В. Олецький. – Київ : Вид. дім "КМ Академія", 2002. – 366 с.
2. Глибовець М. М. Програмування в Пролозі. Навчальний посібник / М. М. Глибовець, І. В. Кравченко, О. В. Олецький, В. М. Терещенко. – Київ : ВЦ "Київський університет", 1998. – 110 с.
3. Тейз А. Логический подход к искусственному интеллекту: от классической логики к логическому программированию / А. Тейз, П. Грибомон, Ж. Луи и др. – Москва : Мир, 1990. – 432 с.
4. Джексон П. Введение в экспертные системы / П. Джексон. – Москва : Изд. дом "Вильямс", 2001. – 624 с.
5. Гаврилова Т.А. Базы знаний интеллектуальных систем / Т.А. Гаврилова, В.Ф. Хорошевский. – СанктПетебург : Питер, 2000. – 384 с.
6. Адаменко А. Логическое программирование и Visual Prolog / А. Адаменко, А. Кучуков. – СанктПетебург : БХВ-Петербург, 2003. – 992 с.
7. Марселлус Д. Программирование экспертных систем на Прологе / Д. Марселлус. – Москва : Финансы и статистика, 1994. – 256 с.
8. Братко И. Программирование на языке Пролог для систем искусственного интеллекта / И. Братко. – Москва : Мир, 1990. – 560 с.
9. Лорьер Ж.-Л. Системы искусственного интелекта / Ж.-Л. Лорьер. – Москва : Мир, 1991. – 568 с.
10. Маллас Дж. Реляционный язык Пролог и его применение / Дж. Маллас. – Москва : Наука, 1990. – 464 с.
11. Поспелов Д. А. Нечеткие множества в моделях управления и искусственного интеллекта / Д. А. Поспелов. – Москва : Наука, 1986. – 312 с.
12. Дьяконов В. П. MATLAB 6.5 SP1/7/7 SP2+ Simulink 5/6. Инструменты искусственного интеллекта и биоинформатики / В. П. Дьяконов, В. В. Круглов. – Москва : СОЛОН-ПРЕСС, 2006. – 456 с.
Додаток а Службові предикати Пролога для роботи з файлами
Вбудовані предикати звільняють програміста від необхідності самому визначати деякі стандартні дії. Для кожного предиката зазначені типи даних і припустимі сполучення їхніх типів:
i – параметр має визначене значення при звертанні до даного предиката;
o – параметр одержує значення при будь-якому звертанні до предиката;
io – тип може бути i або о незалежно від поточних типів інших параметрів
Наприклад, якщо предикат має два аргументи, то можливі такі шаблони – (і,і), (o,o), (і,o), (o,і), або більш коротко – (io,io).
Пролог визначає поточний вхідний потік, з якого здійснюється читання усіх вводимих даних, і поточний вихідний потік, у який здійснюється запис даних. Звичайно з поточним вихідним потоком зв'язується дисплей, а з поточним вхідним потоком – клавіатура.
Однак у ряді випадків використовуються операції читання або запису даних у файли. Для того щоб одержати доступ до файлу, він повинний бути відкритий. Файл може бути відкритий для читання, для запису, для додавання інформації або для модифікації.
Коли файл відкритий, Пролог зв'язує символічне (Символ_ім’я_файлу) ім'я файлу з дійсним ім'ям файлу (Ім’я_файлу), що використовується в операційній системі. Символічне ім'я файлу повинне бути атомом і повинне бути описане в програмі в розділі domains як стандартний тип file. У програмі тип file може зустрічатися в розділі domains один раз.
openread(Символ_ім’я_файлу, Ім’я_файлу), (file, string) – (i,i). Відкриває файл для читання.
openwrite(Символ_ім’я_файлу, Ім’я_файлу), (file, string) – (i,i). Відкриває файл для запису. Якщо такий файл вже існував у каталозі, то вміст його знищується.
ореnаppend(Символ_ім’я_файлу, Ім’я_файлу), (file, string) – (i,i). Відкриває дисковий файл для додавання інформації.
ореnmodify(Символ_ім’я_файлу, Ім’я_файлу), (file, string) – (i,i). Відкриває файл для читання і запису.
readdevice(Символ_ім’я_файлу) (file) – (io). Переключає поточний вхідний потік даних на файл із зазначеним ім'ям. Аргумент повинний бути зв'язаним і відкритий для читання, інакше відбувається зв'язування Символ_ім’я_файлу з ім'ям активного читаючого пристрою.
writedevice(Символ_ім’я_файлу) (file) – (io). Визначає поточний вхідний потік за умови, що зазначений файл відкритий або для запису, або для додавання інформації.
closefile(Символ_ім’я_файлу) (file) – (i). Предикат closefile(...) закриває файл.
filepos(Символ_ім’я_файлу, Позиція, Режим) (file, real, integer) – (i,io,i). Змінити місце читання або запису в зазначеному файлі (при умові, що файл відкритий для читання і запису). Параметр Режим вказує позицію місця читання/запису відносно: початку файлу (0), початкової позиції (1) чи кінця файлу (2).
eof(Символ_ім’я_файлу) (file) – (i). Перевіряє чи є поточна позиція в процесі читання кінцем файлу.
existfile(Ім’я_файлу), (string) – (i). Перевіряє наявність файлу в поточному каталозі. Використовується перед спробою відкрити файл.
deletefile(Ім’я_файлу), (string) – (i). Знищує файл з ім'ям Ім’я_файлу з дискового каталогу.
renamefile(Старе_ім’я, Нове_ім’я), (string, string) – (i,i). Перейменовує файл, якщо Нове_ім’я відсутнє в каталозі та обидва імені коректні.
disk(Шлях_до_каталогу) (string) – (io). Встановлює поточний пристрій і каталог.
Стандартні імена пристроїв для readdevice і writedevice наступні: printer, screen, keyboard.
Для запису у файл необхідно змінити поточний вихідний потік даних так, щоб ним був файл, у який будуть записуватися дані. Позиція у файлі, у якій матиме місце читання або запис, може керуватися предикатом filepos.
