- •Лабораторне заняття № 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. Експертна система аналізу поточної успішності студентів на факультеті.
- •С.В. Зікратий, х.В. Паньків системи штучного інтелекту лабораторний практикум
7.4 Елементарні прийоми роботи з секціями
Будь-яка секція містить набір операторів які виконуються послідовно, якщо порядок їхнього виконання не змінений внаслідок використання логічних виразів, операторів do, do_section_of і ряду інших. Розглянемо це на прикладі секції start бази знань LAB_7.KB. Відредагуємо цю секцію, виконавши в головному меню Section -> Edit Section, а потім у списку, що з'явився вибравши start. Відкриється редактор опису секції, в яке додамо два нових оператора в самий початок цієї секції і один в її кінець:
advice 'Починаємо консультацію'
call display ('list_films.txt')
. . .
advice 'Консультація закінчена.
До побачення '
Другий оператор викличе на екран діалогове вікно, в якому відобразитися вміст текстового файлу list_films.txt, який представляє собою афішу фільмів по кінотеатрах. Її перегляд цілком резонний для вибору способу переміщення в конкретний кінотеатр. Природно, це можливо тільки в тому випадку, якщо цей файл існує. Він може бути створений в будь-якому зовнішньому текстовому редакторі, але така можливість існує і в середовищі ESTA. Для реалізації цієї можливості слід:
• В основному меню системи вибрати File -> New.
• З'явиться вікно (рис. 7.12), в якому треба вказати тип створюваного об'єкта Text File і натиснути кнопку ОК.
Рисунок 7.12 – Вікно вибору типу новостворюваного об'єкта
• Відкриється вбудований у систему ESTA текстовий редактор, в якому треба ввести вміст файлу афіші довільного змісту (рис. 7.13).
Рисунок 7.13 – Вікно вибору типу новостворюваного об'єкта
• По закінченню набору вмісту файлу слід натиснути кнопку Save на панелі інструментів і зберегти файл під ім'ям list_films.txt. Після чого текстової редактор можна закрити.
7.5 Елементарні прийоми роботи з параметрами
Параметри – це змінні, які визначають процес передачі управління між усіма секціями вихідної бази знань. Опис будь-якого параметра складається з області декларації та області типу. Для опису параметра використовується ряд опціональних полів, що залежать від конкретного типу параметра. Створимо три нові параметри:
• user_name – текстового типу, який визначатиме поточного користувача ЕС,
• view_list_films – логічного типу, який визначить бажання виведення афіші,
• v_sr – числового типу, що визначає середню швидкість руху до кінотеатру.
Для створення будь-якого нового параметра слід в головному меню вибрати Parameter -> New Parameter, а потім в діалоговому вікні вказати тип параметра, ввести його ім'я та натиснути кнопку ОК. Після цього ESTA відкриє вікно з шаблоном опису цього параметра, яке слід відредагувати.
Так, наприклад, при створенні нового текстового параметра user_name шаблон його опису матиме вигляд, аналогічний тому, що наведений на рис. 7.14.
Рисунок 7.14– Створення текстового параметра user_name
Після редагування опис цього параметра може мати вигляд:
parameter user_name: 'Ім'я користувача'
type text
explanation 'Система хоче з Вами познайомитися'
question 'Як вас звуть?'
Аналогічну послідовність дій треба виконати і при створенні нового логічного параметра view_list_films.
Рисунок 7.15– Створення логічного параметра view_list_films
Після редагування опис цього параметра може мати вигляд:
parameter view_list_films: ''
type boolean
explanation 'Чи повинна система завантажувати файл list_films.txt'
question user_name ', хочете переглянути афішу?'
Особливість опису параметра view_list_films полягає в тому, що в питанні на вибір значення цього параметра використовується значення параметра user_name. Якщо до моменту використання в системі параметра view_list_films значення параметра user_name не буде означено, то система автоматично намагатиметься встановити його значення.
Розглянемо приклад. З цією метою дещо видозмінимо секцію before_start, щоб її опис мав такий вигляд:
section before_start : ' '
advice 'Починаємо консультацію'
if view_list_films call display ('list_films.txt')
Зберігши зроблені зміни і запустивши режим консультації, отримаємо таку послідовність вікон (рис. 7.16), які будуть викликані роботою двох операторів секції before_start.
Рисунок 7.16 – Послідовність роботи системи
Якщо в секції before_start змінити опис першого оператора так, щоб у ньому був наявний параметр user_name:
section before_start : ' '
advice user_name '!!! Починаємо консультацію '
if view_list_films call display (' list_films.txt ')
то після запуску режиму консультації, отримаємо іншу послідовність вікон (рис. 7.17), які також відповідають роботі двох операторів секції before_start.
Рисунок 7.17 – Послідовність роботи системи
Таким чином, використання одного і того ж параметра, але в різних місцях опису секцій, може впливати на послідовність ходу проведення консультації.
Разом з тим відмова користувача від введення того чи іншого параметра може призвести до небажаного поводження системи. Так, наприклад, якщо користувач не вводитиме значення параметра user_name, то повідомлення та питання діалогових вікон будуть виглядати не так, як це було задумано. Позбутися цього можна, якщо передбачити перевірку на обов'язковість введення цього параметра:
section before_start : ' '
if user_name = ' ' (
advice 'Наступного разу не забудьте представитися',
exit
)
advice user_name '!!! Починаємо консультацію '
if view_list_films call display (' list_films.txt ')
Розглянемо ще один приклад використання параметрів. Нехай потрібно, щоб наша експертна система крім рекомендації по способу переміщення до кінотеатру, ще б радила потрібну середню швидкість руху. З цією метою створимо новий числовий параметр, опис якого може мати вигляд:
parameter v_sr: 'середня швидкість'
type number
rules
distance / time * 60 if time> 0.
Відобразимо значення цього параметра в кінці консультації. Для цього замінимо в секції start останній оператор на новий оператор, який буде мати вигляд:
advice 'Середня швидкість руху =' v_sr 'км / год'
