1

Тема: Пролог - Экспертная система по определению цветка.

domains           
database           
                 xpositive(symbol,symbol)
                 xnegative(symbol,symbol)
                 
predicates
           
                 do_expert_job
                 do_consulting
                 ask(symbol,symbol)
                 dog_is(symbol)
                 it_is(symbol)
                 positive(symbol,symbol)
                 negative(symbol,symbol)
                 remember(symbol,symbol,symbol)
                 clear_facts
                 
clauses
                 /* Система пользовательского интерфейса (СПИ) */
               
            do_expert_job :-
                 nl,write("* * * * * * * * * * * * * * * * * * * *"),
                 nl,write("  Экспертная система по определению цветка   "),
                 nl,write("                                       "),             
                 nl,write("Необходимо отвечать на вопросы о       "),
                 nl,write("цветах YES или NO    "),               
                 nl,nl,
                 do_consulting,
                 write("Нажмите пробел"),nl,
                 exit.
            do_consulting :-
                 dog_is(X),!,nl,
                 write("Данный цветок - это a(n)",X,"."),nl,
                 clear_facts.
            do_consulting :-
                 nl,write("Изивините, ничем не можем вам помочь"),
                 clear_facts.
                 
            ask(X,Y) :-
                write(" Вопрос :- ",X," it ",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,yes) :-
                 asserta(xpositive(X,Y)).
            remember(X,Y,no) :-
                 asserta(xnegative(X,Y)),
                 fail.
                 
            clear_facts :-
                 retract(xpositive(_,_)),
                 fail.
            clear_facts :-
                 retract(xnegative(_,_)),
                 fail.
           
          /*  ПРОДУКЦИОННЫЕ ПРАВИЛА              */
           
            dog_is("Мак") :-
                 it_is("многолетнее"),
                 positive(has,"высота от 5 до 10 см"),
                 positive(has,"стебель ветвистый"),
                 positive(has,"крупные цветки"),
                 positive(has,"листья перистораздельные"),!.
                 
            dog_is("Ромашка") :-
                 it_is("однолетнее"),
                 positive(has,"высота от 15 до 40 см"),
                 positive(has,"стебель ветвистый"),
                 positive(has,"лекарственное"),
                 positive(has,"цветет в период май-сентябрь"),
                 positive(has,"листья перистораздельные"),!.
                 
            dog_is("Лилия") :-
                 it_is("многолетнее"),
                 positive(has,"стебель маловетвистый"),
                 positive(has,"высота от 16 до 18 см"),
                 positive(has,"листья острые"),
                 positive(has,"прорастает из луковицы"),
                 positive(has,"вес больше 100 фунтов"),!.
                 
            /* dog_is("American Foxhound") :-
                 it_is("короткая шерсть"),
                 positive(has,"рост меньше 30 дюймов"),
                 positive(has,"длинные уши"),
                 positive(has,"хороший характер"),!.
                 
             dog_is("Cocker Spaniel") :-
                 it_is("длинная шерсть"),
                 positive(has,"рост меньше 22 дюймов"),
                 positive(has,"низкопосаженный хвост"),
                 positive(has,"длинные уши"),
                 positive(has,"хороший характер"),!.
                 
             dog_is("Irish Setter") :-
                 it_is("длинная шерсть"),
                 positive(has,"рост меньше 30 дюймов"),
                 positive(has,"длинные уши"),!.
                 
            dog_is("Collie") :-
                 it_is("длинная шерсть"),
                 positive(has,"рост меньше 30 дюймов"),
                 positive(has,"низкопосаженный хвост"),
                 positive(has,"хороший характер"),!.
           
         dog_is("St. Bernard") :-
                 it_is("длинная шерсть"),
                 positive(has,"низкопосаженный хвост"),
                 positive(has,"хороший характер"),
                 positive(has,"вес больше 100 фунтов"),!.*/
                 
            it_is("многолетнее") :-
                 positive(has," многолетнее "),!.
                 
            it_is("однолетнее") :-
                 positive(has," однолетнее"),!.
                 
            goal
           
                do_expert_job.

Поделиться

2

Re: Пролог - Экспертная система по определению цветка.

domains           
database           
                 xpositive(symbol,symbol)
                 xnegative(symbol,symbol)
                 
predicates
           
                 do_expert_job
                 do_consulting
                 ask(symbol,symbol)
                 flower_is(symbol)
                 it_is(symbol)
                 positive(symbol,symbol)
                 negative(symbol,symbol)
                 remember(symbol,symbol,symbol)
                 clear_facts
                 
clauses
                 /* Система пользовательского интерфейса (СПИ) */
               
            do_expert_job :-
                 nl,write("* * * * * * * * * * * * * * * * * * * *"),
                 nl,write("  Экспертная система по определению цветка   "),           
                 nl,write("Необходимо отвечать на вопросы о       "),
                 nl,write("цветах YES или NO    "),               
                 nl,nl,
                 do_consulting,
                 write("Нажмите пробел"),nl,
                 exit.
            do_consulting :-
                 flower_is(X),!,nl,
                 write("Данный цветок - это ",X,"."),nl,
                 clear_facts.
            do_consulting :-
                 nl,write("Изивините, ничем не можем вам помочь"),
                 clear_facts.
                 
            ask(X,Y) :-
                write(" Вопрос :- ",X," ",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,yes) :-
                 asserta(xpositive(X,Y)).
            remember(X,Y,no) :-
                 asserta(xnegative(X,Y)),
                 fail.
                 
            clear_facts :-
                 retract(xpositive(_,_)),
                 fail.
            clear_facts :-
                 retract(xnegative(_,_)),
                 fail.
           
          /*  ПРОДУКЦИОННЫЕ ПРАВИЛА              */
           
            flower_is("Мак") :-
                 it_is("многолетнее"),
                 positive(имеет,"высоту от 5 до 10 см"),
                 positive(имеет,"стебель ветвистый"),
                 positive(имеет,"крупные цветки"),
                 positive(имеет,"листья перистораздельные"),!.
                 
            flower_is("Ромашка") :-
                 it_is("однолетнее"),
                 positive(имеет,"высоту от 15 до 40 см"),
                 positive(имеет,"стебель ветвистый"),
                 positive(является,"лекарственным"),
                 positive(цветет,"в период май-сентябрь"),
                 positive(имеет,"листья перистораздельные"),!.
                 
            flower_is("Лилия") :-
                 it_is("многолетнее"),
                 positive(имеет,"стебель маловетвистый"),
                 positive(имеет,"высоту от 16 до 18 см"),
                 positive(имеет,"листья острые"),
                 positive(разводится,"из луковиц"),!.
                 
             flower_is("Геогрины") :-
                 it_is("многолетнее"),
                 positive(имеет,"высоту до 6 м"),
                 positive(цветет,"в конце лета и осенью"),
                 positive(разводится,"клубнями"),
                 positive(имеет,"стебель неветвистый"),
                 positive(имеет,"листья простые"),!.
                 
             flower_is("Фиалка") :-
                 it_is("многолетнее"),
                 positive(имеет,"листья простые"),
                 positive(является,"лекарственным"),!.
                 
             flower_is("Ландыш") :-
                 it_is("многолетнее"),
                 positive(имеет,"листья острые"),
                 positive(является,"лекарственным"),
                 positive(имеет,"стебель неветвистый"),!.
                 
            flower_is("Колокольчик") :-
                it_is("многолетнее"),
                positive(имеет,"стебель ветвистый"),
                 positive(имеет,"крупные цветки"),!.               
           
         flower_is("Пион") :-
                 it_is("многолетним"),
                 positive(является,"лекарственным"),
                 positive(является,"декоративное"),
                 positive(имеет,"высоту от 30 до 80 см"),
                 positive(имеет,"семена крпуные"),!.
                 
            it_is("многолетнее") :-
                 positive(является," многолетним "),!.
                 
            it_is("однолетнее") :-
                 positive(является," однолетним"),!.
                 
            goal
           
                do_expert_job.

Поделиться

3

Re: Пролог - Экспертная система по определению цветка.

domains           
database           
                 xpositive(symbol,symbol)
                 xnegative(symbol,symbol)
                 
