Разработка элементов систем искусственного интеллекта с использованием логической модели представления знаний

Автор: Пользователь скрыл имя, 26 Января 2013 в 14:42, курсовая работа

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

Задание 1: Используя предикаты parent(symbol,symbol), man(symbol), woman(symbol), married(symbol,symbol), записать факты, описывающие Вашу семью. Записать 8 правил вывода для любых родственных отношений в Вашей (или вымышленной) семье (например: мать, отец, сестра, брат, племянница, племянник, тетя, дядя, внучка, внук, бабушка, дедушка, двоюродная сестра, двоюродный брат и т.д.).
Задание 2: 1. Вычислить значение n-го члена ряда Фибоначчи: f(0)=0, f(1)=1,
f(n)=f(n-1)+f(n-2).

Работа содержит 1 файл

Курсовая СИИ 10 вариант.docx

— 475.80 Кб (Скачать)

Министерство  образования  Российской  Федерации

 

уфимский  государственный  авиационный

технический  университет

 

 

 

 

 

 

 

КУРСОВАЯ РАБОТА

 

 

по дисциплине «Системы искусственного интеллекта»

на тему

«Разработка элементов систем искусственного интеллекта с использованием логической модели представления знаний»

 

Вариант 10

 

 

Специальность 230102 – Автоматизированные системы обработки информации и управления

Факультет  информатики и робототехники

Кафедра  автоматизированных систем управления

Курс   5

Семестр  9

 

 

 

 

Оценка ________________  Исполнитель

Консультант:                       студ. гр. АСОИ-538

(зач. кн. 085582)

___________Алыпов Ю.Е.  ________Ларионов В.Э.

«___» ____________ 2012г.   «___» ___________ 2012 г.

 

 

 

 

 

 

 

 

Уфа – 2012

   Задание 1:

    Используя предикаты parent(symbol,symbol), man(symbol), woman(symbol), married(symbol,symbol), записать факты, описывающие Вашу семью. Записать 8 правил вывода для любых родственных отношений в Вашей (или вымышленной) семье (например: мать, отец, сестра, брат, племянница, племянник, тетя, дядя, внучка, внук, бабушка, дедушка, двоюродная сестра, двоюродный брат и т.д.).

 

 

Описание родственных связей:

 

Текст программы на Прологе

predicates

parent(string,string)

man(string)

woman(string)

married(string,string)

plem(string,string)

mother(string,string)

father(string,string)

grandma(string,string)

grandfa(string,string)

son(string,string)

dauther(string,string)

brother(string,string)

sister(string,string)

print

 

clauses

man("Alekcandr").

man("Vladimer").

man("Oleg").

man("Misha").

man("Denis").

 

woman("Anna").

woman("Irina").

woman("Zybarzt").

 

 

parent("Alekcandr"," Vladimer").

parent("Alekcandr"," Oleg").

parent("Anna"," Vladimer").

parent("Anna"," Vladimer").

parent("Vladimer"," Denis").

parent("Irina"," Denis").

parent("Oleg"," Misha").

parent("Zybarzt"," Misha").

 

married("Alekcandr"," Anna").

married("Vladimer"," Irina").

married("Oleg"," Zybarzt").

 

mother(X,Y):-parent(X,Y),woman(X).

father(X,Y):-parent(X,Y),man(X).

son(X,Y):-man(Y),parent(X,Y).

dauther(X,Y):-woman(Y),parent(X,Y).

 

grandma(X,Z):-parent(X,Y),parent(Y,Z),woman(X).

grandfa(X,F):-parent(X,Y),parent(Y,F),man(X).

 

brother(X,Y):-parent(Z,X),parent(Z,Y),man(X),X<>Y.

sister(X,Y):-parent(Z,X),parent(Z,Y),woman(X),X<>Y. 

 

plem(X,F):-parent(Z,F),man(F),parent(P,X),parent(P,Z),Z<>X.

 

print:-mother(X,Y),write(X,"-mother-",Y),nl,fail.

print:-father(X,Y),write(X,"-father-",Y),nl,fail.

print:-son(X,Y),write(Y,"-son-",X),nl,fail.

print:-grandma(X,Z),write(X,"-grandma-",Z),nl,fail.

print:-grandfa(X,F),write(X,"-grandfa-",F),nl,fail.

print:-dauther(X,Y),write(Y,"-dauther-",X),nl,fail.

print:-brother(X,Y),write(X,"-brother-",Y),nl,fail.

print:-plem(X,F),write(F,"-plemannik-",X),nl,fail.

print.

GOAL

print,readln(I).

 

 

 

 

 

 

 

 

 

 

 

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

 

 

Выводы:

По заданию было построено дерево родственных отношений, составлено 19 фактов и 9 правил, которые описывают  родственные связи в моей семье. Используя язык логического программирования Prolog, написана программа, в которой отображаются все родственные отношения с помощью заданных правил и фактов. Использовались такие предикаты, как parent(string, string), man(string), woman(string), married(string ,string).

Задание 2:

1. Вычислить значение n-го члена ряда Фибоначчи: f(0)=0, f(1)=1, 
f(n)=f(n-1)+f(n-2).

 

Текст программы на Прологе

PREDICATES

nondeterm f(integer, integer)

nondeterm fibo(integer, integer)

CLAUSES

f(1, 1).

f(0, 0).

f(X, R) :- X2 = X-1, X3 = X-2, f(X2, R2), f(X3, R3), R = R2+R3.

 

fibo(R, R) :- nl.

fibo(R, Itog) :- f(R, Res), write(Res, " "), R2=R+1,

fibo(R2, Itog).

GOAL

fibo(0, 15).

Результаты

 

Цель: task(0,15).

Результат:

 

 

 

2. Написать программу для продажи туристических туров. Должна быть представлена следующая информация: название тура, страна, продолжительность, цена. Реализовать вывод информации обо всех турах, поиск тура по стране. Реализовать поиск по продолжительности с указанием интервала возможной продолжительности (должна быть выведена информация о турах, продолжительность которых попадает в указанный интервал). Для удобства работы реализовать меню с соответствующими пунктами.

 

Текст программы на Прологе

DOMAINS

s = string

ss = string*

i = integer

is = integer* 

DATABASE

fact(s,s,i,i)

PREDICATES

menuprint

nondeterm menuitem(i)

nondeterm menu

 

nondeterm databased(ss, ss, is, is)

nondeterm printtour(ss,ss,is,is, i)

printtitle

 

nondeterm tourinterval(i,i, ss,ss,is,is)

CLAUSES

%база данных

fact("Trip on China market       ","China",9,11500).

fact("Crazy Turkey Beach         ","Turkey",4,11000).

fact("Jara in Egypt              ","Egypt",8,18000).

fact("Zabavniy snow in Europe    ","Europe", 15, 31000).

fact("Dikie OAE                  ","OAE",07,21400).

fact("Sigara Tour                ","Kuba ",05,31000).

fact("Garnoe Puteshestvie        ","Ukraina",05,9000).

fact("Rai na Zemle               ","Goa",08,19800).

 

%предикаты

printtour([H1|T1], [H2|T2], [H3|T3], [H4|T4], Counter) :- Counter2 = Counter+1, write(Counter), write (" "),

       write(H1), write("\t"), write (H2), write("\t"),

       write(H3), write("\t"), write(H4), nl, not(T1 = []), T2 = [], !, printtour(T1, [H2], T3, T4, Counter2).

printtour([_|T1], [_|T2], [_|T3], [_|T4], Counter) :- Counter2 = Counter+1, printtour(T1, T2, T3, T4, Counter2).

 

printtitle :-  write ("  "), write("Tour"), write("\t\t\t"), write ("Country"), write("\t"),

write("Days"), write("\t"), write("Price($USD"), nl.

 

tourinterval(Min, Max, [H1|T1], [H2|T2], [H3|T3], [H4|T4]) :-  H3 >= Min, H3 <= Max, !, write(H1), write("\t"), write (H2), write("\t"),

       write(H3), write("\t"), write(H4), nl, tourinterval(Min, Max, T1, T2, T3, T4).

tourinterval(Min, Max, [_|T1], [_|T2], [_|T3], [_|T4]) :-  tourinterval(Min, Max, T1, T2, T3, T4).

 

 

menuprint :- write("\nSelling Turist's tours. The menu:\n"), 

write("<1> - tour database\n"),

write("<2> - tour search by country\n"),

write("<3> - tour search by duration\n"),

write("<4> - exit\n").

 

 

menu :- menuprint, readint(X), nl, menuitem(X).

 

 

