Возможности языка и системы логического программирования Turbo Prolog

Применение и описание системы логического программирования Turbo Prolog. Особенности, предназначение предикатов xpositive и xnegative. Специфика программы классификации животных по признакам, выбранным пользователем. Роль главного модуля do expert job.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 11.12.2015
Размер файла 16,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ВВЕДЕНИЕ

В начале 80-х годов в изучении искусственного интеллекта сформировалось самостоятельное направление, которое называется "экспертные системы" (ЭС). Цель исследований по ЭС состоит в разработке программ, которые при решении задач, трудных для человека, получают результаты, не уступающие по качеству и эффективности решениям, получаемым экспертом.

Целью данной курсовой работы является рассмотрение и изучение возможностей языка и системы логического программирования Turbo Prolog.

В качестве темы курсовой работы была выбрана «Разработка базы знаний экспертной системы на тему «Классификация животных». Животные были классифицированы по следующим признакам: класс, отряд, цвет и по другим личностным характеристикам.

ОСНОВНАЯ ЧАСТЬ

Для распознавания животного внутри каждого подмножества в данной экспертной системе будет использован список атрибутов. Число характеристик определяет степень точности классификации. Отличающей не обязательно будет какая-нибудь одна характеристика - их может быть несколько. Все перечисленные ниже атрибуты являются необходимыми, так как ни один из них не характерен для всех животных одновременно.

· Отряд хищные

· Любит мёд

· Зимой впадает в спячку

· Класс млекопитающие

· Отряд непарнокопытные

· Живёт одиночно

· Живёт в Африке

· Отряд грызуны

· Пушистый длинный хвост

· Запасает орехи на зиму

· Отряд черепахи

· Обитает в воде

· Зелёного цвета

· Класс пресмыкающиеся

· Отряд чешуйчатые

· Быстро бегает

· Отряд бесхвостые

· Прыгает

· Класс земноводные

Каждый признак для каждого животного либо верен, либо нет.

Сначала вводятся декларации базы данных. База данных будет хранить ответы пользователя на вопросы системы пользовательского

интерфейса. Эти данные являются утвердительными («yes») или отрицательными («no») ответами.

Затем объявляются предикаты для выполнения вывода и для взаимодействия с пользователем.

Вот эти декларации: turbo prolog предикат животное

database

xpositive(symbol,symbol)

xnegative(symbol,symbol)

predicates

do_expert_job

do_consulting

ask(symbol,symbol)

animal_is(symbol)

positive(symbol,symbol)

negative(symbol,symbol)

remember(symbol,symbol,symbol)

clear_facts

goal

do_expert_job.

Предикаты xpositive и xnegative нужны для хранения утвердительных и отрицательных ответов пользователя. Первые четыре предиката используются для ведения диалога с пользователем, а остальные шесть - для вывода информации.

Должно быть составлено восемь правил: по одному для каждого вида животного. Каждое правило должно распознавать вид животного по признаку принадлежности к группе хищных или какой-либо другой группе.

Правило animal_is идентифицирует само животное, которое требуется найти. Ниже приведено полное продукционное правило для медведя:

animal_is("Медведь"):-

positive(animal,"Отряд хищные"),

positive(animal,"Любит мёд"),

positiv(animal,"Зимой впадает в спячку"),

positive(animal,"Класс млекопитающие"),!.

Правила positive и negative используют для сопоставления

данных пользователя с данными в продукционных правилах. Встроенный предикат asserta позволяет добавить новые утверждения в базу данных. Событие fail устанавливает, когда пользователь пытается согласовать цель с БД, и, при этом, данная операция заканчивается неудачно. Для очистки внутренней базы фактов применяется правило clear_facts. Встроенный предикат retract удаляет утверждения из базы данных Правило remember (запоминание) выполняет добавление предложений с ответами yes (да) и no (нет), для использования при сопоставлении с образцом:

positive(X,Y) :-

