РАЗРАБОТКА ЭКСПЕРТНОЙ СИСТЕМЫ «КЛАССИФИКАЦИЯ ТАНЦЕВ» НА ЯЗЫКЕ ПРОЛОГ - Студенческий научный форум

VII Международная студенческая научная конференция Студенческий научный форум - 2015

РАЗРАБОТКА ЭКСПЕРТНОЙ СИСТЕМЫ «КЛАССИФИКАЦИЯ ТАНЦЕВ» НА ЯЗЫКЕ ПРОЛОГ

Шевырева А.М. 1
1Балаковский институт техники, технологии и управления
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

ВВЕДЕНИЕ

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

Интеллектуальные информационные технологии формируются при создании информационных систем и информационных технологий для повышения эффективности принятия решений в условиях, связанных с возникновением проблемных ситуаций.

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

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

Типичными примерами интеллектуальных систем являются:

  • экспертные системы;

  • искусственные нейронные сети, берущие на себя решение вопросов извлечения и структурирования знаний, а также технологические аспекты разработки систем, основанных на знаниях.

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

1 КЛАССИФИКАЦИЯ ЭКСПЕРТНЫХ СИСТЕМ

Классифицировать экспертные системы можно по разным признакам. Наиболее часто их различают по назначению, предметной области, методам представления знаний, динамичности и сложности:

Рисунок 1 – классификация экспертных систем

По назначению экспертные системы можно классифицировать:

  • диагностика состояния систем, в том числе мониторинг;

  • прогнозирование развития систем (на основе моделирования прошлого и настоящего);

  • проектирование или выработка четких предписаний по построению объектов, удовлетворяющих поставленным требованиям;

  • планирование и разработка мероприятий.

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

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

По степени сложности экспертные системы можно разделить на поверхностные и глубинные. Поверхностные экспертные системы представляют собой знания в виде правил «ЕСЛИ-ТО». Условием выводимости решения является безобрывность цепочки правил. А глубинные экспертные системы обладают способностью при обрыве цепочки правил определять какие действия следует предпринять для продолжения решения задачи.

По динамичности экспертные системы делятся на статические и динамические. Если исходные данные предметной области не изменяются во времени, то такая предметная область называется статической. Предметную область называют динамической, если исходные данные, описывающие предметную область, изменяются за время решения задачи. В архитектуру динамической экспертной системы вводятся два компонента:

  • подсистема моделирования внешнего мира;

  • подсистема связи с внешним окружением.

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

2 КЛАССИФИКАЦИЯ ПРОГРАММНЫХ СРЕДСТВ ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ

Инструментальное средство разработки экспертных систем – это язык программирования, используемое инженером или программистом для построения экспертной системы. Этот инструмент отличается от обычных языков программирования тем, что обеспечивает удобными способами представления сложных высокоуровневых понятий. Их использование значительно сократило время, затрачиваемое на создание экспертных систем, в 3-5 раз.

Рассмотрим наиболее известные и широко применяемые инструментальные средства разработки экспертных систем.

А) Язык программирования Lisp. Создан в 60-х годах американским ученым Дж. Маккарти и его учениками. Наиболее известными диалектами этого языка являются InterLisp, QLisp, CommonLisp. На языке Lisp написаны многие экспертные системы, системы естественно-языкового общения, интеллектуальные операционные системы.

Популярность Lisp объясняется тем, что он с помощью довольно простых конструкций позволяет писать сложные и изящные системы обработки символьной информации. Но при этом все системы Lisp имеют низкую вычислительную эффективность.

Существенной особенностью языка Lisp является то, что здесь "данные" и "программы" внешне ничем не отличаются друг от друга. Это дает возможность писать на Lisp программы манипулирующие не только "данными", но и "программами". Именно данное свойство позволяет Lisp стать изящным средством программирования экспертных систем.

Б) Язык программирования FRL (Frame Representation Language). Относится к классу фрейм-ориентированных языков. Фрейм в FRL - это совокупность поименованных, ассоциативных списков, содержащая до пяти уровней подструктур. Подструктурами фреймов могут быть слоты, аспекты, данные, комментарии и сообщения.

Важным свойством FRL является наличие в нем встроенного механизма "наследования свойств". То есть все понятия предметной области в базе знаний организовываются в виде иерархической классификационной системы, где каждое общее (родовое) понятие связывается с более конкретным (видом). Также применяется механизм наследования свойств.

В) Язык программирования Пролог. Наиболее известные Пролог - системы: MProlog, CProlog, Prolog-2, Arity Prolog, Turbo Prolog, Strawberry Prolog. Пролог все чаще в последнее время стал привлекаться к разработке экспертных систем.

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

Особую роль в интерпретаторе Пролога играют конкретные запросы к базам знаний, на которые система логического программирования генерирует ответы «истина» и «ложь». Для обобщённых запросов с переменными в качестве аргументов созданная система Пролог выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.

Факты в базах знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщёнными сведениями.

Важнейшей особенностью языка является наличие реляционной базы данных.

Г) Язык программирования OPS. Язык относится к числу продукционных. Являясь универсальным языком, он в первую очередь предназначен для разработки интеллектуальных систем и, в частности, экспертных систем. Архитектура языка OPS типична для продукционных систем: база правил, рабочая память и механизм вывода. Отличительные черты семейства языков OPS: программное управление стратегией вывода решений, развитая структура данных и принципиальная эффективность реализации.

Д) Язык программирования Рефал (рекурсивных функций алгоритмический язык). Это машинно-независимый алгоритмический язык, ориентированный на так называемые "символьные преобразования": перевод с одного языка на другой, алгебраические выкладки и тому подобное. Рефал - универсальный метаязык для преобразования объектов языковой природы. Важнейшим приложением Рефала является его использование в качестве метаязыка для построения системных макрокоманд и специализированных языков.

3 РАЗРАБОТКА ЭКСПЕРТНОЙ СИСТЕМЫ: «ПОРОДЫ СОБАК»

3.1 Формирование задачи - дерево решения задачи

Наиболее важным этапом при создании базы знаний является этап приобретения знаний. На данном этапе информация должна быть представлена в виде обобщенной структуры – «Дерево решений».

Рисунок 2 - Дерево решений

3.2 Формирование дерева правил

Представим дерево решений в виде правил, выполнив перевод дерева решений из «вопросов-ответов» в «утверждения-факты».

Рисунок 3 - Дерево правил

3.3 Таблица «атрибут-предикат-значение».

Представим утверждения предложениями в таблице «атрибут-предикат-значение». Атрибут - это ключевое слово или фраза, описывающая некоторое качество, о котором мы пытаемся найти информации. Предикат - это элемент, указывающий на отношения между атрибутом и его значением. Значение - это описание, назначенное атрибуту.

Таблица 1 - Атрибут-предикат-значение

Атрибут

Предикат

Значение

Вас интересуют народные танцы?

IS

Русский танец

Вас интересуют народные танцы?

IS

Бальный танец

Русский танец?

IS

Русский

1

2

3

Русский танец?

IS

Украинский

Русский хоровод?

IS

Березка

Русский хоровод?

IS

Камаринская

Украинский хоровод?

IS

Танок

Украинский хоровод?

IS

Гопак

Латиноамериканский?

IS

Танцуется на месте

Латиноамериканский?

IS

Вальс

Танцуется на месте?

IS

Посодобль

Танцуется на месте?

IS

Джайв

Вальс?

IS

Венский вальс

Вальс?

IS

Танго

3.4 Листинг программы

DOMAINS

A,B,C,D,E,F,G=symbol

PREDICATES

dance(A,B,C,D,E,F,G)

clauses

dance(A,B,C,_,_,_,_):-A="1",B="1",C="1", write("it`s "),write("kamarinskay").

dance(A,B,C,_,_,_,_):-A="1", B="1",C="2", write("it`s "),write("Bereska").

dance(A,B,_,D,_,_,_):-A="1", B="2", D="1", write("it`s "),write("Tanok").

