Разработка программы в помощь медикам в постановке диагноза

Федеральное агентство по образованию

ФГОУ ВПО

Чувашский государственный университет им. И.Н. Ульянова

Алатырский филиал

Факультет управления и экономики

Кафедра высшей математики и информационных технологий

















Курсовая работа

По предмету: Рекурсивно-логическое программирование

На тему: Разработка программы в помощь медикам в постановке диагноза





















Алатырь 2009


Содержание



Введение

1. Разработка структур экспортных систем

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

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

4. Структура базы знаний экспертной системы	

Заключение

Список литературы

Приложение 1. Релизация экспертной системы

Приложение 2. Результат работы экспертной системы









Введение



Экспертная система – один из типов систем искусственного интеллекта; программы, которые могут воспроизводить процесс решения проблемы подобно человеку-эксперту в некоторой, обычно узкой, прикладной области. Отличительной чертой компьютерных программ экспертных систем, является их способность накапливать, модифицировать и использовать знания и опыт наиболее квалифицированных специалистов в какой-либо предметной области для решения практических задач. Экспертные системы используют механизмы автоматического рассуждения (вывода) и так называемые слабые методы искусственного интеллекта, такие, как, эвристический поиск решения. Их область применения извлечения знаний.

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

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





 



1. Разработка структур экспертных систем



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

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

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

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

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

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

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

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

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

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

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

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



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



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

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

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

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



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



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

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

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

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

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

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

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

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

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

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



4. Структура базы знаний экспертной системы



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

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

1) головная боль;

2) кашель;

3) насморк;

4) высокая температура;

5) боль в горле;

6) тошнота;

7) слабость;

8) плохой сон;

9) изжога;

10)  раздражимость;

11) охриплость;

12) похудание.



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

Диагноз

Характеристики

Грипп

1, 2, 3, 7

ОРВИ

2, 3, 5, 7

Мигрень

1, 6, 7

Гиповитаминоз

1, 7, 8

Гастрит

6, 7, 9

Бессоница

7, 8, 10

Ларингит

2, 5, 11

Фарингит

2, 4, 5

Язва желудка

6, 7, 9, 12






Заключение



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

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

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









Список использованной литературы



		Емельянов В.А., Емельянов Б.В. Курсовое проектирование. Рекурсивно-логическое программирование: разработка экспертных систем и систем принятия решений. Учебно-метод. пособие, Чуваш. Ун-т. Чебоксары, 2006.

		Ц. Ин, Д. Соломон. Использование Турбо-Пролога: Пер. с англ.-М.:Мир, 1993.

		И. Братко. Программирование на языке пролог для искусственного интеллекта. М.: Мир, 1990.






Приложения



Приложение 1. Реализация экспертной системы



domains

database

xpositive(symbol,symbol)

xnegative(symbol,symbol)

predicates

Zastavka.

do_expert.

do_consulting

ask(symbol,symbol)

elem_is(symbol)

positive(symbol,symbol)

negative(symbol,symbol)

remember(symbol,symbol,symbol)

clear_facts

goal

Zastavka,

do_expert.



clauses



Zastavka:-

makewindow(1,10,31,"",0,0,25,80),

nl,nl,nl,

write("Expertnaya systema "),nl,nl,

write(Kursovaya rabota: Pomosh' medikam v postanovke diagnoza"),nl,

nl,nl,nl,nl,nl,nl,nl,

write("vipolnil: "),nl,

write("proveril:"),nl,nl,nl,nl,nl,nl,nl,nl,

write("61-06"),nl,

write("AFCHGU"),nl,

write(""),nl,nl,

readchar(_),removewindow(1,1).

do_expert:-

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

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

nl,write(" Postanovka diagnoza "),

nl,write(" "),

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

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

nl,nl,

do_consulting,nl,

readchar(_),

removewindow,

exit. 

do_consulting:-

elem_is(X),!,nl,

write("Vash diagnoz: ",X,"."),nl,

clear_facts.

do_consulting:-

nl,write("Ssory,vash diagnoz ne ustanovlen !"),

clear_facts.

ask(X,Y):-

write(" Doctor> U vas est' ",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.

elem_is("Gripp (Antigrippin)"):-

positive(elem,"golovnaya bol"),

positive(elem,"kashel"),

positive(elem,"nasmork"),

positive(elem,"slabost"),

positive(elem,"visokaya temperatura"),!.

elem_is("ORVI (Fervex)"):-

positive(elem,"kashel"),

positive(elem,"nasmork"),

positive(elem,"slabost"),

positive(elem,"bol v gorle"),!.

elem_is("Migren (Migrenol)"):-

positive(elem,"golovnaya bol"),

positive(elem,"slabost"),

positive(elem,"toshnota"),!.

elem_is("Gipovitaminoz (Duovit)"):-

positive(elem,"golovnaya bol"),

positive(elem,"slabost"),

positive(elem,"plohoi son"),!.

elem_is("Gastrit (Gastrofarm)"):-

positive(elem,"slabost"),

positive(elem,"toshnota"),

positive(elem,"izghoga"),!.

elem_is("Bessonica (Novo-Passit)"):-

positive(elem,"slabost"),

positive(elem,"plohoi son"),

positive(elem,"razdrazhimost'"),!.

elem_is("Laringit (Antibiotiki)"):-

positive(elem,"kashel"),

positive(elem,"bol v gorle"),

positive(elem,"ohriplost'"),!.

elem_is("Faringit (Antibiotiki)"):-

positive(elem,"slabost"),

positive(elem,"kashel"),

positive(elem,"bol v gorle"),!.

elem_is("Faringit (Antibiotiki)"):-

positive(elem,"visokaya temperatura"),

positive(elem,"kashel"),

positive(elem,"bol v gorle"),!.

elem_is("Jazva zheludka (Antibiotiki)"):-

positive(elem,"slabost"),

positive(elem,"toshnota"),

positive(elem,"izghoga"),

positive(elem,"pohudanie"),!.






Приложение 2. Результат работы экспертной системы