xpositive(X,Y),!.

positive(X,Y) :-

not(negative(X,Y)),!,

ask(X,Y).

negative(X,Y) :-

xnegative(X,Y),!.

remember(X,Y,yes) :-

asserta(xpositive(X,Y)).

remember(X,Y,no) :-

asserta(xnegative(X,Y)),

fail.

clear_facts :-

retract(xpositive(_,_)),

fail.

clear_facts :-

retract(xnegative(_,_)),

fail.

Главный модуль do_expert_job (сделай экспертную работу) и модуль do_consulting (сделай консультацию) осуществляют связь вводимых пользователем данных с системой логического вывода. Модуль ask(X,Y) (спрашивать) запрашивает данные у пользователя и сохраняет ответы в базе данных. Кроме того, окно обеспечивает дополнительное удобство во время консультации. Предикат makewindow является основным в Prolog при работе с окнами. При работе с этим предикатом в скобках указываются: номер окна, атрибуты окна, атрибуты рамки, заголовок окна, начальный номер строки, начальный номер столбца, высота окна, ширина окна. Система пользовательского интерфейса полностью приведена ниже:

do_expert_job:-

makewindow(1,7,7,"Expert System",1,3,22,71),

nl,write(" ---------------------------------------------------"),

nl,write(" An Animal Expert "),

nl,write(" "),

nl,write(" Please answer the questions 'yes' or 'no'."),

nl,write(" ---------------------------------------------------"),

nl,nl,

do_consulting,

write("Press space bar."),nl,

readchar(_),

removewindow,

exit.

do_consulting:-

animal_is(X),!,nl,

write("Animal ",X,"."),nl,

clear_facts.

do_consulting:-

nl,write("Sorry !"),

clear_facts.

ask(X,Y):-

write(" expert> ",X," ",Y," ?"),

readln(Reply),

remember(X,Y,Reply).

positive(X,Y):-

xpositive(X,Y),!.

positive(X,Y):-

not(negative(X,Y)),!,

ask(X,Y).

negative(X,Y):-

xnegative(X,Y),!.

remember(X,Y,yes):-

asserta(xpositive(X,Y)).

remember(X,Y,no):-

asserta(xnegative(X,Y)),

fail.

clear_facts:-

retract(xpositive(_,_)),

fail.

clear_facts:-

retract(xnegative(_,_)),

fail.

Экспертная система выбирает вид животного на базе ответов, данных пользователем на вопросы, а в конце неудачного поиска выдает сообщение “Sorry!”.

ЗАКЛЮЧЕНИЕ

Целью данной курсовой работы являлось изучение возможностей языка и системы логического программирования Turbo Prolog.

В качестве темы курсовой работы была выбрана «Разработка базы знаний экспертной системы на тему «Классификация животных». Животные были классифицированы по следующим признакам: класс, отряд, цвет и по другим личностным характеристикам.

При выполнении программа классифицирует животных по признакам, выбранных пользователем, а если животного с выбранными критериями нет в базе знаний, программа выдаёт сообщение “Sorry!”.

В ходе выполнения данной курсовой работы были закреплены и получены знания по созданию экспертных систем на языке логического программирования Turbo Prolog.

ПРИЛОЖЕНИЕ

domains

database

xpositive(symbol,symbol)

xnegative(symbol,symbol)

predicates

do_expert_bird.

do_consulting

ask(symbol,symbol)

animals_is(symbol)

positive(symbol,symbol)

negative(symbol,symbol)

remember(symbol,symbol,symbol)

clear_facts

goal

do_expert_bird.

clauses

do_expert_bird:-

makewindow(1,7,7,"Expert System",1,3,22,71),

nl,write(" ---------------------------------------------------"),

nl,write(" An Animal Expert "),

nl,write(" "),

nl,write(" Please answer the questions 'yes' or 'no'."),

nl,write(" ---------------------------------------------------"),

nl,nl,

do_consulting,

