49917

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

Курсовая

Информатика, кибернетика и программирование

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

Русский

2014-01-12

320.9 KB

6 чел.

ФЕДЕРАЛЬНОЕ АГЕНТСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ ПО ОБРАЗОВАНИЮ И НАУКЕ

УФИМСКИЙ ГОСУДАРСТВННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Пояснительная записка к курсовому проекту

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

на тему:

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

Вариант 25

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

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

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

Курс   5

Семестр            9

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

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

                         (зач. кн.075746)

 ___________Алыпов Ю.Е.                           _________Хисаев Р.М.

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

Уфа 2012

Задание 1

Задание:

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

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

13 вариант моя задача,20

Рис. 1. Дерево родственных отношений

Исходный текст:

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("Ravil").
man("Farit").
man("Gamil").
man("Anvar").

woman("Mynavara").
woman("Roza").
woman("Hariza").
woman("Aigul").


parent("Ravil","Farit").
parent("Ravil","Gamil").
parent("Mynavara","Farit").
parent("Mynavara","Gamil").
parent("Farit","Anvar").
parent("Roza”,"Anvar").
parent("Gamil","Aigul").
parent("Hariza","Aigul").

married("Ravil"," Mynavara").
married("Farit"," Roza").
married("Gamil","Hariza").

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 фактов и 13 правил, которые описывают родственные связи в моей семье. Используя язык логического программирования Prolog, написана программа, в которой отображаются все родственные отношения с помощью заданных правил и фактов. Использовались такие предикаты, как  parent(string, string), man(string), woman(string), married(string ,string).

2 задание(6 задача).

Вычислить произведение двух целых положительных чисел (используя суммирование).

Исходный текст:

Пролог

PREDICATES

p(real,integer,real)

CLAUSES

p(_,0,0):-!.

p(A,B,C):-B1=B-1,p(A,B1,C1),C=C1+A.

goal

   write("A*B"),nl,

   write("A: "),readint(A),

write("B: "),readint(B),

   p(A,B,C),

   write("A*B: ",C).

Си++

#include <iostream>

using namespace std;

typedef unsigned short USHORT;

typedef unsigned short ULONG;

ULONG GetPower(USHORT n1, USHORT n2);

int main()

{

USHORT n1,n2;

   ULONG answer;

cout << "n1: " << endl;

cin >> n1;

cout << "n2:" << endl;

cin >> n2;

answer=GetPower(n1,n2);

cout<<n1<<"to the"<<n2<< "th power is" <<answer<<endl;

system("pause");

return 0;

}

2 задание(6 задача).

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

Исходный текст:

                                                             Задание 3 (3)

У Ивана машина красная, у Петра – не черная, не синяя, не голубая, у Максима – черная и синяя. У Александра есть машины любого цвета (из перечисленных), у Бориса машины белого и синего цветов. У кого какого цвета машины, если все водители ехали на машинах разных цветов?

Исходный текст программы:

domains

s=symbol

slist=s*

predicates

colour(s)

colour_or_colour(s,s,s) % два цвета 

solve(s,s,s,s,s) % решить

print

clauses

colour("krasnii").

colour("chernii").

colour("goluboi").

colour("sinii").

colour("belii").

colour_or_colour(A,B,C):-C=A;C=B.

solve(Ivan,Petr,Maxim,Sacha,Boris):-Ivan=" krasnii ",                    

colour(Petr),Petr<>Ivan,Petr<>"chernii",Petr<>"sinii",Petr<>"goluboi",

colour_or_colour("chernii","sinii",Maxim),Maxim <>Ivan,Maxim<>Petr,    

colour(Sacha),Sacha<>Ivan,Sacha<>Petr,Sacha<>Maxim,colour_or_colour("belii","sinii",Boris),

Boris<>Ivan,Boris<>Petr,Boris<>Maxim,Boris<>Sacha.

print:-solve(Ivan,Petr,Maxim,Sacha,Boris),

write("Ivan car - ",Ivan,"\n","Petr car - ",Petr,"\n"," Maxim car - ", Maxim,"\n","Sasha car - ",Sacha,"\n","Boris car - ",Boris,"\n"),nl.

%-если убрать fail,то посчитает только один вариант! Если поставить то все возможныеgoal

goal

print

4 задача

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

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

domains

database

xpositive(symbol,symbol)

xnegative(symbol,symbol)

predicates

do_expert_bird.

do_consulting

ask(symbol,symbol)

tree_is(symbol)

positive(symbol,symbol)

negative(symbol,symbol)

remember(symbol,symbol,symbol)

clear_facts

goal

do_expert_bird.

clauses

do_expert_bird:-

 makewindow(1,7,7,"Expert System",1,3,22,71),

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

 nl,write(" A Tree Expert "),

 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:-

tree_is(X),!,nl,

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

clear_facts.

do_consulting:-

nl,write("Sorry !"),

clear_facts.

ask(X,Y):-

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

tree_is("Dub"):-

positive(tree,"Listvennaia"),

positive(tree,"Tverdaia"),

positive(tree,"Sero-Korichnevau"),

positive(tree,"Melkaia textura"),!.

tree_is("Buk"):-

positive(tree,"Listvennau"),

positive(tree,"Tverdaia"),

positive(tree,"Svetlo-Korichnevaia"),

positive(tree,"Krupnaia textura"),!.

tree_is("Osina"):-

positive(tree,"Listvennaia"),

positive(tree,"Mugkaia"),

positive(tree,"Svetlaia"),

positive(tree,"Melkaia textura"),!.

tree_is("Tis"):-

positive(tree,"Listvennaia"),

positive(tree,"Ochen tverdaia"),

positive(tree,"Temnaia"),!.

tree_is("El"):-

positive(tree,"Hvoinaia"),

positive(tree,"Mugkaia"),

positive(tree,"Svetlaia"),

positive(tree,"Smolistaia"),!.

tree_is("Sosna"):-

positive(tree,"Hvoinaia"),

positive(tree,"Mugkaia"),

positive(tree,"Svetlaia"),

positive(tree,"Ochen smolistaia"),!.

tree_is("Stolb"):-

positive(tree,"Ne derevo"),

positive(tree,"Ochen tverdii"),!.

Список литературы.:

  1.  И. Братко Программирование на языке Пролог для искусственного интеллекта: Пер. с англ.-М.: Мир, 1990.- 560 с.
  2.  Ин Ц., Соломон Д. Использование Турбо-Пролога. – М.: Мир, 1993. – 608 С.
  3.  Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог. – М.: Мир, 1990. – 235 с. 

 

А также другие работы, которые могут Вас заинтересовать

14987. ТАРАЗ - ҚАЗАҚ МӘДЕНИЕТIНIҢ АЛТЫН БЕСIГI 37 KB
  ТАРАЗ ҚАЗАҚ МӘДЕНИЕТIНIҢ АЛТЫН БЕСIГI Кәнкиев Ә.Ш. Жүншеев Р.Е. Тараз қ. М.Х.Дулати атындағы ТарМУ Ежелгi Тараз Ұлы Жiбек жолын жалғап жататын турақты дипломатикалық және саудасаттык қарымқатынас жасалатың күре тамыры iспеттес. Бұл байланыс көпiрiнiң маңызы дүние
14988. Тараздың көне моншалары 37.5 KB
  Тараздың көне моншалары. Көне деректерге сүйенетін болсақ Тараз қаласы Талас өңіріндегі саяси мәдениеттің ірі орталығы болған республикадағы ежелгі қалалардың бірі. Онда көптеген елдің көпестері мемлекетаралық іспен шұғылданған елшілер әртүрлі діни ағымды тарат
14989. Түркістан аймағындағы Сығанақ қаласының тарихы 35.5 KB
  ТҮРКІСТАН АЙМАҒЫНДАҒЫ СЫҒАНАҚ ҚАЛАСЫНЫҢ ТАРИХЫ Сыр бойындағы ірі қалалардың бірі Сығанақ болды. Ол қазіргі Қызылорда облысының Жаңақорған ауданындағы қала еді. Бұл қала туралы алғаш рет Х ғасырдағы жазба деректерде айтылған. XI ғ. Ғұлама ғалым түркі тілінің маманы Ма
14990. ҮСТІРТ КЕРУЕН ЖОЛЫНДАҒЫ САМ ҚАЛАСЫ 66.5 KB
  ҮСТІРТ КЕРУЕН ЖОЛЫНДАҒЫ САМ ҚАЛАСЫ Тарихтың атасы атанған Геродот бiздiң дәуiрiмiзге дейiнгi мыңжылдықтың орта шенiнде Қара теңiз маңынан Дон жағалауына одан Оңтүстiк Оралдағы савроматтар жерi арқылы Ертiс бойы мен Алтайға Зайсан көлiне дейiн барған далалық сақ жолының
14991. Ұлы даланың астаналары 52.5 KB
  Ұлы даланың астаналары Дидарыңда Мәңгіліктің мұңы ұйыған Ұлы Дала... Керуендеп көшкен тұтас дәуірлер ол үшін қасқағымдық мезет қана. Қатпарлы тау аңырған оқшау төбелермен толқындап шексіздікке маңған ұлан жазық алапат кеңістік мұхитының шежіреестелігі де біртүрлі...
14992. Мұражай тәрбие өзегі 67.5 KB
  Мұражай тәрбие өзегі Ақселеу Сланұлы Сейдімбеков бұрыны Жезқазған қазіргі Қарағанды облысы Жаңаарқа ауданына қарасты Дружба совхозына 1942 жылы дүниеге келген. 1962 жылдан 1968 жылға дейін Киров атындағы Қазақ мемлекеттік университетінде оқып журналистика факульте...
14993. Шу өңірінің тарихын білеміз бе 58 KB
  Шу өңірінің тарихын білеміз бе Біздің білетініміз Шу тарихын зерттеп жүрген екі ғалым бар. Бірі тарих ғылымдарының докторы профессор Қожа Ахмет Ясауи атындағы Халықаралық қазақтүрік университетінің құрметті профессоры Әбу Насыр ӘлФараби атындағы Қазақ ұл...
14994. Web-бет дизайны, HTML 504 KB
  Webбет дизайны HTML Кіріспе Қазақстан Республикасының білім беру жүйесін ақпараттандыру еліміздің даму стратегиясының негізгі бағыттарының бірі себебі ХХІ ғасыр – білім беру жүйесін ақпараттандыру ғасыры. Информатика пәнінің орта білім беру жүйесіндегі ролі ...
14995. Интернет жүйесі 622.5 KB
  Интернет жүйесі Интернет туралы ұғым. Жиырмасыншы ғасырдың аяғында пайда болған Интернет қазір жер шарының әр түкпірін байланыстырып сан алуан адамдарды елдер мен құрылқтарды біріктіріп отыр. Интернет 1960 жылдары АҚШта дүниеге келдi.Оны соғыс бола қалған жағ...