Разработка элементов систем искусственного интеллекта с использованием логической модели представления знаний
Написание программы с использованием языка логического программирования Prolog, в которой отображаются все родственные отношения с помощью заданных правил и фактов. Создание программы, реализующей авиасправочник. Проект экспертной системы породы дерева.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 08.08.2013 |
Размер файла | 1007,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
ФЕДЕРАЛЬНОЕ АГЕНТСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ ПО ОБРАЗОВАНИЮ И НАУКЕ
УФИМСКИЙ ГОСУДАРСТВННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Пояснительная записка к курсовому проекту
по дисциплине «Системы искусственного интеллекта»
на тему:
«Разработка элементов систем искусственного интеллекта с использованием логической модели представления знаний»
Вариант 25
Уфа 2012
Задание 1
Задание:
Используя предикаты parent(symbol,symbol), man(symbol), woman(symbol), married(symbol,symbol), записать факты, описывающие Вашу семью. Записать 8 правил вывода для любых родственных отношений в Вашей (или вымышленной)семье (например: мать, отец, сестра, брат, племянница, племянник, тетя, дядя, внучка, внук, бабушка, дедушка, двоюродная сестра, двоюродный брат и т.д.).
Описание родственных связей:
Рис. 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).
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) % решить
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
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)),
ail.
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"),!.
Список литературы
И. Братко Программирование на языке Пролог для искусственного интеллекта: Пер. с англ.-М.: Мир, 1990.- 560 с.
Ин Ц., Соломон Д. Использование Турбо-Пролога. - М.: Мир, 1993. - 608 С.
Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог. - М.: Мир, 1990. - 235 с.
Размещено на Allbest.ru
Подобные документы
Разработка программы для поиска пути в лабиринте с возможностью задания входа и выхода, наглядное представление решений. Использование языка логического программирования Prolog. Данные и методы решения. Пользовательский интерфейс, листинг программы.
реферат [14,3 K], добавлен 15.10.2012Реализация экспертных систем любой сложности, решение любых головоломок и шарад с помощью языка логического программирования Prolog. Основные понятия в языке Prolog. Правила логического вывода и запросы. Процедуры логического вывода и принятия решений.
курсовая работа [19,0 K], добавлен 24.05.2012Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.
курсовая работа [333,5 K], добавлен 21.01.2013Общая характеристика и функциональные возможности языка логического программирования Prolog, а также систем SWI-Prolog и Visual Prolog. Формирование базы знаний относительно определения возможности трудоустройства студента и принципы реализации запросов.
лабораторная работа [1,3 M], добавлен 07.10.2014Обобщенная структура и принципы функционирования экспертных систем. Выбор модели представления знаний. Разработка логического блока программы и графического пользовательского интерфейса. Текст программы и экспериментальная оценка результатов работы.
дипломная работа [2,4 M], добавлен 06.03.2013Программный продукт для игры "Крестики-нолики". Описание пользовательского интерфейса. Факт базы данных, определяющий состояние счёта. Предикат изменяющий состояние игрового процесса и подсчитывающий количество занятых ячеек поля. Исходный код программы.
курсовая работа [34,6 K], добавлен 19.05.2014Фреймовые модели представления знаний. Разработка структуры фреймов для реализации экспертной системы. Разработка экспертной системы с фреймовой моделью представления знаний. Редактирование базы фактов кандидатов и описание режима консультации.
курсовая работа [1,3 M], добавлен 13.10.2012Проблема представления знаний в компьютерных системах – одна из основных проблем в области искусственного интеллекта. Исследование различных моделей представления знаний. Определения их понятия. Разработка операции над знаниями в логической модели.
курсовая работа [51,9 K], добавлен 18.02.2011Основы языка Visual Prolog. Введение в логическое программирование. Особенности составления прологов, синтаксис логики предикатов. Программы на Visual Prolog. Унификация и поиск с возвратом. Использование нескольких значений как единого целого.
лекция [120,5 K], добавлен 28.05.2010Выбор алгоритма решения задачи. Разработка программы, обеспечивающую эффективную обработку и хранение информации с использованием линейных списков. Написание программы на псевдокоде и на языке программирования высокого уровня. Результаты работы программы.
курсовая работа [2,1 M], добавлен 21.04.2012