Разработка элементов систем искусственного интеллекта с использованием логической модели представления знаний Вариант-9 - файл n5.doc

Разработка элементов систем искусственного интеллекта с использованием логической модели представления знаний Вариант-9
Скачать все файлы (141.4 kb.)

Доступные файлы (5):
n1.pro
2-18.pro
2-5.pro
3-8.pro
n5.doc264kb.30.12.2010 15:17скачать

n5.doc

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

Кафедра АСУ

Курсовая работа
По дисциплине: «Системы искусственного интеллекта»

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

Вариант-9


выполнил:

студент группы АСОИ-
проверил: Алыпов Ю.Е.

Уфа, 2010 г.

Задание 1:


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

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

PREDICATES

nondeterm Parent(string, string).

nondeterm Man(string).

nondeterm Woman(string).

nondeterm Married(string, string).

nondeterm Father(string, string).

nondeterm Mother(string, string).

nondeterm Brother(string, string).

nondeterm Sister(string, string).

nondeterm Grandmother(string, string).

nondeterm Grandfather(string, string).

nondeterm Aunt(string, string).

nondeterm Uncle(string, string).

nondeterm Nephew(string, string).

nondeterm Niece(string, string).

nondeterm Cousin(string, string).

CLAUSES

Parent(andrew, X) :- X=sveta; X=ivan.

Parent(ann, X) :- X=sveta; X=ivan.

Parent(X, alex) :- X=sveta; X=vova.

Parent(ivan, X) :- X=masha; X=natasha.

Parent(ira, X) :- X=masha; X=natasha.
Man(X) :- X=andrew; X=vova; X=alex; X=ivan.

Woman(X) :- X=ann; X=sveta; X=ira; X=masha; X=natasha.
Married(andrew, ann).

Married(vova, sveta).

Married(ivan, ira).

Father(X, Y) :- Parent(X, Y), Man(X).

Mother(X, Y) :- Parent(X, Y), Woman(X).

Brother(X, Y) :- Father(R1, X), Mother(R2, Y), Married(R1, R2), Man(X), X<>Y.

Sister(X, Y) :- Father(R1, X), Mother(R2, Y), Married(R1, R2), Woman(X), X<>Y.

Grandmother(X, Y) :- Parent(R, Y), Parent(X, R), Woman(X).

Grandfather(X, Y) :- Parent(R, Y), Parent(X, R), Man(X).

Aunt(X, Y) :- Parent(R, Y), Sister(X, R).

Uncle(X, Y) :- Parent(R, Y), Brother(X, R).

Nephew(X, Y) :- Parent(R, X), Brother(Y, R), Man(X).

Nephew(X, Y) :- Parent(R, X), Sister(Y, R), Man(X).

Niece(X, Y) :- Parent(R, X), Brother(Y, R), Woman(X).

Niece(X, Y) :- Parent(R, X), Sister(Y, R), Woman(X).
Cousin(X,Y) :- Uncle(Z, Y), Parent(Z, X).

Cousin(X,Y) :- Aunt(Z, Y), Parent(Z, X).

GOAL

Father(X, Y).

% Uncle(X, Y).

% Brother(X, Y).

% Cousin(X,Y).

Результаты

Для проверки корректности работы программы используем различные цели:
Цель: Father(X, Y).

Результат


Цель: Uncle(X,Y)

Результат


Цель: Brother(X,Y)

Результат


Цель: Cousin(X,Y)

Результат



Все полученные результаты подтверждают корректность работы программы.

Задание 2:



1.

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

PREDICATES

nondeterm f(integer, integer)

nondeterm task(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.

task(R, R) :- nl.

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

task(R2, Itog).

GOAL

task(0, 10).
Результаты
Goal: task(0,10).

Результат:

0 1 1 2 3 5 8 13 21 34

yes
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("Classic China Trip ","China",9,1500).

fact("Dubai Holiday Package ","UAE",4,1000).

fact("Egypt Trip ","Egypt",8,12000).

fact("Europe Package Tour ", "Europe", 15, 3000).

fact("Kenia Wild Life Tour ","Kenia",8,2500).

fact("South Africa Vacation ","UAR",07,2400).

fact("Hong Kong Tour ","Hong Kong ",05,3000).

fact("The Heard of Cambodia ","Cambodia",05,2000).

fact("Imperial Trtriangle ","Europe",08,1800).

%предикаты

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 играют каждый на одном из инструментов: флейте, рояле, гитаре и скрипке. Каждый владеет одним из иностранных языков: английским, французским, немецким и испанским. Известно, что:

Кто на каком инструменте играет и на каком языке говорит?
Текст программы на Прологе
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)
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).

GOAL

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

Результаты
X1=a, Y1=piano, Z1=german,

X2=b, Y2=guitar, Z2=spanish,

X3=c, Y3=violin, Z3=english,

X4=d, Y4=flute, Z4=french

1 Solution
Выводы

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

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

  1. МЕТОДИЧЕСКИЕ УКАЗАНИЯ к выполнению курсового проекта по дисциплине
    «Системы искусственного интеллекта»
Учебный текст
© perviydoc.ru
При копировании укажите ссылку.
обратиться к администрации