predicates
           
                 do_expert_job
                 do_consulting
                 ask(symbol,symbol)
                 flower_is(symbol)
                 it_is(symbol)
                 positive(symbol,symbol)
                 negative(symbol,symbol)
                 remember(symbol,symbol,symbol)
                 clear_facts
                 
clauses
                 /* Система пользовательского интерфейса (СПИ) */
               
            do_expert_job :-
                 nl,write("* * * * * * * * * * * * * * * * * * * *"),
                 nl,write("  Экспертная система по определению цветка   "),           
                 nl,write("Необходимо отвечать на вопросы о       "),
                 nl,write("цветах YES или NO    "),               
                 nl,nl,
                 do_consulting,
                 write("Нажмите пробел"),nl,
                 exit.
            do_consulting :-
                 flower_is(X),!,nl,
                 write("Данный цветок - это ",X,"."),nl,
                 clear_facts.
            do_consulting :-
                 nl,write("Изивините, ничем не можем вам помочь"),
                 clear_facts.
                 
            ask(X,Y) :-
                write(" Вопрос :- ",X," ",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,yes) :-
                 asserta(xpositive(X,Y)).
            remember(X,Y,no) :-
                 asserta(xnegative(X,Y)),
                 fail.
                 
            clear_facts :-
                 retract(xpositive(_,_)),
                 fail.
            clear_facts :-
                 retract(xnegative(_,_)),
                 fail.
           
          /*  ПРОДУКЦИОННЫЕ ПРАВИЛА              */
           
            flower_is("Мак") :-
                 it_is("многолетнее"),
                 positive(имеет,"высоту от 5 до 10 см"),
                 positive(имеет,"стебель ветвистый"),
                 positive(имеет,"крупные цветки"),
                 positive(имеет,"листья перистораздельные"),!.
                 
            flower_is("Ромашка") :-
                 it_is("однолетнее"),
                 positive(имеет,"высоту от 15 до 40 см"),
                 positive(имеет,"стебель ветвистый"),
                 positive(является,"лекарственным"),
                 positive(цветет,"в период май-сентябрь"),
                 positive(имеет,"листья перистораздельные"),!.
                 
            flower_is("Лилия") :-
                 it_is("многолетнее"),
                 positive(имеет,"стебель маловетвистый"),
                 positive(имеет,"высоту от 16 до 18 см"),
                 positive(имеет,"листья острые"),
                 positive(разводится,"из луковиц"),!.
                 
             flower_is("Геогрины") :-
                 it_is("многолетнее"),
                 positive(имеет,"высоту до 6 м"),
                 positive(цветет,"в конце лета и осенью"),
                 positive(разводится,"клубнями"),
                 positive(имеет,"стебель неветвистый"),
                 positive(имеет,"листья простые"),!.
                 
             flower_is("Фиалка") :-
                 it_is("многолетнее"),
                 positive(имеет,"листья простые"),
                 positive(является,"лекарственным"),!.
                 
             flower_is("Ландыш") :-
                 it_is("многолетнее"),
                 positive(имеет,"листья острые"),
                 positive(является,"лекарственным"),
                 positive(имеет,"стебель неветвистый"),!.
                 
            flower_is("Колокольчик") :-
                it_is("многолетнее"),
                positive(имеет,"стебель ветвистый"),
                 positive(имеет,"крупные цветки"),!.               
           
         flower_is("Пион") :-
                 it_is("многолетним"),
                 positive(является,"лекарственным"),
                 positive(является,"декоративное"),
                 positive(имеет,"высоту от 30 до 80 см"),
                 positive(имеет,"семена крпуные"),!.
                 
            it_is("многолетнее") :-
                 positive(является," многолетним "),!.
                 
            it_is("однолетнее") :-
                 positive(является," однолетним"),!.
                 
            goal
           
                do_expert_job.





Готово!
  Регистрация успешно завершена.
Логин: Mary-Crishna
Зарегистрирован: 30.12.2008
Имя: Ольга
Фамилия: Заворотняя  Контрольный вопрос: Девичья фамилия матери
Ответ: марьянко
E-mail: zavoru6ka@mail.ru
IP: 217.19.209.162 

Держите ваш пароль в секрете и помните, что сотрудники Яндекса никогда и ни под каким предлогом не спросят пароль по телефону или электронной почте.

Поделиться