Инструментальные средства подразделяются на следующие категории:
a) Языки программирования
b) Языки инженерии знаний
c) Средства автоматизации разработки экспертных систем
d) Оболочки экспертных систем
· Рассмотрим языки инженерных знаний:
Языки инженерии знаний
Язык логического программирования PROLOG
Пролог (Prolog) — язык логического программирования, основанный на логике дизьюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.
Встроенный в PROLOG режим управления использует стратегию обратного логического вывода, которая используется в системах, подобных MYCIN. Таблицы знаний и другие данные можно представить с помощью утверждений. Такие структуры данных, как графы и деревья, можно организовать с помощью фраз языка PROLOG, которые содержат комплексные термы. Языковые средства PROLOG позволят программисту разработать собственный механизм обработки неопределенности, причем не исключается и использование коэффициентов уверенности.
Язык функционального программирования LISP
Лисп (LISP, от англ. LISt Processing — «обработка списков») — семейство языков программирования, основанных на представлении программы системой линейных списков, которые притом являются основной структурой данных языка.
Основная особенность Лиспа — представление программы в виде списков — определяет однородность и простоту синтаксиса. Внешне исходный код программы на Лиспе отличается обилием круглых скобок; редактирование программ значительно упрощается использованием текстового редактора, поддерживающего автоматическое выравнивание кода, подсветку соответствующих пар скобок и команды рода «перейти через список вправо». Хорошо приспособлен к кодированию на Лиспе редактор Emacs.
· Средства автоматизации разработки экспертных систем
Дополнительные модули
Под дополнительными модулями понимаются те полезные программы, которые можно выполнять вместе с приложением. Как правило, такие программы реализуют некоторые специальные функции, как бы "снимая их с полки", причем для обращения к таким функциям не требуется что-либо программировать в основном приложении или заниматься его индивидуальной настройкой. Одним из примеров такого рода дополнительного модуля может служить программный пакет Simkit из комплекта среды КЕЕ. Этот пакет позволяет оснастить экспертную систему методами моделирования.
· Оболочки экспертных систем
Оболочки экспертных систем - программный продукт, обладающий средствами представления знаний для определенных предметных областей. Задача пользователя заключается не в непосредственном программировании, а в формализации и вводе знаний с использованием предоставленных оболочкой возможностей. Недостатком этих систем можно считать невозможность охвата одной системой всех существующих предметных областей. Примером могут служить ИНТЕРЭКСПЕРТ, РС+, VP-Expert.
3. Разработка экспертной системы «Сотовые телефоны»
3.1 Формализация задачи – дерево решения задачи
Составим дерево решения задачи по средствам ответов на вопросы Да-Нет:
Рисунок 2 - Дерево решения задачи
3.2 Формирование правил – схема
Рисунок 3 - Дерево правил
Заключение
В ходе выполнения лабораторной работы была создана экспертная система “Сотовые телефоны”, построено дерево решения задачи, правил – схема, составлена таблица “атрибут-предикат-значение”.
Список литературы
1. Братко И. Программирование на языке Пролог для искусственного интеллекта.- М.: Мир, 1990.
2. Марселлус Д.Н. Программирование экспертных систем на Турбо Прологе.- М.: Финансы и статистика, 1994.
3. Нейлор К. Как построить свою экспертную систему.- М.: Энергоатомиздат, 1991.
4. Нильсон Н.Д. Искусственный интеллект. Методы поиска решений. - М.: Мир, 1973.
5. Сафонов В.О. Экспертные системы - интеллектуальные помощники специалистов. - С.-Пб: Санкт-Петербургская организация общества “Знания” России, 1992.
Листинг
database
yes (symbol)
no (symbol)
predicates
begin
answer
question(symbol)
sotka(symbol)
priznak(symbol)
add_to_database(symbol,char)
input_simbol(char,char)
otvet(char)
repeat
clear_from_database
goal
begin.
clauses
begin:-
makewindow (2,23,30," klassifikaciya Sotovyh telefonov",0,0,25,80),
gotowindow(2),
nl,write ("Otvet’te na voprosy:"),nl,nl,
answer,
not(clear_from_database),
readchar(X),
nl,nl,nl,nl,
write ("Nfzhmite lubuu klavishu"),
removewindow,
exit.
answer:-
sotka (X),!,nl,
write (" Otvet: ",X,"."),nl.
question(Y):-
write ("Vopros: ",Y,"? "),
otvet(X),
write(X),nl,
add_to_database (Y,X).
input_simbol(C,'y'):- C='y',!.
input_simbol(C,'n'):- C='n',!.
input_simbol(C,'y'):- C='Y',!.
input_simbol(C,'n'):- C='N',!.
otvet(C):-
repeat,
readchar(X),
input_simbol(X,C),!.
repeat.
repeat:-repeat.
priznak (Y):-
yes (Y),!.
priznak (Y):-
not (no (Y)),
question (Y).
add_to_database (Y,'y'):- assertz (yes (Y)).
add_to_database (Y,'n'):- assertz (no (Y)),fail.
clear_from_database:- retract (yes(_)),fail.
clear_from_database:- retract (no(_)),fail.
sotka("Sony Ericsson"):-
priznak("U Vas NE sensornyi telefon?"),
priznak("U nego cvetnoy ekran?"),
priznak("Est’ Camera?"),
priznak("Upravlyaete Joystikom?").
sotka("Fly"):-
priznak("U Vas NE sensornyi telefon?"),
priznak("U nego cvetnoy ekran?"),
priznak("Est’ Camera?"),
priznak("Vy ne upravlyaete joystikom?").
sotka("Motorolla"):-
priznak("U Vas NE sensornyi telefon?"),
priznak("U nego cvetnoy ekran?"),
priznak("net Camery?").
sotka("Siemens"):-
priznak("U Vas NE sensornyi telefon?"),
priznak("Ecran U Vas cherno-beliy?"),
priznak("V telefon vstroen fonarik?").
sotka("Nokia 3310 aka Kirpich"):-
priznak("U Vas NE sensornyi telefon?"),
priznak("Ecran U Vas cherno-beliy?"),
priznak("V telephone net fonarika?").
sotka("iPhone"):-
priznak("Sensorniy ekran?"),
priznak(" Operacionnaya Sistema - iOS?").
sotka("HTC/Samsung"):-
priznak("Sensorniy ekran?"),
priznak("Operacionnaya Sistema - Android?").
sotka("Dannoi klassifikacii ne obnaruzheno").
Приложение А
Рисунок 4 – Классификация сотовых телефонов
Рисунок 5 – Классификация сотовых телефонов
Рисунок 6 – Классификация сотовых телефонов