menuitem(1) :-  databased(L1, L2, L3, L4), printtitle, printtour(L1, L2, L3, L4, 1), nl, fail.

menuitem(2) :-  write ("Country?\n"), readln(Country), findall(A, fact(A,Country,_,_), L1),

findall(A, fact(_,Country,A,_), L2), findall(A, fact(_,Country,_,A), L3),

printtitle, printtour(L1,[Country], L2, L3, 1), nl, menu.

menuitem(3) :- write("Minimun days?\n"), readint(Min),  write("Maximun days?\n"), readint(Max),

databased(L1, L2, L3, L4), tourinterval(Min, Max, L1, L2, L3, L4), nl, menu.

menuitem(4) :- !. 

menuitem(_) :- menu. 

 

databased(L1, L2, L3, L4) :-   findall(A, fact(A,_,_,_),L1), findall(A, fact(_,A,_,_),L2), findall(A, fact(_,_,A,_),L3), findall(A, fact(_,_,_,A),L4).

GOAL

menu. 

Результаты

 

При запуске программы  появится диалоговое окно:

 

В нем можно осуществить  одно из действий, предложенных в меню.

Результат выбора tour database:

 

Результат выбора tour search by country:

 

 

Результат выбора tour search by duration:

 

 

Задание 3:

Четыре друга A, B, C, D играют каждый на одном из инструментов: флейте, рояле, гитаре и скрипке. Каждый владеет одним из иностранных языков: английским, французским, немецким и испанским. Известно, что:

  • юноша, играющий на гитаре, говорит по-испански;
  • B не играет ни на скрипке, ни на флейте, ни на рояле;
  • A не играет ни на скрипке, ни на флейте и не знает английского;
  • D говорит по-французски, но не играет на скрипке.

Кто на каком инструменте играет и на каком языке говорит?

 

Текст программы на Прологе

 

PREDICATES

nondeterm instrument(symbol)

nondeterm lang(symbol)

nondeterm instrument_lang(symbol,symbol)

nondeterm friend_instrument(symbol,symbol)

nondeterm friend_lang(symbol,symbol)

nondeterm solution (symbol,symbol,symbol, symbol,symbol,symbol,

   symbol,symbol,symbol, symbol,symbol,symbol)

nondeterm dif(symbol, symbol, symbol,symbol)

output

CLAUSES

instrument(flute).

instrument(piano).

instrument(guitar).

instrument(violin).

lang(english).

lang(french).

lang(german).

lang(spanish).

instrument_lang(guitar, spanish).

friend_instrument(a, Y) :- not(Y=violin), not(Y=flute).

friend_instrument(b, Y) :- not(Y=violin), not(Y=flute), not(Y=piano). 

friend_instrument(d, Y) :- not(Y=violin).

friend_lang(a, Z) :- not(Z=english).

friend_lang(d, french).

dif(Y1, Y2, Y3, Y4) :- Y1<>Y2, Y1<>Y3, Y1<>Y4, Y2<>Y3, Y2<>Y4, Y3<>Y4.

solution(X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, X4, Y4, Z4) :-

        X1=a, X2=b, X3=c, X4=d,

instrument(Y1), instrument(Y2), instrument(Y3), instrument(Y4),

lang(Z1), lang(Z2), lang(Z3), lang(Z4),

dif(Y1, Y2, Y3, Y4), dif(Z1, Z2, Z3, Z4),

friend_instrument(X1, Y1), friend_instrument(X2, Y2),

friend_instrument(X4, Y4), friend_lang(X1, Z1),

friend_lang(X4, Z4), instrument_lang(Y2, Z2).

output:-clearwindow,solution(X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, X4, Y4, Z4),

write("Friend"," Instrument ","Lang"),nl,nl,

write("1- ",X1," - ",Y1,"  - ",Z1),nl,nl,

write("2- ",X2," - ",Y2,"  - ",Z2),nl,nl,

write("3- ",X3," - ",Y3,"  - ",Z3),nl,nl,

write("4- ",X4," - ",Y4,"  - ",Z4),

readln(_).

GOAL

output.

 

Результаты:

Выводы:

    В результате написания курсовой были освоены основы логического программирования на языке Пролог.  Полученные знания были реализованы на практике.

Задание 4

             Разработать программу поиска решения, предметная область произвольная, например, выбор сотового телефона, покупка автомобиля и т.п.

Предметная область: выбор телевизора.

 

