
- •Національний авіаційний університет робототехнічні комплекси
- •СИстема оцінювання
- •2. Використання комп’ютерної техніки і програмного забезпечення
- •Особливості перетворення Денавіта – Хартенберга при розв’язанні задач кінематики
- •Особливості техніки розв’язання оберненої задачі кінематики
- •Порядок виконання завдань та оформлення результатів
- •Параметри Денавіта-Хартенберга для розглянутого випадку
- •Контрольні питання та завдання
- •3.2. Динаміка двохланкового маніпулятора з розподіленою масою
- •Особливості вирішення задач, пов’язаних із динамікою маніпулятора
- •Особливості методу Лагранжа-Ейлера для розв’язання оберненої задачі динаміки
- •Особливості використання розподілення мас та тензора інерції
- •Швидкість ланки
- •Кінетична енергія маніпулятора
- •Потенціальна енергія маніпулятора
- •Функція Лагранжа
- •Рівняння Лагранжа
- •Порядок виконання завдань та оформлення результатів
- •Контрольні питання та завдання
- •3.3. Планування траєкторій для послідовного маніпулятора
- •Особливості вирішення задач, пов’язаних із планування траєкторії послідовного маніпулятора
- •Кубічні закони зміни кутів зчленувань
- •Загальні аспекти планування траєкторій
- •Обмеження, що використовуються при плануванні траєкторій
- •Траєкторія типу 4-3-4
- •Порядок виконання завдання та оформлення результатів
- •Контрольні питання та завдання
- •Особливості циклового дискретного управління
- •Особливості позиційного управління
- •Особливості неперервного контурного управління
- •Характеристики під-регулятора
- •Залежності параметрів під-регулятора та показників якості перехідного процесу
- •Загальні аспекти проектування під-регуляторів
- •Порядок виконання завдання та оформлення результатів
- •Контрольні запитання та завдання
- •4.2. Обробка зображень у системах технічного зору: бінарні та півтонові зображення
- •Особливості обробки зображень в системах технічного зору
- •Основні характеристики бінарних зображень
- •Особливості алгоритмів виділення країв
- •Особливості алгоритму Собеля для виділення країв
- •Особливості алгоритму Лапласа для виділення країв
- •Недоліки алгоритму Собеля
- •Порядок виконання завдання
- •Вираженою симетрією
- •Контрольні питання та завдання
- •4.3. Логічне програмування в Пролог: задачі прийняття рішень при декількох обмеженнях
- •Особливості розв’язування задач за допомогою мови програмування логіки Пролог
- •Ускладнення програми за допомогою правил
- •Рекурсія в Пролог
- •Структури та списки в Пролог
- •Порядок виконання завдання
- •Контрольні питання та завдання
- •4.4. Нейронні мережі: основи
- •Особливості використання нейронних мереж при розв’язуванні задач
- •Динамічні та статичні мережі
- •Методи навчання нейронних мереж
- •Порядок виконання завдання
- •Контрольні питання та завдання
- •4.5. Проектування систем нечіткого виводу на основі алгоритму Мамдані
- •Особливості розв’язання задач проектування систем нечіткого виводу на основі алгоритму Мамдані
- •Порядок виконання завдань та оформлення результатів
- •Контрольні питання та завдання
- •Список літератури
Особливості розв’язування задач за допомогою мови програмування логіки Пролог
Пролог – мова програмування логіки. Основний режим використання Пролог – інтерактивний діалог з користувачем (або консультування, англ. Consult). Користувач ставить питання, це питання інтерпретується Прологом, і дається відповідь. Спеціальна підпрограма Пролога, що називається інтерпретатором, власне відповідальна за пошук відповіді у базі знань. Програма у Прологу представляє собою набір логічних тверджень, які і складають базу знань.
Факт декларує певну властивість об’єкту, або свідчить про певні відносини між двома (або більше) об’єктами; факт також стверджує, що дещо відоме нам є істиною.
Факти записуються з допомогою предикатів (констатує відносини або властивості об’єктів) та декількох аргументів (які власне є об’єктами), наприклад:
родитель(джозеф, джон).
родитель(роуз, джон).
родитель(джон, кароліна).
родитель(жаклін, кароліна).
родитель(джон, патрік).
родитель(жаклін, патрік).
Програма у Прологу може мати будь-яку кількість фактів. Коли програма завантажується в інтерпретатор Пролога (або консультується з ним), за умовчанням вважається, що всі факти програми є істинними. Вони є логічними твердженнями і складають базу знань програми.
Коли користувач ставить питання, інтерпретатор Пролога здійснює пошук у базі фактів для визначення того, чи є достатньо інформації для відповіді. Наприклад, якщо ми бажаємо знати, 1) чи є Жаклін родителем Кароліни та 2) хто родитель Джона, ми можемо поставити наступне питання Прологу:
?- родитель(жаклін, каролін).
і інтерпретатор Прологу відповість:
Yes (так)
Інтерпретатор Прологу ставить у відповідність питання та кожний факт (твердження) в базі знань наступним чином:
Пролог знаходить факт, який відповідає питанню за предикатом.
Якщо відповідність знайдено, то Пролог ставить у відповідність перший аргумент предикату.
Якщо відповідність знайдено, то Пролог ставить у відповідність другий аргумент предикату, і так далі для інших аргументів.
Якщо відповідності не знайдено на будь-якому кроці, то Пролог буде шукати наступне твердження, для якого співпадають предикати та пробувати знову знайти відповідності між аргументами.
Якщо предикати та всі аргументи поставлені у відповідність, то процес закінчується, а інтерпретатор дає відповідь yes (так), що означає ‘знайдено відповідність – я знаю, що це істина, оскільки це є в моїй базі знань’. Мету знаходження відповідностей досягнуто.
Якщо відповідностей немає, то відповідь буде no(ні), що означає ‘цього немає в моїй базі знань, отже це невірно’: Мету знаходження відповідностей не досягнуто.
Щоб поставити друге запитання, ми повинні використати змінну, наприклад Хто. У Пролог це запитання може бути записано наступним чином:
?- родитель(Хто, джон).
Зверніть увагу, що змінна ‘Хто’ починається з великої літери. Це не випадковість, велика літера позначує, що це змінна, тоді як константи завжди починаються з малих літер. Всі аргументи, що були введені досі, представляють собою об’єкти (джон, роуз, патрік та ін.) або властивості об’єктів, і вважається, що вони є незмінними.
Як константи, так і змінні представляють собою структури даних, що називаються атомами, тобто вони не можуть містити в собі інші дані (поділятися).
Коли знайдено відповідність, будь-яка змінна приймає значення будь-якої константи, з якою знайдено цю відповідність. Таким чином, наше питання буде поставлено у відповідність з двома твердженнями родитель(джозеф, джон). та родитель(роуз, джон). А тому змінна Хто буде мати два значення:
Хто = джозеф;
Хто = роуз;
No.
Тут знак “;” означає, що користувач хоче отримати всі інші можливі відповіді. Остання відповідь, no, означає, що всі можливі значення змінної Хто представлено та більше немає відповідей.
Основні правила синтаксису Пролога наступні:
всі предикати починаються з малих літер;
всі змінні починаються з великих літер;
формат кожного факту або твердження наступний:
предикат з будь-якою кількістю аргументів;
аргументи відокремлюються один від одного комами та заключаються у круглі дужки;
точка ставиться після кожного факту.
Якщо ми хочемо задати складніше запитання, наприклад: Хто батьки Кароліни та Патріка?, ми повинні розбити його на простіші запитання та об’єднати їх з допомогою кон’юнкції.
?- родитель(Хто, патрік), родитель(Хто, кароліна).
Відповідь буде наступною:
Хто = джон;
Хто = жаклін;
No
Уніфікація
Процес поставлення у відповідність також називається уніфікацією. Коли два терми поставлено у відповідність, то про них кажуть, що вони уніфіковані. Саме завдяки процесу уніфікації змінні набувають певного значення. Уніфікація – процес двохсторонній. Він оперує будь-якою парою термів у Пролог. Наприклад, при уніфікації любити(джон, Х) та любити(Y, марі) результатом буде любити(джон, марі). У Пролог є спеціальний вбудований предикат для уніфікації двох термів. Це інфіксний предикат, який позначується як =/2. Зверніть увагу, що інфіксний означає, що він має бути розташований між двома термами, а ‘/2’ позначує арність предиката та визначає кількість аргументів у предиката. Декілька прикладів:
?-фред=X. X=фред yes
(змінна X уніфікується значенням константи фред)
?-c=letter(c). no
(константа не може бути уніфікована предикатом з одним аргументом)
?-f(t)=f(S). S=t yes
(ім’я предиката одне й те саме; змінна S уніфікується константою t)
?-батько(джон, том)=батько(том,Хто). No
(константи джон та том не можуть бути уніфіковані)
Правила уніфікації наступні.
1) Константа може бути уніфікована тільки іншою константою з тим самим ім’ям.
2) Змінна може бути уніфікована константою або іншою змінною.
3) Предикат уніфікується іншим предикатом, якщо в них однакові імена та однакова кількість аргументів, а їх аргументи можуть бути уніфіковані між собою.