dance(A,B,_,D,_,_,_):-A="1", B="2",D="2", write("it`s "),write("Gopak").

dance(A,_,_,_,E,_,G):-A="2", E="2",G="1", write("it`s "),write("VenskiuVals").

dance(A,_,_,_,E,_,G):-A="2", E="2", G="2", write("it`s "),write("Tango").

dance(A,_,_,_,E,F,_):-A="2", E="1", F="1", write("it`s "),write("Dgayv").

dance(A,_,_,_,E,F,_):-A="2", E="1", F="2", write("it`s "),write("Posodobl").

goal write("VasInteresuetNarodnyiTanez?"),nl, write("1)Yes "),write("2)No "),readln(X),nl,

write("RussianTanez? "),nl, write("1)Yes "),write("2)No "),readln(Y),nl,

write("RussianPlaska?"),nl, write("1)Yes "),write("2)No "),readln(Z),nl,

write("UkrainHorovod?"),nl, write("1)Yes "),write("2)No "),readln(U),nl,

write("Latinoamerikanckie?"),nl, write("1)Yes "),write("2)No "),readln(T),nl,

write("TanzuutNaMeste?"),nl, write("1)Yes "),write("2)No "),readln(R),nl,

write("Vals?"),nl, write("1)Yes "),write("2)No "),readln(E),nl,

dance(X,Y,Z,U,T,R,E)

3.5 Проверка логических выводов

1) Проверка логического вывода танца «Камаринская».

Рисунок 5 - Результат проверки логического вывода танца «Камаринская»

2) Проверка логического вывода танца «Березка».

Рисунок 6 - Результат проверки логического вывода танца «Березка»

3) Проверка логического вывода танца «Танок».

Рисунок 7 - Результат проверки логического вывода танца «Танок»

4) Проверка логического вывода танца «Гопак».

Рисунок 8 - Результат проверки логического вывода танца «Гопак»

5) Проверка логического вывода танца «Венский вальс».

Рисунок 9 - Результат проверки логического вывода танца «Венский вальс»

6) Проверка логического вывода танца «Танго».

Рисунок 10 - Результат проверки логического вывода танца «Танго»

7) Проверка логического вывода танца «Джайв».

Рисунок 11 - Результат проверки логического вывода танца «Джайв»

8) Проверка логического вывода танца «Посодобль».

Рисунок 12 - Результат проверки логического вывода танца «Посодобль»

4 СОЗДАНИЕ БАЗЫ ДАННЫХ

  1.  
    1. Краткое описание

Создана база данных о профессиях, которая хранит в себе некоторую информацию о профессиях. Данная информация представлена в структурированном виде в таблице 2.

Таблица 2 - Таблица структуры базы данных.

Танцы

Народный

Русский

Русский хоровод

Латино-американский

Камаринская

Да

Да

Да

Нет

Березка

Да

Да

Нет

Нет

Танок

Да

Нет

Нет

Нет

Гопак

Да

Нет

Нет

Нет

Венский вальс

Нет

Нет

Нет

Нет

Танго

Нет

Нет

Нет

Нет

Джайв

Нет

Нет

Нет

Да

Посодобль

Нет

Нет

Нет

Да

4.2 Листинг

DOMAINS

name,stor,det,bol=symbol

PREDICATES

dog(name,stor,det,bol)

clauses

dog(akita_inu,no,no,no).

dog(afgan,yes,no,no).

dog(basenji,yes,yes,no).

dog(basset_hound,yes,yes,no).

dog(bedlington_terrier,yes,yes,no).

dog(beagle,yes,yes,no).

dog(bichon_frise,yes,yes,no).

dog(boxer,yes,yes,no).

dog(labrador,yes,yes,no).

dog(ogue_de_bordeaux,yes,yes,no).

4.3 Запросы

1) Выполним запрос на проверку существующего танца. Предикат: dance(tango,no,no,no,no).

Рисунок 15 - Результат выполнения запроса: запрашиваемый танец найден