write("Press space bar."),nl,

readchar(_),

removewindow,

exit.

do_consulting:-

animal_is(X),!,nl,

write("Animal ",X,"."),nl,

clear_facts.

do_consulting:-

nl,write("Sorry !"),

clear_facts.

ask(X,Y):-

write(" expert> ",X," ",Y," ?"),

readln(Reply),

remember(X,Y,Reply).

positive(X,Y):-

xpositive(X,Y),!.

positive(X,Y):-

not(negative(X,Y)),!,

ask(X,Y).

negative(X,Y):-

xnegative(X,Y),!.

remember(X,Y,yes):-

asserta(xpositive(X,Y)).

remember(X,Y,no):-

asserta(xnegative(X,Y)),

fail.

clear_facts:-

retract(xpositive(_,_)),

fail.

clear_facts:-

retract(xnegative(_,_)),

fail.

animal_is("Медведь"):-

positive(animal,"Отряд хищные"),

positive(animal,"Любит мёд"),

positive(animal,"Зимой впадает в спячку"),

positive(animal,"Класс млекопитающие"),!.

animal _is("Носорог"):-

positive(animal,"Отряд непарнокопытные"),

positive(animal,"Живёт одиночно"),

positive(animal,"Живёт в Африке"),

positive(animal,"Класс млекопитающие"),!.

animal _is("Белка"):-

positive(animal,"Отряд грызуны"),

positive(animal,"Пушистый длинный хвост"),

positive(animal,"Запасает орехи на зиму"),

positive(animal,"Класс млекопитающие"),!.

animal _is("Черепаха"):-

positive(animal,"Отряд черепахи"),

positive(animal,"Обитает в воде"),

