- •2. Формальні методи у системах штучного інтелекту 21
- •3. Зображення знань. Мова програмування Пролог 55
- •4. Задачі класифікації, експертні системи 99
- •5. Інтелектуальні пакети 110
- •1.1.Основні поняття та історія розвитку штучного інтелекту
- •1.2. Галузі застосування штучного інтелекту
- •Ведення ігор
- •Автоматичні міркування і доведення теорем
- •Експертні системи
- •Розуміння природних мов та семантичне моделювання
- •Моделювання роботи людського інтелекту
- •Планування та робототехніка
- •Мови та середовища ші
- •Машинне навчання
- •Альтернативні уявлення: нейронні мережі та генетичні алгоритми
- •Штучний інтелект і філософія
- •Контрольні питання
- •2. Формальні методи у системах штучного інтелекту
- •2.1. Основні поняття
- •2.2. Основні закони правильного мислення
- •2.3. Класифікація міркувань
- •Дедуктивні міркування. Основні ідеї та складні міркування
- •Безпосередні розумові висновки
- •2.4.Опосередковані висновки
- •Прості силогізми, складні розумові висновки
- •2.5. Індуктивні міркування та висновки за аналогією
- •2.6 Числення висловлювань
- •2.7. Нечіткі множини та нечітка логіка
- •2.8. Предикати. Формальні теорії
- •2.9. Процедура резолюції
- •2.10. Формальні граматики. Теорія алгоритмів
- •2.11. Продукції як алгоритмічна система. Ігри та рішення
- •2.12. Задачі та методи дискретної оптимізації
- •Динамічне програмування
- •Метод віток та меж
- •2.13. Багатокритеріальні задачі
- •2.14. Контрольні запитання
- •3. Зображення знань. Мова програмування Пролог
- •3.1. Ціль та методи зображення знань
- •3.2. Декларативне та процедурне зображення знань. Семантичні мережі
- •3.3. Фрейми та продукційні системи
- •3.4. Програмування мовою Пролог
- •Вступ до прологу. Загальна характеристика та основні поняття
- •Структура програми, домени, предикати та твердження
- •3.5. Управління обчисленнями у мові Пролог Зіставлення та повернення
- •Відтинання
- •Рекурсивні обчислення, обчислення факторіалу, знаходження квадратного кореня методом ітерацій
- •Списки у мові Пролог, бінарні дерева
- •3.6. Застосування Прологу, практична робота з використанням мови Пролог Застосування Прологу у програмуванні, системах ші, базах даних, у математиці
- •Практична робота на мові Пролог, основні інструменти та методика роботи
- •3.7. Контрольні запитання
- •4. Задачі класифікації, експертні системи
- •4.1. Особливості експертних систем, приклади та їх розробка
- •4.2. Розробка ес, мови та оболонки, набуття знань та приклад сценарію
- •4.3. Контрольні питання
- •5. Інтелектуальні пакети
- •5.1. Обчислювальні моделі, задачі та синтез програм
- •5.2. Загальна характеристика та меню системи тк Solver. Зображення обчислювальної моделі
- •5.3.Мова специфікації обчислювальних задач. Обчислювальна модель в tks
- •5.4. Складання обчислювальних моделей і задач, практична робота в tks
- •5.5. Завдання для самостійної роботи
- •5.6. Контрольні запитання
- •Додатки Додаток 1 Операції над нечіткими числами на основі принципу узагальнення. Використання в теорії штучного інтелекту
- •Література
5.3.Мова специфікації обчислювальних задач. Обчислювальна модель в tks
Обчислювальна модель в TKS є сукупністю об’єктів і відношень між ними, вона описується мовою специфікації обчислювальних задач (МСО3). Кожний об’єкт ОМ повинен мати унікальне ім’я довжиною близько 200 символів, яке не повинно починатися з цифри. Малі і великі букви в імені загалом різняться, але для системних імен це обмеження не діє (вирази SIN та sin позначають одне і те саме). Тип змінної визначається виглядом її значення під час ініціалізації, характером використання змінної або зазначенням атрибутів у панелі об’яви змінних. Можна використовувати також структуровані типи даних – списки, що вже обговорювалися. Списки результатів розрахунку можна пов’язувати зі складнішими структурами – таблицями.
Числа зображуються в TKS в стандартній чи експоненційній формі в діапазоні від 1Е-307 до 1Е308 за абсолютною величиною і можуть мати до 16 значущих цифр. Приклади запису чисел:1.09092,18437560,6.672Е-11.
Арифметичні вирази будуються з імен змінних, звернень до функцій і списків, числових констант, круглих дужок за допомогою звичайних знаків арифметичних операцій. Зведення до ступеня позначається ^.До системи входить стандартний набір елементарних функцій. Число П можна отримати викликом Рі().Логічні вирази записуються з використанням знаків операцій порівняння, імен змінних, констант, викликів булевих функцій і набувають значення 1(істина) або 0 (хибність). Нерівність записується як <>.В системі TKS реалізовані функції not(X), eqv(X,Y), and(<список ЛВ>), or(<список ЛВ>), imply(X,Y)-імплікація. Оператори визначають послідовність обчислень і використовуються в середині процедур.
У лівій частині оператора присвоювання може використовуватися як проста змінна, так і елемент списку`X[i][ј]: =”Alpha”.Припускається знак << = >> замість <<:=>>.
Умовні оператори записуються стандартно за допомогою ключових слів if, then, else. У зв’язку з проблемою запису умовних операторів в TKS конструкції or та and є функціями логічних операцій. Оператори goto забезпечують перехід за символічними мітками. Оператор виходу з процедури записується як return.
Оператор циклу має вигляд:
for < ім’я_змінної_циклу > : = <вираз 1>
to <вираз 2> [ step < вираз 3 >]
<послідовність операторів циклу>
next[<ім’я_змінної_циклу>]
За відсутності step крок вважається одиничним.
В середині тіла циклу можна використовувати вкладені цикли. Тіла вкладених циклів можуть обмежуватися операторами продовження типу фортранівських:
Continue [<ім’я_змінної_циклу >]
Під час використання цього оператора управління передається оператору next, заданого в Continue охоплюючого циклу, а за відсутності посилання – на next поточного циклу. Аналогічно заданий оператор виходу exit передає управління оператору, розташованому за next охоплюваного або поточного циклу. Ці конструкції зручніше запропонованих у новітніх версіях Фортрану (де слід додатково полічити цикли і посилатися на ці мітки).
Рівняння.
Арифметичні рівняння мають вигляд
.
Вони зберігаються в поточній обчислювальній
моделі як однооператорні відношення.
TKS дає змогу використати різні бібліотечні
функції. Автоматичне розв’язання
обернених задач знаходження аргументів
забезпечується тільки для тих функцій,
які мають обернені.
Приклад опису рівнянь:
1)
2)
,
3)
,
4)
,
5)
.
Програмні відношення. Такими називаються відношення, які задаються за допомогою бібліотечних чи користувальних функцій, які зображуються в TKS у вигляді панелей Function Subsheet.Програмні відношення описуються звертаннями до функцій, оператор Call. У списку аргументів вхідні параметри слід відокремлювати від вихідних крапкою з комою. В TKS підтримуються функції-списки, які задають різні типи співвідношень між елементами двох списків, та процедури - функції, які містять описи алгоритмів розв’язку підзадач. Крім того, функції моделі задають описи обчислювальних моделей у форматі об’єктів та відношень між ними. При звертанні до такої функції в TKS виникає підзадача на множині фактичних параметрів функції. У тілі функції можуть бути звертання до інших обчислювальних моделей. Умовні речення обчислювальності задають умови застосування тих чи інших відношень і записуються як і в звичайних мовах програмування.
Списки. Список представляє собою послідовність значень, числових чи символічних, які називаються елементами списку. Фактично списки в TKS відповідають об’єктам типу масивів. Проте надалі ми збережемо термінологію розробників. Для звертання до елементу списку після його імені в квадратних дужках вказують індексний вираз, імені повинен передувати апостроф.
Списки в TKS використовуються для збереження вхідних даних задачі і отримання значення вихідних даних задачі в спусковому режимі вирішувача, а також для аргументів та результатів у спускових функціях. Списки застосовуються для організації зв’язку за даними між TKS та іншими системами через файли. Змінна задачі матиме тип „список”(list), якщо в об’явленні змінної панель Variable Sheet; у полі status вказати тип L. Ім’я нового списку автоматично заноситься в панель List Sheet, якщо:
для змінної на панелях Variable Sheet чи Variable Subsheet в полі St вказується тип L;
зазначається ім’я списку в полі Associated List на панелі Variable Subsheet;
зазначається ім’я списку в полі domain чи range на панелі List Function Subsheet;
зазначається ім’я списку на X-Axis,Y-Axis на панелі Plot Subsheet;
задано ім’я списку в полі List на панелі Table Subsheet.
Багатовимірний список зображується як список списків. Кожний індекс вміщується в окрему пару квадратних дужок.
Пари чисел та їх використання. Вирази типу (а, в) використовується для зображення прямокутних декартових чи полярних координат точки на площині, а також комплексних чисел у декартовому (rectangular) зображенні.
Приклади:
Опис еліпсу в параметричній формі має вигляд:
,
де а, b –довжини півосей еліпсу, t – кут в градусах.
У TKS є бібліотечні функції для перетворення полярних і декартових координат.
Точку Z на комплексній площині можна задати або в декартових координатах (x, y),або в полярних (r, theta).Комплексне число Z в полярній системі координат зображується у вигляді:
Змішувати комплексні числа
з іншими в TKS не можна. Так, потроєння
комплексної змінної записується у
вигляді
.
Комплексні пари в TKS можна використовувати
як аргументи тільки для функцій
POWER((x,y),n)
зведення до ступеня – дійсної величини
з обчисленням уявної IM ((c,d))
та дійсної RE((a,b))
частин комплексної пари.
Опис функцій користувача. Розв’язання складної задачі потребує зведення її до сукупності підзадач з відомим розв’язком кожної із них. У TKS підзадачі описуються різними типами функцій. Якщо є алгоритм розв’язання, то його можна описати як процедуру-функцію. Декларативно поданий розв’язок як множина рівнянь та програмних відношень можна оформити у вигляді функцій –моделей –ВМ -функцій. Розв’язок, пов’язаний із задачею пошуку даних з потрібними властивостями, зображується табличними чи ітеративними функціями. Виклик підзадач в TKS здійснюється звертанням до функції через апарат формальних і фактичних параметрів.
Процедури-функції. Кожну процедуру-функцію (далі – процедуру) слід оголосити в панелі Function Sheet і зазначити в панелі Procedure Function Subsheet. Опис процедури вміщує виконувані оператори і оголошення:
параметрів-передаються безпосередньо з панелі Variables Sheet і описуються в полі Parameter Variables;
вхідних і вихідних змінних і передаються через список виклику процедури.
У процедурах цього типу можливе посилання на інші процедури і функції, можна використати також і рекурсію.
Змінні, оголошенні як вхідні (Input), мають бути відомі до виклику процедури. Проте значення вхідних змінних можна змінювати всередині процедури, в ВМ – функціях це призведе до помилки обчислень. Ці зміни не поширюються на відповідні фактичні змінні виклику процедури. Винятком є змінні типу списку: значення елементів списку можуть бути змінені в процедурі також тоді, коли ім’я списку передається як Input-змінна. Аналогічно в тілі процедури можна змінювати значення параметрів, а змінну – тільки в межах тіла процедури.
„Модельні” функції. У модельних (ВМ)- функціях можна використовувати вхідні та проміжні змінні, які є локальними і недоступними для обробки поза тілом процедур і функцій. Вхідні змінні можна передавати через виклик процедури чи безпосередньо з Variables Sheet,минаючи список виклику. Тип підстановки задається в описах процедур та ВМ- функцій. Кожну функцію, яка містить опис ВМ (тип функції Rule), треба оголосити в панелі Function Sheet і описати в панелі Rule Function Subsheet. Опис ВМ-функції містить у собі сукупність правил (умовних та безумовних речень обчислювальності) і оголошення її вхідних змінних:
параметрів ВМ-функції в полі Parameter Variable (значення змінних цього поля присвоюється безпосередньо з панелі Variable Sheet);
аргументів у полі Argument Variables( значення змінних передаються через список виклику ВМ-функції);
результатів знаходження значень функції у полі Result Variables (значення повертаються через список викликів).
Для ВМ – функцій вхідними вважають змінні, значення яких відомі до звертання до функції, а вихідними – потенційно обчислюванні змінні. У процесі виклику ВМ-функції список аргументів і результатів ВМ-функції має бути специфікований цілковито, і в тому разі, якщо завчасно відомо, що не всі вихідні дані означено і буде отримано не всі результати.
У ВМ-функціях спроба означити параметр змінну значенням, відмінним від заданого в панелі Variable Sheet, призводить до помилки, яка фіксується також тоді, коли обчислені за допомогою кількох співвідношень значення якої-небудь змінної не узгоджуються між собою. В тілі ВМ-функцій чи процедур рекурсивні звернення заборонені. Вирішував задач обробляє змінні і правила з панелі опису обчислювальної задачі Rule Sheet.
Невідомі змінні можуть міститися в лівих і правих частинах правил. Під час виклику ВМ-функції в обчисленнях беруть участь лише ті правила, для яких значення вхідних змінних задаються через множини параметрів, аргументів і результатів функції.
Функції-списки. Вони дають змогу задавати в панелі List Function Subsheet двомісні відношення між списками області визначення (domain) та області значень (range). Допускається такі типи відповідностей:
таблиці (тип функції table ,відповідність 1-1);
інтервали (тип функції step ,відповідність 1-);
лінійна інтерполяція(тип функції linear);
кубічна інтерполяція(тип функції cubic).
Для функцій-списків обов’язковою є еквівалентність типів формальних і фактичних параметрів. Список, який задає значення домену функції-списку, виявляється з першого елементу. Як результат видається перше рішення, що личить, всі функції-списки є одномісними і їх можна як викликати з використанням CALL, так і безпосередньо використовувати у виразах. Основні типи функцій-списків – це табличні та інтервальні функції, а також лінійна і кубічна інтерполяції.
Табличні функції – тип функції table в полі Mapping. Вони описують двостовпчикові таблиці. Елементами першого стовпчика таблиці (Domain) є значення елементів списку вказаного в полі Domain List, а другого (Range) – пов’язані із списком, вказаним у полі Range List. Елементи можуть набувати числових чи символічних значень.
Інтервальні функції потребують, щоб значення аргументу належало хоча б одному з інтервалів, утворюваних послідовними елементами із списку-домену.
Результатом обчислення значення функції буде значення елементу на лівій границі інтервалу.
Лінійна та кубічна інтерполяції. Функції даного типу визначають значення, отримані у вигляді лінійної(кубічної) інтерполяції між елементами списку-домену.