Дерево:

 

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

domains

database

 xpositive(symbol,symbol)

 xnegative(symbol,symbol)

predicates

do_podbor_111.

 do_consulting

 ask(symbol,symbol)

 televizor(symbol)

 positive(symbol,symbol)

 negative(symbol,symbol)

 remember(symbol,symbol,symbol)

 clear_facts

goal

do_podbor_111.

clauses

do_podbor_111:-

  makewindow(1,7,7,"Vybor televizora.",1,3,22,71),

  nl,write("*********************************************************************"),

  nl,write("   "),

 nl,write("              Please answer the questions 'yes' or 'no'"),

 nl,write("*********************************************************************"),

 nl,nl,

 do_consulting,

 write("Press space bar."),nl,

 readchar(_),

 removewindow,

 exit.

 do_consulting:-

 televizor(X),!,nl,

 write("HC ",X,"."),nl,

 clear_facts.

 do_consulting:-

 nl,write("Izvinite, takogo televizora dlya vas net!"),

 clear_facts.

 ask(X,Y):-

 write(" Vi gelaete>>> ",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.

 

televizor("vam podhodit Samsung UE40ES7507UXRU "):-

 positive(televizor,"plazma"),

 positive(televizor,"televizor"),

 positive(televizor,"stoit <12000"),!.

 

televizor("vam podhodit Panasonic Viera TX-PR50UT50 "):-

 positive(televizor,"plazma"),

 positive(televizor,"televizor"),

 positive(televizor,"stoit 12000-20000"),!.

 

televizor("vam podhodit Hitachi 42PMA500E "):-

 positive(televizor,"plazma"),

 positive(televizor,"panel"),

 positive(televizor,"stoit <12000"),!.

 

televizor("vam podhodit Erisson 42 PH 01 "):-

 positive(televizor,"plazma"),

 positive(televizor,"panel"),

 positive(televizor,"stoit 12000-20000"),!.

 

televizor("vam podhodit Sony FWD-50PX3S "):-

 positive(televizor,"LCD"),

 positive(televizor,"TN matrica"),

 positive(televizor,"stoit <14000"),!.

 

televizor("vam podhodit Rolsen RP-42H30 "):-

 positive(televizor,"LCD"),

 positive(televizor,"TN matrica"),

 positive(televizor,"stoit 14000-17000"),!.

 

televizor("vam podhodit Pioneer KURO PDP-LX6090 "):-

 positive(televizor,"LCD"),

 positive(televizor,"MVA matrica"),

 positive(televizor,"stoit 14000-16000"),!.

 

televizor("vam podhodit Fujitsu Plasmavision W P42HHA10W PDP "):-

 positive(televizor,"LCD"),

 positive(televizor,"MVA matrica"),

 positive(televizor,"stoit 16000-20000"),!.

televizor("vam podhodit LG 50PM690S "):-

 positive(televizor,"LCD"),

 positive(televizor,"IPS matrica"),

 positive(televizor,"stoit 19000-22000"),!.

televizor("vam podhodit LG 42PA4510 "):-

 positive(televizor,"LCD"),

 positive(televizor,"IPS matrica"),

 positive(televizor,"stoit 22000-25000"),!.

televizor("vam podhodit Philips 42PF7320 "):-

 positive(televizor,"LED"),

 positive(televizor,"White LED"),

 positive(televizor,"stoit <11000"),!.

televizor("vam podhodit Philips Flat TV 50PF9965 "):-

 positive(televizor,"LED"),

 positive(televizor,"White LED"),

 positive(televizor,"stoit 11000-15000"),!.

televizor("vam podhodit Samsung PS60E6507EUXRU "):-

 positive(televizor,"LED"),

 positive(televizor,"RGB LED"),

 positive(televizor,"stoit 19000-23000"),!.

 

televizor("vam podhodit Nokia LG 50PA6520"):-

 positive(televizor,"LED"),

 positive(televizor,"RGB LED"),

 positive(televizor,"stoit 23000-27000"),!.

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

 

 

Написана программа, которая реализует  выбор телевизора.

 

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

  1. МЕТОДИЧЕСКИЕ УКАЗАНИЯ к выполнению курсового проекта по дисциплине 
    «Системы искусственного интеллекта»
  2. Ресурсы интернета

Информация о работе Разработка элементов систем искусственного интеллекта с использованием логической модели представления знаний