Реферат: Написание экспертной системы на языке Turbo-Prolog

 Задание:Создать экспретную системупо породам дерева

 Теория:

  Структураэкспертных систем

 

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

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

      1.База знаний (БЗ).

2. Механизм вывода (МВ).

3. Система пользовательскогоинтерфейса (СПИ).

 Базазнаний — центральная часть экспертной системы. Она содержит правила,описывающие отношения или явления, методы и знания для решения задач из областиприменения системы. Можно представлять базу знаний состоящей из фактическихзнаний и зна ний, которые используются для вывода других знаний. Утверждение«Джон Ф. Кеннеди был 35-м президентом Соединенных Штатов» — примерфактического знания. «Если у вас болит голова, то примите две таблеткицитрамона» — пример знания для вывода. Сама база знаний обычнорасполагается на диске или другом носителе.

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

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

 и передает результаты программе интерфейса спользователем.

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

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

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

 Хорошо разработанные оболочки экспертныхсистем обычно содержат механизм для добавления и обновления информации в базезнаний.

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

 

 Представление знаний

 

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

 Экспертные системы часто создаются«инженером по знаниям»(или проектировщиками экспертных систем),которые работают с человеком-экспертом, чтобы закодировать знания эксперта вбазезнаний.

 Первый способ — это классификация и помещениефактов и чисел (фрагментов фактического знания) в правила Турбо-Пролога.

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

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

 Система пользовательского интерфейса

 

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

 1. Обработка данных, полученных с клавиатуры,и высвечивание вводимых и выводимых данных на экране.

 2. Поддержка диалога между пользователем исистемой.

 3. Распознавание ситуации непонимания междупользователем и системой.

 4. Обеспечение «дружественности» поотношению к пользователю.

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

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

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

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

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

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

Пользователь также должен иметьвозможность взаимодействовать с экспертной системой естественным образом. Видеале пользователь должен иметь возможность использовать естественный язык

 

 Экспертная система на правилах

   

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

 Таким образом, экспертная система,базирующаяся на правилах (на Турбо-Прологе) содержит множество правил, которыевызываются посредством входных данных в момент сопоставления. Экспертнаясистема также содержит интерпретатор в механизме вывода, который выбирает иактивизирует различные модули системы.

 Работу этого интерпретатора можно описатьпоследовательностьютрех шагов:

 1. Интерпретаторсопоставляет образец правила с элементами данных в базе знаний.

 2. Если можно вызвать более одного правила, тоинтерпретатор использует механизм разрешения конфликта для выбора правила.

 3. Интерпретатор применяет выбранное правило,чтобы найти ответ на вопрос.

 Этот трехшаговый процесс интерпретацииявляется циклическим и называется циклом «распознавание-действие».

 В системе, базирующейся на правилах,количество продукционных правил определяет размер базы знаний. Некоторыенаиболее сложные системы имеют базы знаний с более чем 5000 продукционныхправил.

 1. Использовать минимально достаточноемножество условий при определении продукционного правила.

 2. Избегать противоречащих продукционныхправил.

 3. Конструировать правила, опираясь наструктуру присущую предметной области.

      Экспертныесистемы, базирующиеся на логике

 

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

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

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

 Интерпретатор выполняет различные функциивнутри системы на основе следующей схемы:

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

 2. Если может быть вызвано более одногоправила, то система использует возможности Турбо-Пролога для разрешенияконфликта. Следовательно пользователю/программисту не нужно рассматриватьпотенциально возможные конфликты.

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

 Так же как и в системе, базирующейся направилах, данный циклический процесс является процессом распознавание-действие.

 Красота и большие возможности системы,основанной на логике, заключаются в том, что она отражает структуру самогоТурбо-Пролога. Этим объясняется тот факт, что она очень эффективна в работе.

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

 Структура базы знаний экспертной системы для выбора породы дерева.

 

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

 строящихся правилах.

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

 1) лиственная;

 2) хвойная;

 3) мягкая;

 4) твердая;

 5) очень твердая;

 6) серо-коричневая;

 7) светло-красная;

 8) светлая;

 9) темная;

10)смолистая;

11)очень смолистая;

12)Крупная текстура;

13) Мелкаятекстура.

 

 Каждая характеристикадля конкретной породы либо верна, либо не верна. Для каждой породы справедливыследующие характеристики:

 

     Порода             Характеристики   

  Дуб             1,4,6,13

  Бук             1,4,7,12

  Осина           1,3,8,13

  Тис             1,5,9

  Ель             2,3,8,10

  Сосна           2,3,8,11

 Способ использования этой информации зависитот реализации экспертной системы.

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

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

 

 Проектирование и реализация системы,базирующейся на правилах.

 Сначала необходимо сделать декларации базыданных. База данных будет хранить ответы пользователя на вопросы системыпользовательского интерфейса (СПИ). Эти данные являются утвердительными илиотрицательными ответами.

 Далее нужнообъявить предикаты для выполнения вывода (машина вывода) и длявзаимодействия с пользователем (система пользовательского интерфейса).

 Все вместе это следующие декларации:

 

 database

 

 xpositive(symbol,symbol)

 xnegative(symbol,symbol)

 

 predicates

 

  do_expert_job

  do_consulting

  ask(symbol,symbol)

  dog_is(symbol)

  it_is(symbol)

 positive(symbol,symbol)

 negative(symbol,symbol)

 remember(symbol,symbol,symbol)

  clear_facts

 

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

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

 Правило it_is производит эту идентификацию.Затем правило positive идентифицирует характеристики собаки в каждом случае.

 И it_is и positive используются механизмомвывода. Ниже приведено полное продукционное правило для дуба:

 