positive(animal, "Зелёного цвета"

positive(animal,"Класс пресмыкающиеся"),!.

animal _is("Ящерица"):-

positive(animal,"Отряд чешуйчатые"),

positive(animal,"Быстро бегает"),

positive(animal,"Зелёного цвета"),

positive(animal,"Класс пресмыкающиеся"),!.

animal_is("Лягушка"):-

positive(animal,"Отряд бесхвостые"),

positive(animal,"Зелёного цвета"),

positive(animal,"Прыгает"),

positive(animal,"Класс земноводные"),!.

animal _is("Человек"):-

positive(animal,"Не животное"),

positive(animal,"Класс млекопитающие"),!.

Размещено на Allbest.ru

...

Подобные документы

  • Разработка программы для поиска пути в лабиринте с возможностью задания входа и выхода, наглядное представление решений. Использование языка логического программирования Prolog. Данные и методы решения. Пользовательский интерфейс, листинг программы.

    реферат [14,3 K], добавлен 15.10.2012

  • Основы языка Visual Prolog. Введение в логическое программирование. Особенности составления прологов, синтаксис логики предикатов. Программы на Visual Prolog. Унификация и поиск с возвратом. Использование нескольких значений как единого целого.

    лекция [120,5 K], добавлен 28.05.2010

  • Реализация экспертных систем любой сложности, решение любых головоломок и шарад с помощью языка логического программирования Prolog. Основные понятия в языке Prolog. Правила логического вывода и запросы. Процедуры логического вывода и принятия решений.

    курсовая работа [19,0 K], добавлен 24.05.2012

  • Общая характеристика и функциональные возможности языка логического программирования Prolog, а также систем SWI-Prolog и Visual Prolog. Формирование базы знаний относительно определения возможности трудоустройства студента и принципы реализации запросов.

    лабораторная работа [1,3 M], добавлен 07.10.2014

  • История возникновения и развития языка Prolog. Рассмотрение императивных и декларативных языков программирования. Элементы экспертной системы: база знаний, механизм вывода и система пользовательского интерфейса. Описание предикатов и предложений.

    дипломная работа [44,0 K], добавлен 11.05.2014

  • Знакомство с основами логического программирования на примере языка Prolog. Синтаксис его основных команд. Генеалогическое дерево с использованием предикатов. Хорновская логическая программа. Основные синтаксические объекты: атомы, константы и переменные.

    практическая работа [832,7 K], добавлен 20.11.2015

  • Нечеткая лингвистическая переменная. Конструктивное описание лингвистической переменной. Структура управляющей логики в виде вычислений с откатами. Наиболее заметные тенденции в истории развития языка программирования Prolog, основные элементы синтаксиса.

    контрольная работа [38,8 K], добавлен 17.05.2011

  • Базовые основы программы Prolog - языка и системы логического программирования. Работа с текстами и предложениями. Электронный казахско-русско-английский словарь. Дистанционный комплекс обучения государственному языку специалистов технического профиля.

    реферат [45,6 K], добавлен 15.09.2014

  • Понятие экспертных систем, их классификация, виды и структура. Построение продукционной модели экспертной системы прогнозирования результатов сессии на основании анализа успеваемости, ее реализация в языке логического программирования Visual Prolog.

    дипломная работа [1,6 M], добавлен 25.01.2011

  • История создания и развитие Pascal. Особенности пакета программирования Turbo. его возможности редактора текстов, компилятора и отладчика. Построения программы на языке Turbo Pascal, ее структура, типы алгоритмов, одномерные и многомерные массивы.

    курсовая работа [519,3 K], добавлен 25.06.2011

  • Характеристика используемой операционной системы, языка программирования. Структура программы на языке Turbo Pascal 7.1. Операторы языка Turbo Pascal. Проведение сортировки записей. Алгоритмы программы и подпрограмм. Причины возникновения ошибок.

    курсовая работа [454,1 K], добавлен 13.06.2014

  • Программный продукт для игры "Крестики-нолики". Описание пользовательского интерфейса. Факт базы данных, определяющий состояние счёта. Предикат изменяющий состояние игрового процесса и подсчитывающий количество занятых ячеек поля. Исходный код программы.

    курсовая работа [34,6 K], добавлен 19.05.2014

  • Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.

    реферат [64,0 K], добавлен 20.03.2016

  • Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.

    курсовая работа [198,1 K], добавлен 03.02.2010

  • Изучение текстового режима языка программирования Turbo Pascal. Написание игры "Змейка" с помощью средств, процедур и функций языка программирование Turbo Pascal. Структурное и функциональное описание разработки. Листинг и общие примеры работы программы.

    контрольная работа [286,3 K], добавлен 10.04.2011

  • Сущность среды программирования Turbo Pascal. Разработка программы с учетом потребительских свойств. Особенности методов современной технологии программирования (пошаговой детализации, структурный, модульный принцип, метод иерархической декомпозиции).

    курсовая работа [57,1 K], добавлен 03.03.2011

  • История появления и распространения Turbo Pascal - среды разработки для языка программирования Паскаль. Общий вид объявления файлового типа. Входная, выходная и промежуточная информация. Алгоритм решения задачи: словесный алгоритм, блок-схема, программа.

    курсовая работа [359,4 K], добавлен 05.01.2010

  • Символьный тип данных как составляющая языка программирования: управляющие символы, лексемы и разделители. Разработка программного обеспечения для практической реализации решения задач, содержащих символьные величины языка программирования Turbo Pascal.

    курсовая работа [37,7 K], добавлен 03.05.2012

  • Основные методы структурного программирования. Методы половинного деления, Крамера, прямоугольников. Применение языка программирования Turbo Pascal 7.0. Решение системы линейных алгебраических уравнений. Описание стандартных и не стандартных функций.

    курсовая работа [376,8 K], добавлен 14.01.2015

  • Особенности реализации алгоритма проверки логического следования методом резолюции. Реализация проекта на логическом языке Prolog и на функциональном языке Haskell: сравнительная характеристика. Знакомство с листингом программы на необходимых языках.

    курсовая работа [57,0 K], добавлен 14.07.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.