Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Продукционная База Знаний
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
simbalion simbalion вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.11.2006
Thumbs down 17.11.2006, 16:19

Разрабатываю пример продукционной базы правил для для распознающей системы в среде Turbo Prolog. Работа данной системы распознавания сводится к генерации гипотезы о принадлежности расстения к тому или иному классу и попытке подтвердить эту гипотезу.

Листинг программы:

Код:
DOMAINS
listquest = integer*.

DATABASE
fact(integer,string).

PREDICATES
rule(integer, string, string, listquest).
discover(listquest).
recognition(string).
complete(integer).
ask(integer).

CLAUSES
rule(1,"расстение","овощ",[1]).
rule(2,"расстение","ягода",[2]).
rule(3,"расстение","фрукт",[3]).
rule(4,"ягода","наземная",[4]).
rule(5,"ягода","куст",[5]).
rule(6,"ягода","дерево",[6]).
rule(7,"наземная","клубника",[7,8]).
rule(8,"наземная","клюква",[8,9,10]).
rule(9,"куст","смородина",[11]).
rule(10,"куст","крыжевник",[12]).
rule(11,"дерево","вишня",[13]).
rule(12,"дерево","облепиха",[14]).
rule(13,"фрукт","яблоко",[7,15]).
rule(14,"фрукт","ранетка",[9,16]).
rule(15,"овощ","корнеплод",[17]).
rule(16,"овощ","плетущееся_по_земле",[18]).
rule(17,"овощ","стручковое",[19]).
rule(18,"овощ","кустистое",[5,20]).
rule(19,"овощ","фитонцид",[21]).
rule(20,"корнеплод","морковь",[22]).
rule(21,"корнеплод","свекла",[23]).
rule(22,"плетущееся_по_земле","тыква",[24]).
rule(23,"плетущееся_по_земле","кабачок",[25,26]).
rule(24,"стручковое","горох",[27]).
rule(25,"стручковое","бобы",[28]).
rule(26,"кустистые","помидор",[8,29]).
rule(27,"кустистые","перец",[30]).
rule(28,"фитонцид","лук",[31,32]).
rule(29,"фитонцид","чеснок",[33,34]).

ask(X):-fact(X,"да"),!.
ask(X):-fact(X,"нет"),!,fail.

ask(1):-write("оно не растет на деревьях?"),!,complete(1).
ask(2):-write("оно имеет невскрывающийся плод?"),!,complete(2).
ask(3):-write("оно имеет вскрывающийся плод?"),!,complete(3).
ask(4):-write("оно растет около земли?"),!,complete(4).
ask(5):-write("оно растет на кустах?"),!,complete(5).
ask(6):-write("оно растет на деревьях?"),!,complete(6).
ask(7):-write("оно сладкое?"),!,complete(7).
ask(8):-write("оно красного цвета?"),!,complete(8).
ask(9):-write("оно кислое?"),!,complete(9).
ask(10):-write("оно растет на болотах?"),!,complete(10).
ask(11):-write("оно черного цвета?"),!,complete(11).
ask(12):-write("оно зеленого цвета?"),!,complete(12).
ask(13):-write("оно имеет большую косточку в серединке?"),!,complete(4).
ask(14):-write("оно оно оранжево-желтого цвета?"),!,complete(14).
ask(15):-write("оно большое?"),!,complete(15).
ask(16):-write("оно маленькое?"),!,complete(16).
ask(17):-write("съедобная часть является корнем расстения?"),!,complete(17).
ask(18):-write("стебель растения плетется по земле?"),!,complete(18).
ask(19):-write("съедобная часть растения находтся в стручке?"),!,complete(19).
ask(20):-write("стебль растения не имеет твердую кору?"),!,complete(20).
ask(21):-write("выделяет ли оно лечебное газообразное вещество?"),!,complete(21).
ask(22):-write("оно длинное и оранжевое?"),!,complete(22).
ask(23):-write("оно круглое и бордовое?"),!,complete(23).
ask(24):-write("из него делают на хеллоуин сташилку?"),!,complete(24).
ask(25):-write("оно имеет продолговатую форму?"),!,complete(25).
ask(26):-write("из него делают икру?"),!,complete(26).
ask(27):-write("плод внутри стучка мелкого размера?"),!,complete(27).
ask(28):-write("плод внутри сткучка крупного размера?"),!,complete(28).
ask(29):-write("из него делают кетчуп?"),!,complete(29).
ask(30):-write("из него делают лечо?"),!,complete(30).
ask(31):-write("оно состоит из одной головки?"),!,complete(31).
ask(32):-write("из него был сделан Чиполлино?"),!,complete(32).
ask(33):-write("оно состоит из долек?"),!,complete(33).
ask(34):-write("им защищаются от вампиров?"),!,complete(34).

recognition(X):-rule(N,X,Y,Z),discover(Z),!,
   write("____",X," - ",Y," по правилу ",N),nl,
   recognition(Y).
recognition("растение"):-write("это растение нам не известно"),!.
recognition(_).   

discover([]).
discover([X|Y]):-ask(X),discover(Y).

complete(X):-nl,read(Y),assert(fact(X,Y)),Y="да".

НО в результате её выполнения выводится следующая ошибка:
(указывая на предикат read) система говорит: Undeclared predicate or misspelling.

Типа предикат не объявлен или написан не правильно, но ведь read это встроенный предикат, который объявлять не нужно, да и в написании его ошибиться трудновато

Помогите, кто знает в чем здесь загвоздка очень очень нужно...

Заранее спасибо...
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,977
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 19.11.2006, 12:31

Цитата:
но ведь read это встроенный предикат, который объявлять не нужно, да и в написании его ошибиться трудновато
Нет такого предиката в Турбе. Читайте хэлп.
Ответить с цитированием
  (#3 (permalink)) Старый
doom_mm doom_mm вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.11.2006
По умолчанию 20.11.2006, 13:26

Насколько я понял тебе нужно записать
readint(Y) - если считать нужно integer
readln(Y) - если считать нужно строку
и какие-то еще ... этих тебе, должно хватить
Ответить с цитированием
  (#4 (permalink)) Старый
simbalion simbalion вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.11.2006
Post 30.11.2006, 11:23

Действительно, достаточно было исправить на readln и... все заработало!

СПАСИБО!!!!!
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
База данных об объектах, поиск объектов по признакам. База хранится в файле. znakos Prolog 1 16.04.2012 20:47
База знаний Delphi # Проект Алексеев Николай Delphi 49 20.10.2011 14:32
Продукционная модель, как ее реализовать Эмон Lisp 6 23.05.2011 11:29
продукционная модель знаний, возможно ли реализовать такую модель? Эмон Prolog 6 22.05.2011 18:27
Динамическая база знаний imported_Lisena Prolog 2 20.12.2010 17:19
База знаний в виде OR/AND дерева sergiyyu Prolog 0 21.04.2010 15:01
База знаний аптеки Batak Prolog 13 06.11.2008 12:36
Продукционная модель master173s Prolog 1 17.01.2008 21:30
база знаний экспертной системы 16alex Prolog 4 23.05.2007 00:16
Робот-программист "Ванюша" (База знаний программис vladkir Некоммерческие проекты 26 05.04.2006 20:57
Базы знаний на ASP MikeMinsk ASP 1 04.04.2003 18:27



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов