Текст программы на языке Prolog

Автор работы: Пользователь скрыл имя, 07 Марта 2013 в 12:03, контрольная работа

Описание работы

Предметную область разрабатываемой базы знаний будем описывать с помощью формальной логической модели. Традиционно в представлении знаний выделяют формальные логические модели, основанные на классическом исчислении предикатов I-го порядка, когда предметная область или задача описывается в виде набора аксиом. Исчисления предикатов I-го порядка в промышленных экспертных системах практически не используется. Эта логическая модель применима в основном в исследовательских системах, так как предъявляются не очень высокие требования к предметной области.

Содержание работы

Задание 3
1. Описание предметной области 4
2. Описание предметной области в определениях логики предикатов первого порядка 5
2.1 Формулы, определяющие условия выполнения действий 6
2.2 Целевая формула. 10
3 Формулы, определяющие начальные знания агента о предметной области. 10
4. Текст программы на языке Prolog. 11
5. Результаты работы программы 17
Список используемой литературы 18

Файлы: 1 файл

Отчет.doc

— 336.50 Кб (Скачать файл)

negative("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

positive("Руль слева"),

positive("До 700000 руб"),

negative("Седан"), 

                                is("Передний привод").

 

auto("Volkswagen Tiguan", 819908):-positive("Иномарка"),

negative("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

positive("Руль слева"),

negative("До 700000 руб"),

negative("Седан"), 

                                is("Полный привод").

 

auto("Volkswagen Scirocco", 1100000):-positive("Иномарка"),

negative("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

positive("Руль слева"),

negative("До 700000 руб"),

negative("Седан"), 

                                is("Gередний привод").

 

auto("Renault Scenic II", 320000):-positive("Иномарка"),

negative("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

positive("Руль слева"),

positive("До 700000 руб"),

negative("Седан"), 

                                is("Передний привод").

 

  auto("VW Golf 5 AVT",  580000):- positive("Иномарка"),

positive("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

positive("Руль слева"),

positive("До 700000 руб"),

negative("Седан"), 

                                is("Передний привод").

 

auto("Volkswagen Tiguan AVT", 900000):-positive("Иномарка"),

positive("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

positive("Руль слева"),

negative("До 700000 руб"),

negative("Седан"), 

                                is("Полный привод").

 

auto("Volkswagen Scirocco AVT", 1180000):-positive("Иномарка"),

positive("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

positive("Руль слева"),

negative("До 700000 руб"),

negative("Седан"), 

                                is("Передний привод").

 

auto("Renault Scenic II AVT", 400000):-positive("Иномарка"),

positive("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

positive("Руль слева"),

positive("До 700000 руб"),

negative("Седан"), 

                                is("Передний привод").

 

auto("Toyota corolla", 350000):-positive("Иномарка"),

negative("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

negative("Руль слева"),

positive("До 700000 руб"),

negative("Седан"), 

                                is("Передний привод").

 

auto("Nissan Skyline", 1000000):-positive("Иномарка"),

positive("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

negative("Руль слева"),

negative("До 700000 руб"),

positive("Седан"), 

                                is("Задний привод").

 

auto("Toyota Supra", 500000):-positive("Иномарка"),

negative("АКП"),

positive("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

negative("Руль слева"),

positive("До 700000 руб"),

negative("Седан"), 

                                is("Задний привод").

 

auto("Toyota Supra AVT", 580000):-positive("Иномарка"),

positive("АКП"),

positive("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

negative("Руль слева"),

positive("До 700000 руб"),

negative("Седан"), 

                                is("Задний привод").

 

  auto("Subaru Impreza", 580000):-positive("Иномарка"),

positive("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

negative("Руль слева"),

positive("До 700000 руб"),

negative("Седан"), 

                                is("Полный привод").

 

  auto("Subaru Impreza Sedan", 580000):-positive("Иномарка"),

negative("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

negative("Руль слева"),

positive("До 700000 руб"),

positive("Седан"), 

                                is("Полный привод").

 

  auto("Opel Astra", 600000):-positive("Иномарка"),positive("До 700000 руб"),

                     negative("АКП"),positive("Двигатель  бензиновый"),                    

     positive("Руль  слева"),

                     negative("Седан"),is("Передний привод").

 

  auto("Ford Focus", 532000):-positive("Иномарка"),positive("До 700000 руб"),

                  positive("АКП"),positive("Двигатель  бензиновый"),

                  positive("Седан"),positive("Мощнее 300 лс"),positive("Руль слева"),

  is("Передний привод").

 

  auto("Nissan Almera", 366000):-positive("Иномарка"),positive("До 700000 руб"),

                                 negative("АКП"),positive("Двигатель бензиновый"),positive("Руль слева"),

                                 positive("Седан"),is("Передний привод").

 

  auto("Lada Kalina", 270000):-negative("Иномарка"),positive("До 700000 руб"),

                    negative("АКП"),positive("Двигатель  бензиновый"),positive("Руль слева"),

                    negative("Седан"),is("Передний привод").

 

  auto("ВАЗ 2115", 255000 ):-negative("Иномарка"),positive("До 700000 руб"),

                   negative("АКП"),negative("Двигатель  бензиновый"), positive("Руль слева"),

                   positive("Седан"),is("Передний привод").

 

  auto("Volga Siber", 640000):-negative("Иномарка"),

                   negative("До 700000 руб"),positive("Руль  слева"),

                   positive("АКП"),positive("Двигатель  бензиновый"),

                   positive("Седан"),is("Передний привод").

 

  auto("BMW X6", 4420000):-positive("Иномарка"),

                  positive("Руль слева"),

                  negative("Седан"),  positive("Двигатель  бензиновый"),

                  positive("Мощнее 300 лс"),negative("До 700000 руб"),

                  positive("АКП"),

                  is("Задний привод").

 

  auto("ГАЗ 13",  800000 ):-negative("Иномарка"),

                  negative("До 700000 руб"),

                  positive("АКП"),

                  positive("Седан"),positive("Руль слева"),

                  positive("С пробегом"),positive("Двигатель дизельный"),

                  is("Задний привод").

 

  auto("Audi A4", 1110000):-positive("Иномарка"),

                       positive("Руль слева"),

                       negative("Седан"),

                       negative("Мощнее 300 лс"),

                       positive("АКП"),

       positive("Двигатель бензиновый"),

                       is("Полный привод").

 

  auto("Toyota Crown", 520000):-positive("Иномарка"),

                        negative("Руль слева"),

                        positive("Седан"),

                        negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

                        negative("АКП"),

                        is("Полный привод").

 

auto("Chevrolet Niva AVT", 484000):- negative("Иномарка"),

positive("АКП"),

positive("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

negative("Руль слева"),

negative("Седан"), 

                                is("Полный привод").

 

  auto("Chevrolet Niva", 444000):- negative("Иномарка"),

negative("АКП"),

negative("Мощнее 300 лс"),

positive("Двигатель бензиновый"),

positive("Руль слева"),

negative("Седан"), 

                                is("Полный привод").

 

  auto("Нету вариантов",0).

 

  is("Передний привод"):-positive("Подушка безопасности"),!;

                  positive("До 700000 руб").

  is("Задний привод"):-positive("Подушка безопасности"),!;

                       positive("Задний привод").

  is("Полный привод"):-positive("Подушка безопасности"),!;

                       positive("Полный привод").

                       

 

  positive(X):-xpositive(X),!; xnegative(X),!,fail; ask(X,'y').  /*...!,fail -  не пытаться  согласовать данное утверждение*/

  negative(X):-xnegative(X),!; xpositive(X),!,fail; ask(X,'n').

  ask(X,R):-write(X,"  ?  : "),readchar(Reply),write(Reply,"\n"),

            remember(X,Reply),R=Reply.

 

  xpositive(X):-yes(X);maybe(X).

  xnegative(X):-no(X);maybe(X).

 

  remember(X,'y'):-asserta(yes(X)). /*Добавление*/

  remember(X,'n'):-assertz(no(X)).

  remember(X,'q'):-asserta(maybe(X)).

 

delete_all:-retract(yes(_)),delete_all.

delete_all:-retract(no(_)),delete_all.

delete_all:-retract(maybe(_)),delete_all.

delete_all.

 

  run:-delete_all,

       repeat,

       write("На вопросы отвечать(y-Да, n-Нет, q-Не знаю).\n"),

             make_selection(X, A, CHOOSE),

       continue_selection(CHOOSE, X, A),

       write("Завершить  работу программы (y/n): "),readchar(Z),write(Z),nl,

       Z='y'.

 

       make_selection(X, A, CHOOSE):- auto(X,A), write("Ваш выбор: ",X," цена: ",A,"\n"),

       write("\nУстраивает ли вас цена? \n1-да, данная модель меня устраивает\n2-нет, покажите модель по дешевле\n3-нет, покажите модель по дороже\n"),

       readchar(CHOOSE).

 

       continue_selection('1', X, A) :-  !, write("Ваш выбор: ",X," цена: ",A,"\n"), !.

       continue_selection('2', _, A) :-  !, auto(Y, Z), Z < A, make_selection(Y, Z, CHOOSE), continue_selection(CHOOSE, Y, Z). 

       continue_selection('3', _, A) :-  !, auto(Y, Z), Z > A, make_selection(Y, Z, CHOOSE), continue_selection(CHOOSE, Y, Z). 

 

 

 

goal

  makewindow(1,7,7, "Экспертная система: Автомобиль ",0,0,25,80),

  write(" Выбор автомобиля."),nl,

  write("--------------------------------------------"),nl,

  run.

 

5. Результаты работы программы

 

 

Рисунок 1. Результат работы программы

 

 

 

Как видно из рисунков программа работает корректно.

 

Список используемой литературы

 

  1. Конспект лекций по дисциплине «Интеллектуальные подсистемы САПР», к.т.н., проф. Ямникова О.А., 2011г.;
  2. Методические указания «Практические занятия» по курсу «Интеллектуальные подсистемы САПР»,  к.т.н., доц. Троицкий Д.И., 2011 г.
  3. Эндрю А. Искусственный интеллект – М.: Мир, 2005.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Информация о работе Текст программы на языке Prolog