Целью данной курсовой работы является закрепление теоретических знаний и практических навыков в области логического программирования, а также приобретение практического опыта при проектировании сложных интерактивных систем и программ.
В процессе выполнения курсовой работы, мной были приобретены не только навыки в области программирования на языке Пролог и изучения принципа логического программирования, но и навыки программной реализации экспертных систем.
Исходя из приведенной экспертной системы для определения диагноза, можно сделать вывод, что Пролог предоставляет богатые возможности для реализации экспертных систем и написания «дружественного интерфейса» для общения пользователя с программой. Пролог пригоден для разработки систем экспертных консультаций, поскольку в нем имеются и язык представления знаний, и общецелевая стратегия решения задач, основанная на принципе резолюции.
Список использованной литературы
1. Емельянов В.А., Емельянов Б.В. Курсовое проектирование. Рекурсивно-логическое программирование: разработка экспертных систем и систем принятия решений. Учебно-метод. пособие, Чуваш. Ун-т. Чебоксары, 2006.
2. Ц. Ин, Д. Соломон. Использование Турбо-Пролога: Пер. с англ.-М.:Мир, 1993.
3. И. Братко. Программирование на языке пролог для искусственного интеллекта. М.: Мир, 1990.
Приложения
Приложение 1. Реализация экспертной системы
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. Результат работы экспертной системы