Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2013, 12:22   #1
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию Экспертная система. Турбо-Пролог

Добрый день! Выдали курсовую работу. Необходимо создать экспертную систему. Предметная область - станочное оборудование. Делала по аналогии с примерами, которых большое множество в сети.
Саму базу знаний записала в отдельный файл:
Код:
cond(1,"Необходимо выполнить токарную операцию")
cond(2,"Необходимо получить отверстие")
cond(3,"Необходимо обработать отверстие")
cond(4,"Необходимо произвести шлифование")
cond(5,"Необходимо выполнить операцию фрезерования")
cond(6,"Необходимо произвести обработку зубьев")
cond(7,"Необходимо произвести обработку протяжками")
cond(8,"Оборудование универсальное")
cond(9,"Оборудование специализированное")
cond(10,"Оборудование специальное")
cond(11,"Нормальная точность")
cond(12,"Повышенная точность")
cond(13,"Высокая точность")
cond(14,"Особо высокая точность")
cond(15,"Мастер-станки")
cond(16,"Оборудование неавтоматизированное")
cond(17,"Автоматы или полуавтоматы")
cond(18,"Станки с ЧПУ“")
rule("16K20",[1,2,3,8,11,16])
rule("1K62",[1,8,11,17])
rule("6H81",[5,8,11,17])
rule("2C125",[2,8,11,16])
rule("5K32",[6,8,9,11,17])
rule("1A240-60",[1,9,11,17])
rule("ИР-500МФ4",[3,5,8,11,18])
rule("3M1510",[4,8,11,17])
Код самой экспертной системы:
Код:
DOMAINS
l_i=i*
l_s=s*
i=integer
s=string
c=char
structura=str(i,s)
l_str=structura*
file=myfile

DATABASE
rule(s,l_i)
cond(structura)

PREDICATES
nondeterm repeat
nondeterm expert
nondeterm menu
nondeterm process(c)
nondeterm load
nondeterm save_bs
nondeterm clear
nondeterm consulting(s,l_str,l_i)
nondeterm transform(c,c)
nondeterm add_list(c,i,l_i,l_i)
nondeterm find(s,l_i)
nondeterm ravn(l_i,l_i)
nondeterm belong(i,l_i)
nondeterm title

CLAUSES
expert:- title,load,menu,save_bs,clear.
menu:-repeat, write("**************************************************"),nl,nl,
write("Выберете один из пунктов меню:"),nl,nl,
write("1 - Консультация"),nl,
write(""),nl,
write("0 - Выход"),nl,nl,
write("**************************************************"),nl,nl,
readchar(C),process(C),!.

process('1'):-save_bs,clear,load,nl,write(""),nl,
findall(Str,cond(Str),List),
consulting(" ",List,Cond),
find(Oborud,Cond),nl,write(" ",Oborud),nl,nl,menu.
process('0'):-write("Желаете выйти из программы? (y/n)"),
readln(Ans),upper_lower(Ans,Ans1),frontchar(Ans1,'y',_),!.
process(_):-write("Ошибка ввода!"),nl,!.
repeat.
repeat:-repeat.
load:-consult("BASA.PRO"),!.
load:-write("Ошибка при агрузке базы из файла!").
save_bs:-save("BASA.PRO").
title:-write("***************Экспертная система***************"),nl,
write("**********Определение станочного оборудования**********"),nl,nl.
clear:-retractall(rule(_,_)),retractall(cond(_)).
consulting(_,[],[]).
consulting(Oborud,[str(N,Cond)|T1],List1):-nl,
write(Cond,"?(д/*н)"),nl,readchar(Answer1),write(Answer1),
transform(Answer1,Answer2),consulting(Oborud,T1,List2),
add_list(Answer2,N,List2,List1),!.
transform('д','y').
transform('Д','y').
transform('Y','y').
transform('y','y').
transform('1','y').
transform(_,'n').
add_list('y',H,T,[H|T]):-!.
add_list(_,_,List,List).
find(Str,Cond1):-rule(Oborud,Cond2),ravn(Cond1,Cond2),
ravn(Cond2,Cond1),concat(Oborud," является искомым станком",Str),!.
find("По указанным параметрам ничего не найдено",_).
ravn([],_).
ravn([H|T],L):-belong(H,L),ravn(T,L).
belong(E1,[E1|_]).
belong(E1,[H|T]):-E1<>H,belong(E1,T).

GOAL
expert.
В строке
load:-consult("BASA.PRO"),!.
выдается ошибка:
Functor not found in domain (during term reading).

Подскажите,пожалуйста, что не так. Пролог мне дается с большим трудом. Поэтому я очень рассчитываю на Вашу помощь!
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 14.11.2013, 13:12   #2
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Цитата:
Functor not found in domain
не описан в domain ваш consult...
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 14.11.2013 в 13:21.
SaLoKiN вне форума Ответить с цитированием
Старый 14.11.2013, 13:54   #3
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

Но ведь это стандартный предикат. Его же, кажется не нужно описывать.
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 14.11.2013, 16:42   #4
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

Уважаемые, очень прошу, помогите! Никак не могу разобраться!
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспертная система Rusica PHP 2 24.09.2012 13:48
экспертная система oleg_pobeda 55 Помощь студентам 0 25.07.2012 22:49
Экспертная система Lazio Фриланс 1 16.05.2012 14:58
Система принятия решения (Экспертная система) daranton Microsoft Office Excel 4 01.05.2010 17:55
Экспертная система TheX3 Помощь студентам 2 01.04.2009 18:20