![]() |
|
|
![]()
|
|
| bhgbx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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© |
|||
|
||||
![]()
|
| Правила форума Prolog | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Prolog | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |