Курсовой проект - Экспертная система - файл n1.doc

приобрести
Курсовой проект - Экспертная система
скачать (115.5 kb.)
Доступные файлы (1):
n1.doc116kb.30.05.2012 00:04скачать

n1.doc

Министерство образования Российской Федерации

Новосибирский Государственный Технический Университет


Бердский филиал



Курсовой проект по дисциплине

"Функциональное и логическое программирование"
Экспертная система


Выполнила:


студентка 3 курса

Булгакова Н.

Группа:ВТБ-81
Проверил:


Бычков М. И.




Бердск 2010



Тема курсовой работы:


Цель работы:


Меню программы включает в себя:

  1. Информация о работе и её авторе

  2. Старт экспертной системы;

  3. Выход из программы.



Содержание



Введение.
Структура экспертных систем:

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

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

  1. База знаний;

  2. Механизм вывода;

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


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

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

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

Меню данной программы состоит из трёх пунктов:

1- About program - вывод данных о программе и об авторе

2- Begin - режим работы с системой

3- Quit - выход

Процедура switch(1) выводит информацию о задании и сведения об авторе программы.


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


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

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


  1. Это газ;

  2. Это инертный газ;

  3. Это жидкость;

  4. Это галоген;

  5. Это неметалл;

  6. Без вкуса;

  1. Без цвета;

  1. Имеет цвет (матово-черный или прозрачный);

  1. Имеет цвет (темно-серый с фиолетовым металлическим блеском);

  2. Имеет цвет (бледно-желтый);

  3. Имеет цвет (желто-зеленый);

  4. Имеет цвет (красно-бурый);

  5. Имеет цвет (бледно-желтый);

  1. Без запаха;

  2. С резким запахом;

  1. Самый активный неметалл;

  2. Разрушает многие материалы;

  1. Хрупкий;

  2. Ядовит;

  3. Тяжелый;

  1. Состоит из двухатомных молекул;

  2. Модификации – черный, серый, красный;

  3. Модификации –красный, белый, желтый, черный;

  4. Модификации – двухатомный и трехатомный;

  5. Модификации – алмаз и графит;

  1. Единственное вещество, которое не отвердевает при нормальном давлении;

  2. Самый распространенный элемент космоса;

  3. Нетоксичен.

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


Водород

1,6,7,14,27,28.

Гелий

2,6,7,14,26.

Углерод

5,8,23.

Азот

1,5,7,14,20.

Кислород

1,5,7,14,24.

Фтор

1,4,13,15,16,17.

Неон

2,6,7,14.

Фосфор

6,22.

Селен

6,18,22.

Хлор

1,4,11,15,19.

Бром

3,4,12,15,20.

Йод

4,5,9,15.


Раздел описания предикатов.
С помощью процедуры start раздела Goal, инициализируется начало выполнения программы. Эта процедура запускает процедуру вывода главного меню.
Эта процедура выводит список пунктов главного меню menu и ожидает от пользователя ввода числа, которое будет занесено в переменную Choice. После этого вызывается процедура обработки основных режимов switch, в которую переменная Choice передается в качестве аргумента. В процедуре использован предикат repeat, который определен следующим образом:
repeat.

repeat:-repeat.
В связи с этим после возврата из процедуры switch в случае, если Choice не равно 3, происходит повторный выход пунктов меню и ожидания ввода числа.

Предикаты базы данных xpositive и xnegative используются для хранения утвердительных и отрицательных ответов пользователя.

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

И animal_is и positive используются механизмом вывода.

Также в описании каждого элемента используется правило negative, которое следит за тем, чтобы 2 несовместимых факта не встретились в описании вида. Так, например, если пользователь ответил, что этот элемент ГАЗ -> ГАЛОГЕН ->и т. д., то он уже никак не может быть ЖИДКОСТЬ или ХРУПКИЙ.

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

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

Правило ask задаёт вопросы пользователю о свойствах элемента, получая ответ ‘y’ или ‘n’, сохраняет его в правиле remember.
Вывод:

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

Листинг программы.
domains
r = real
database
xpositive(symbol,symbol)

xnegative(symbol,symbol)
predicates
run

menu

start

repeat

switch(r)

do_consulting

ask(symbol,symbol)

element(symbol)

positive(symbol,symbol)

negative(symbol,symbol)

remember(symbol,symbol,symbol)

clear_facts


clauses

repeat.

repeat:-repeat.
start:-

makewindow(10, 3, 14, "Expert System", 0, 0, 25, 80),

clearwindow, menu.

menu:-

repeat,

clearwindow,

write("\n MENU:"),

write("\n\n\n 1 - About program"),

write("\n\n 2 - Begin"),

write("\n\n 3 - Quit"),

write("\n\n\n Enter number: "),

readint(Choice),

Choice >= 1,

Choice < 4,

clearwindow,

switch(Choice),

clearwindow,

Choice = 3,

retractall(_),

removewindow.

%================================================================================
switch(1):-

makewindow(1, 3, 1, " About program ", 1, 1, 16, 78),