tree_is(«Дуб»):-

 positive(tree,«Лиственная»),

 positive(tree,«Твердая»),

 positive(tree,«Серо_Коричневая»),

 positive(tree,«Мелкая_текстура»),!.

 Механизм вывода должен иметь правила для управления даннымивводимыми пользователем, для сопоставления их с продукционными правилами исохранения «трассы» (или запоминания) отрицательных и утвердительныхответов. Правила positive и negativeиспользуютсядля сопоставления данных пользователя с данными в продукционных правилах.Правило 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)(спроси) запрашивает данные у пользователя и сохраняет ответы в базе знаний.Кроме того, окно обеспечивает дополнительное удобство во время консультации.Система пользовательского интерфейса полностью приведена ниже:

  

 do_expert_job :-

  setup_window,

  do_consulting,

  write(«Pressspace bar.»),nl,

  readch(_),

  removewindow,

  exit.

 

 setup_window :-

 makewindow(1,7,7,«AN EXPERT SYSTEM»,1,16,22,58),

  nl,write("* * ** * * * * * * * * * * * * * * * *"),

  nl,write(" A Tree Expert "),

  nl,write("   "),

  nl,write(«Thisis a treeidentification system. „),

 nl,write(“Please answer the question about „),

  nl,write(“thedog you would like by typing in „),

  nl,write(“'yes'or 'no'.  »),

  nl,write("* * ** * * * * * * * * * * * * * * * *"),

  nl,nl.

 

 do_consulting :-

  dog_is(X),!,nl,

  write(«the tree you have indicated isa(n)»,X,"."),nl,

  clear_facts.

 do_consulting :-

  nl,write(«SorryI can't help you! „),

  clear_facts.

 

 ask(X,Y) :-

 write(“ Question:- »,X," it ",Y," ?"),

 readln(Reply),

 remember(X,Y,Reply).

  

   Заметьте, что главныймодуль do_expert_job вызывает модули setup_window (установи окно) иdo_consulting (выполни консультацию). Консультирующий модуль имеет две альтернативныеформы. Первая взаимодействует с механизмом вывода; если результат цикла«распознавание — действие» положительный, то результатсообщается пользователю. Вторая формасообщает о негативном результате.

 Теперь можно соединить отдельные компоненты исформировать полную экспертную систему на правилах для выбора породы дерева.

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

Реализация:

domains

database

 xpositive(symbol,symbol)

 xnegative(symbol,symbol)

predicates

 do_expert_bird.

 do_consulting

 ask(symbol,symbol)

 tree_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,«ExpertSystem»,1,3,22,71),

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

  nl,write(" A Tree Expert "),

  nl,write("   "),

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

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

 nl,nl,

 do_consulting,

 write(«Pressspace bar.»),nl,

 readchar(_),

 removewindow,

 exit.

 do_consulting:-

 tree_is(X),!,nl,

 write("Tree",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.

tree_is(«Дуб»):-

 positive(tree,«Лиственная»),

 positive(tree,«Твердая»),

 positive(tree,«Серо_Коричневая»),

 positive(tree,«Мелкая_текстура»),!.

tree_is(«Бук»):-

 positive(tree,«Лиственная»),

 positive(tree,«Твердая»),

 positive(tree,«Светло_Красная»),

 positive(tree,«Крупная_текстура»),!.

tree_is(«Осина»):-

 positive(tree,«Лиственная»),

 positive(tree,«Мягкая»),

 positive(tree,«Светлая»),

 positive(tree,«Мелкая_текстура»),!.

tree_is(«Тис»):-

 positive(tree,«Лиственная»),

 positive(tree,«Очень_твердая»),

 positive(tree,«Темная»),!.

tree_is(«Ель»):-

 positive(tree,«Хвойная»),

 positive(tree,«Мягкая»),

 positive(tree,«Светлая»),

 positive(tree,«Смолистая»),!.

tree_is(«Сосна»):-

 positive(tree,«Хвойная»),

 positive(tree,«Мягкая»),

 positive(tree,«Светлая»),

 positive(tree,«Очень_Смолистая»),!.

tree_is(«Столб»):-

 positive(tree,«Не_дерево»),

 positive(tree,«Очень_Твердый»),!.

еще рефераты
Еще работы по программированию, базе данных