2) Выполним запрос на проверку народного и русского танца. Предикат: dance(X,yes,yes,_,_).

Рисунок 16 - Результат выполнения запроса: вывод данных о народных и русских танцах

3) Выполним запрос на проверку бальных танцев латиноамериканской программы. Предикат: dance(X, _,_, _, Z), Z=yes.

Рисунок 17 - Результат выполнения запроса: вывод данных о бальных танцах латиноамериканской программы

4) Выполним запрос на проверку народных русских и бальных танцев латиноамериканской программы. Предикат: dance(X,_,_,yes,_) and dance(Y,_,_,_,yes).

Рисунок 18 - Результат выполнения запроса: вывод данных о народных русских и бальных танцев латиноамериканской программы

  1. ЗАДАЧА: ОРИЕТИРОВАННЫЙ ГРАФ

    1. Краткое описание

Программа, которая описывает ориентированный граф, содержащий многоугольник и двунаправленные связи.

Рисунок 19 - Ориентированный граф

  1.  
    1. Листинг

domains

point=symbol

predicates

arc_(point,point)

line_(point,point)

tr_(point,point,point)

clauses

arc_(a,b).

arc_(b,c).

arc_(c,a).

arc_(c,d).

arc_(d,c).

arc_(d,e).

arc_(e,d).

line_(A,B):-arc_(A,B), arc_(B,A).

tr_(X,Y,Z):-arc_(X,Y),arc_(Y,Z),arc_(Z,X).

  1.  
    1. Запросы

1) Выполним запрос на проверку о существующих дугах. Предикат: arc_(X,Y)

Рисунок 20 - Результат запроса: вывод сведений о существующих дугах

2) Выполним запрос на проверку о существующих линиях. Предикат: line_(X,Z)

Рисунок 21 - Результат запроса: вывод сведений о существующих линиях

3) Выполним запрос на проверку существующих треугольников. Предикат: tr_(X,Y,Z)

Рисунок 22 - Результат запроса: вывод сведений о существующих треугольниках

ЗАКЛЮЧЕНИЕ

В ходе выполнения курсовой работы была проведена классификация экспертных систем по различным критериям и создана общая классификация экспертных систем, которая является более объективной.

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

Результатом выполнения курсовой работы стала экспертная система на тему «Классификация танцев». Данная работа представлена деревом решений, таблицей «атрибут-предикат-значение» и кодом самой программы.

Также в ходе выполнения курсовой работы были также разработаны база данных «Классификация танцев» и ориентированный граф. Функционирование проверено с помощью запросов.

Языком программирования для данной работы использован Пролог, который уникален по своей природе. Базовым принципом этого языка является равнозначность представления программы и данных (декларативность), отчего утверждения языка одновременно являются и записями, подобными записям в базе данных, и правилами, несущими в себе способы их обработки. Основными понятиями в языке Пролог являются факты, правила логического вывода и запросы, позволяющие описывать базы знаний, процедуры логического вывода и принятия решений. Факты в языке Пролог описываются логическими предикатами с конкретными значениями. Правила в Прологе записываются в форме правил логического вывода с логическими заключениями и списком логических условий.

Факты в данной базе знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщёнными сведениями.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Братко И. Язык Prolog. – М.: Просвещение. - 2006.-640с.

  2. Малпас Д. реляционный язык Пролог и его применение. – М.: Наука. - 1990.

  3. Райли Г. Экспертные системы и принципы их разработки. - М.: Москва. - 2006. – 1152 с.

  4. Языки программирования [Электронный ресурс]:[справочный листок]. - Сравнение языков программирования - Википедия , 2011. - Режим доступа: ru.wikipedia.org

  5. Норвиг П. Современный подход к искусственному интелекту. – С-Пб.: Дрофа. - 2007. – 1408 с.

  6. Адаменко А. Логическое программирование и Visual Prolog. – С-Пб.: БХВ-Петербург. – 2003. – 990с.

  7. Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог. /Пер. с англ. — М.: Мир, 1990.

23

Просмотров работы: 2545