write("\n _-_-_-_-_-_-_Kurs proekt_-_-_-_-_-_-_
"),

write("\n\n Opisanie himicheskih elementov - gazy i galogeny. "),

write("\n\n Programma zadaet pol'zovately voprosi, "),

write("\n kotorie unikal'no harakterizyut element. "),

write("\n Na voprosi nugno otvechat'- 'da'-y ili 'net'-n. "),

write("\n Na osnovanii etih otvetov pgogramma daet otvet. "),

write("\n\n Avtor: "),

write("\n VTB-81 "),

write("\n Bulgakova Natalia. "),

readchar(_),

removewindow.

%
==============================================================


switch(2):-

makewindow(1, 3, 2, " Work ", 1, 1, 23, 78),

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

nl, write(" Pojaluista ,otvechaite na vopros 'da'-y ili 'net'-n."),

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

nl, nl,

run,

readchar(_),

removewindow.

%==============================================================================


switch(3):-

retractall(_),

exit.

%================================================================


run:-

do_consulting,

readchar(_).

do_consulting:-

element(X), !, nl,

write("Element ",X, "."), nl,

readchar(_),

clear_facts.
do_consulting:-

nl, write(" Element ne otnositsia k dannim klassam! "),

readchar(_),

clear_facts.
ask(X,Y):-

write(" Svoistvo:",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, y):-

asserta(xpositive(X, Y)).

remember(X, Y, n):-

asserta(xnegative(X, Y)),

fail.

clear_facts:-

retract(xpositive(_, _)),

fail.
clear_facts:-

retract(xnegative(_, _)),

fail.

%=========================Признаки================================
element("Vodorod ( Hydrogenium ), H"):-

positive(element,"gaz"),

positive(element,"bez cveta"),

positive(element,"bez zapaha"),

positive(element,"bez vkusa"),

positive(element,"netoksichen"),

positive(element,"samyi rasprostranennyi element kosmosa"),!.

%===============================================================================


element("Gelii ( Helium ), He"):-

positive(element,"inertnyi gaz"),

positive(element,"bez cveta"),

positive(element,"bez zapaha"),

positive(element,"bez vkusa"),

positive(element,"edinstvennoe veschestvo, kotoroe ne otverdevaet pri normal'nom
davlenii"),!.

%=================================================================================

element("Uglerod ( Carboneum ), C"):-

negative(element,"gaz"),

negative(element,"bez cveta"),

positive(element,"nemetall"),

positive(element,"matovo-chernyi ili prozrachnyi"),

positive(element,"modifikacii - almaz i grafit"),!.

%================================================================================


element("Azot ( Nitrogenium ), N"):-

positive(element,"nemetall"),

positive(element,"gaz"),

positive(element,"bez cveta"),

positive(element,"bez zapaha"),

positive(element,"sostoit iz dvuhatomnyh molekul"),!.

%=================================================================================

element("Kislorod ( Oxygenium ), O"):-

positive(element,"nemetall"),

positive(element,"gaz"),

positive(element,"bez cveta"),

positive(element,"bez zapaha"),

positive(element,"modifikacii dvuhatomnyi i trehatomnyi"),!.

%================================================================================
element("Ftor ( Fluorum ), F"):-

negative(element,"bez cveta"),

negative(element,"bez zapaha"),

positive(element,"galogen"),

positive(element,"gaz"),

positive(element,"bledno-jeltyi"),

positive(element,"s rezkim zapahom"),

positive(element,"samyi aktivnyi nemetall"),

positive(element,"razrushaet mnogie materialy"),!.

%=================================================================================

element("Neon ( Neon), Ne"):-

positive(element,"inertnyi gaz"),

positive(element,"bez cveta"),

positive(element,"bez zapaha"),

positive(element,"bez vkusa"),!.

%=============================================================================


element("Fosfor ( Phosphorus ), P"):-

negative(element,"bez cveta"),

negative(element,"gaz"),

positive(element,"nemetall"),

positive(element,"modifikacii krasnyi,belyi, jeltyi, chernyi"),!.

%=================================================================================

element("Selen ( Selenium ), Se"):-

negative(element,"bez cveta"),

negative(element,"gaz"),

positive(element,"nemetall"),

positive(element,"modifikacii chernyi, seryi, krasnyi"),

positive(element,"hrupkii"),!.

%=================================================================================
element("Hlor ( Chlorum ), Cl"):-

negative(element,"bez cveta"),

negative(element,"bez zapaha"),

positive(element,"galogen"),

positive(element,"gaz"),

positive(element,"jelto-zelenyi"),

positive(element,"s rezkim zapahom"),

positive(element,"yadovit"),!.

%=================================================================================
element("Brom ( Bromum ), Br"):-

negative(element,"bez cveta"),

negative(element,"bez zapaha"),

negative(element,"gaz"),

positive(element,"galogen"),

positive(element,"jidkost'"),

positive(element,"krasno-buryi"),

positive(element,"nepriyatnyi zapah"),

positive(element,"tyajelyi"),!.

%=================================================================================

element("Iod ( Iodum ), I"):-

negative(element,"bez cveta"),

negative(element,"bez zapaha"),

negative(element,"gaz"),

positive(element,"galogen"),

positive(element,"nemetall"),

positive(element,"temno-seryi s metallicheskim fioletovym bleskom"),

positive(element,"s rezkim zapahom"),!.

%=================================================================================
GOAL

start.


Министерство образования Российской Федерации
Учебный материал
© nashaucheba.ru
При копировании укажите ссылку.
обратиться к администрации