Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экспертная система Turbo Prolog! 
V
    Опции темы
bhgbx
Дата 13.1.2014, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 18.11.2011

Репутация: нет
Всего: нет



Доброго всем времени суток. Нужна ваша помощь. Есть пример экспертной системы на Prolog и ее если возможно немного преобразовать под необходимый вариант. Сначала идет основной код системы затем вариант, под который ее необходимо модернизировать. Вариант-способ ввода. Система должна быть только в TP

 DOMAINS
 fact = Symbol
 condlist = symbol*
 PREDICATES
 run
 dial_win(integer)
 do(Char)
 repeat
 addrule
 addfact
 testfact(fact)
 testrule(fact,fact)
 testgoal(fact)
 do_goal
 DATABASE
 rule(fact,fact)
 fact(fact)
 GOAL
 run.
 CLAUSES
 repeat.
 repeat:-repeat.
 run:-makewindow(1,1,31,"РЕЖИМЫ РАБОТЫ",2,2,8,30),
 makewindow(2,1,31,"Ввод правил и фактов",10,2,10,50), 
 shiftwindow(2),attribute(30),clearwindow,
 shiftwindow(1),attribute(30),clearwindow,
 field_str(0,1,25,"1 - Добавить правило"), 
 field_str(1,1,25,"2 - Добавить факт "), 
 field_str(2,1,25,"3 - Логический вывод"), 
 field_str(3,1,25,"4 - Сохранить БЗ "),
 field_str(4,1,25,"5 - Загрузить БЗ "),
 field_str(5,1,25,"6 - Конец работы "),
 retractall(_),
 /* Основной цикл МЕНЮ */
 repeat,shiftwindow(1),readchar(Key), do(Key). 
 do('1'):-addrule,fail. 
 do('2'):-addfact,fail. 
 do('3'):-do_goal,write("Цель истинна!"),nl,!,fail. 
 do('3'):-write("Цель ложна!"),nl,fail. 
 do('4'):-dial_win(31),retractall(fact(_)),
 deletefile("expert.db"),save("expert.db"),
 write("БЗ сохранена!"),nl,fail. 
 do('5'):-dial_win(31),consult("expert.db"),
 write("БЗ загружена!"),nl,fail. 
 do('6'). 
 dial_win(Atr):-shiftwindow(2),attribute(Atr).
 addfact:-shiftwindow(2), attribute(30),
 write("Введите факт : "), readln(Fact),Fact<>"",
 testfact(Fact).
 addrule:-dial_win(30),
 write("Предпосылка : "), readln(Cond),Cond<>"",
 write("Заключение : "), readln(Concl),Concl<>"",
 testrule(Cond,Concl).
 testfact(F):-fact(F), write("ERROR: Факт есть в БЗ !"), nl. 
 testfact(F):-not(fact(F)), assert(fact(F)), write("OK"), nl.
 testrule(F,Z):-rule(F,Z), write("ERROR: Правило есть в БЗ !"),
 nl. 
 testrule(F,Z):-not(rule(F,Z)), assert(rule(F,Z)), write("OK"),
 nl.
 do_goal :-dial_win(28),write("Введите цель : "), readln(G),
 G<>"", testgoal(G).
 testgoal(G):-fact(G),!.
 testgoal(G):-rule(C,G),testgoal©.

 ВАРИАНТЫ ЗАДАНИЙ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ.
 Правила Базы Правил поименованы и могут содержать произвольное количество фактов в предпосылке (левой части правила). Варианты представления Базы Правил и Базы Фактов приведены на примере представления правила
 правило № 5: если a и b и c то d
 и наличия в рабочей памяти фактов a, b, c.

 База правил.
 rule(["правило № 5",d], [a,b,c])
 База фактов:
 fact(a), fact(b), fact©
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0353 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.