Скачать 96.63 Kb.
|
Лабораторная работа № 6 Итоговое задание «Логическое программирование на языке Visual Prolog» Цели работы: Получить практические навыки применения систем и языков логического программирования для построения систем, основанных на знаниях. Создать экспертную систему по диагностике и ремонту компьютеров с использованием среды VisualProlog Задачи работы: На языке Пролог реализовать базу знаний на выбранную тему, с использованием прямого либо обратного логического вывода. База знаний должна обязательно включать несколько уровней рассуждений (т.е. окончательные выводы не должны напрямую следовать из комбинаций входных данных, необходимо использовать промежуточные выводы) и демонстрировать некоторую интеллектуальность в принятии решений. Ориентировочное количество правил если-то – около 100 шт. 1. Теоретическую часть PROLOG - (PROgramming in LOGic) язык описания фактов, и правил для создания новых фактов. Предложен в районе 1972 года Alain Colmerauer и Philippe Roussel. На данный момент не стандартизован — существует много реализаций данного языка: Visual Prolog, PDC Prolog, Turbo Prolog, Prova, InterProlog, GNU Prolog. В рамках занятий используется GNU Prolog (доступен для скачивания на http://www.gprolog.org/). Возможно выполнение заданий на любой другой реализации языка. Синтаксис: ТЕРМЫ — единица данных, объект данных в Prolog. Подразделяются: Атомы, Числа, Переменные, Составные термы Атом - любая последовательность символов, заключенная в одинарные кавычки. Исключения: 1) атом, состоящий только из чисел, букв и символа подчеркивания и начинающийся со строчной буквы; 2) атом, состоящий целиком из специальных символов. К специальным символам относятся: +-*/^=:;?@$& Числа — в привычном понимание целые и действительные числа. Пролог не производит вычисления автоматически, т.е. «2+3» будет восприниматься как терм. Для осуществления вычислений используется оператор «is»: X is 2+3. Арифметические операторы: + сложение, - вычитание, * умножение, / деление, // целочисленное деление, mod остаток от деления, ^ возведение в степень Переменные - объекта, на который нельзя сослаться по имени. Переменные должны начинаться с прописной буквы или символа подчёркивания и содержать только буквы, цифры, символы подчёркивания. Переменная действует только в рамках утверждения, кроме анонимных переменных(с именем «_»). Именованные переменные — все переменные отличные от анонимных. Свободные переменные — переменные которым не было присвоено значение. Утверждения — единица программы на Prolog, обеспечивающие её функционирование. Утверждения делятся на два подтипа: Факт — одиночная цель, всегда истина. Правило — состоит из одной головной цели и одной или более хвостовой целей, которые истины при некоторых условиях. Пример: собака(рекc). родитель(голди,рекс). собака (X) :- родитель (X,Y),собака (Y). Пример 1. Факты animals(cat). animals(dog). animals(pig). colors(cat,[black,white]). colors(dog,brown). colors(pig,pink). Например, тот факт, что в русском языке существует окончание -ой на ПРОЛОГе запишется так:
Но одних фактов для решения задачи обычно недостаточно (если мы не пишем базу данных). Фактами нужно ещё уметь пользоваться для доказания других фактов. Для этого в ПРОЛОГе существуют правила. Например, высказывание "слово получается добавлением к основе окончания" можно написать так:
Или дословно: "слово Word получается из основы Base, если (:-) существует такое окончание Ending, сложение (concat) которого с основой даёт слово". concat -- встроенная функция, она просто сцепляет строки. Эти две строчки уже являются вполне работоспособной программой. Теперь мы можем задавать интерпретатору ПРОЛОГа вопросы. Например, спросим:
Что означает "выдай слово с основой стран". Здесь X обозначена неизвестная величина, та, которую необходимо получить. Вообще, любое имя с заглавной буквы считается переменной (неизвестной). В ответ на наш запрос получим:
Теперь выполним данный пример в программной среде VisualProlog (рис.3.1). Рис.3.1. Пользовательский интерфейс Visual Prolog. Усложним задачу:
И повторим запрос:
В результате система уже умеет склонять существительные (т.е. выполняет морфологический синтез). Но это ещё не всё. Очень полезное свойство ПРОЛОГа состоит в том, что одна и та же программа на ПРОЛОГе может быть использована для решения как прямой, так и обратной задачи. Пускай нам нужно получить основу слова программой. Для этого укажем его в качестве второго аргумента, а первый сделаем неизвестным:
В итоге данная программа умеет делать морфологический анализ. Пример 2. Утверждения (опсиание окончания «ой») с использвоанием GNU Prolog. ending('ой'). decline(Base,Word) :- ending(Ending),atom_concat(Base,Ending,Word). Одной из реализаций языка Prolog является GNU Prolog: Основные команды: [файл]. - загрузить файл с кодом программы(файл указывается без расширения «pl») trace. - включить режим трассировки программы. notrace. - выключить режим трассировки программы. halt. - завершить выполнение программы. [user]. - войти в режим интерактивного ввода программы. Control+D выход из режима интерактивного ввода программы Трассировка программы: В качестве примера, рассмотрим трассировку программы быстрой сортировки. qsort( IN, OUT ) :- qsort_dl( IN, OUT, [] ). qsort_dl( [X|M], R, R0 ) :- partition( M, X, M1, M2 ), qsort_dl( M2, R1, R0 ), qsort_dl( M1, R, [X|R1] ). qsort_dl( [], R, R ). partition( [X|M], Y, [X|M1], M2 ) :- X partition( [X|M], Y, M1, [X|M2] ) :- partition( M, Y, M1, M2 ). partition( [], _, [], [] ). Загрузка программы Режим пошагового выполнения
2. Обоснуйте использование метода логического вывода (прямой/обратный) в вашем проекте ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ 3. Дайте описание используемых принципов логического вывода и представления продукционных правил на языке логического программирования, описание методов и алгоритмов решения в вашем проекте ________________________________________________________________________________ ________________________________________________________________________________ ________________________________________________________________________________ 4. Опишите особенности примененного подхода к извлечению знаний с необходимыми рисунками, диаграммами (деревья И/ИЛИ, деревья решений) и т.д.
При проектировании системы реализовать:
Вклеить скриншоты с результатами работы программы
Контрольные вопросы 1. Формальная логика. Понятие. Суждение. Высказывание. Формальный язык, грамматика формального языка. 2. Логика предикатов. Интерпретация и унификация. Фразы Хорна. Принцип резолюции. 3. Парадигма декларативного программирования. Представление знаний с помощью фактов и правил. Управление вычислениями. 4. Простые и составные запросы. Понятие анонимной переменной. 5. Объекты данных. Структурирование множества объектов данных. 6. Рекурсивные вычисления. 7. Итерационные вычисления. 8. Рекурсивные структуры данных: списки. Способы обработки и примеры использования. 9. Рекурсивные структуры данных: деревья. Способы обработки и примеры использования. 10. Встроенные предикаты обработки символьных данных. 11. Встроенные предикаты управления вычислениями. 12. Способы представления баз знаний. 13. Представление баз знаний с использованием рекурсивных структур данных. 14. Создание графических изображений средствами языка Пролог. 15. Поиск на графах пространства состояний. Поиск в глубину и ширину. 16. Поиск на графах пространства состояний. Эвристический поиск. 17. Применение Пролога в естествознании. 18. Экспертные системы на правилах. 19. Экспертные системы на логике. Список литературы 1. Адаменко А. Логическое программирование и Visual Prolog (+CD-ROM). BHV. 2. Попов Э.В. Экспертные системы: решение информационных задач в диалоге с ЭВМ. М.: Наука, 1987. 283 с. 3. Астаппн Н.И., Матвеев М.Г. Синтез задач ситуационного управления перерабатывающим предприятием // Научно-техн. сб. мясной и холодильной промышленности РА сельскохоз. наук. 1994. № 2. С. 19-22. 4. Айзерман М.А., Алесекров Ф.Т. Выбор вариантов. Основы теории. М.: Наука, 1990. 240 с. 5. Месарович М., Такахара Я. Общая теория систем: математические основы. М.: Мир, 1978. 311с. 6. Шоломов Л.А. Логические методы исследования дискретных моделей выбора. М.: Наука, 1989. 288 с. 7. Матвеев М.Г., Сысоев В.В. Концепция информационных технологий управления перерабатывающими производствами // Информационная бионика и моделирование. М.: ГОСИФТП РАН, 1995. С. 25-31. 8. Минский М. Фреймы для представления знаний. М., 1979. 9. Робототехника и гибкие автоматизированные производства: В 9 кн. Кн. б. Техническая имитация интеллекта / В.М. Назаретов. Д.П. Ким. Под ред. И.М. Макарова. М.: Высш. шк., 1986. 144 с. 10. Марселлус Д. Программирование экспертных систем на Турбо-ПРОЛОГЕ. М.: Финансы и статистика, 1994. 256 с. Иван Братко «Программирование на языке Пролог для систем искусственного интеллекта» 11. Марселлус «Программирование экспертных систем на Прологе» 12. Нейлор «Как построить свою экспертную систему» |
Лабораторная работа №1 Создание и отладка консольных приложений в интегрированной среде ms visual Studio. Net 2005 |
Лабораторная работа № применение модели rgb в медицинской диагностике... Лабораторная работа № представление и смешение цветов с помощью модели rgb |
||
Курсовая работа по дисциплине «Операционные среды» С, С++ и С# в интегрированной среде разработки приложений (integrated development environment, ide) Microsoft (MS) Visual Studio.... |
Лабораторная работа №2 Тема : Многомерная безусловная оптимизация... Цель работа: знакомство с методами многомерной безусловной оптимизации первого и нулевого порядка и их освоение, сравнение эффективности... |
||
Доклад на тему: Тема: «Математическое программирование» Математическое программирование – это раздел математики, занимающийся разработкой методов отыскания экстремальных значений функции,... |
Лабораторная работа №2 по дисциплине «Физика-1» Томский государственный университет систем управления и радиоэлектроники (тусур) Факультет дистанционного обучения |
||
Среда программирования Visual C++ 0 Общий вид окна Совокупность средств и правил для представления алгоритма в виде пригодном для выполнения вычислительной машиной называется языком... |
Программа учебной дисциплины «Управление данными» «Математика», «Информатика», «Программирование на языках высокого уровня», «Дискретная математика», «Объектно-ориентированное программирование»,... |
||
Лабораторная работа №7 по дисциплине «Физика-1» Целью работы является изучение спектра излучения атомов водорода и экспериментальное определение постоянной Ридберга |
Лабораторная работа №8 по дисциплине «Физика-1» ... |
Поиск на сайте Главная страница Литература Доклады Рефераты Курсовая работа Лекции |