Лабораторная работа №4 / 4
.docМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ
Лабораторная работа №4
по дисциплине
«Системы искусственного интеллекта»
|
Студент |
|
|
|
Филатов А.А. |
|
||||||||
|
|
|
подпись, дата |
|
фамилия, инициалы |
|
||||||||
|
Группа |
|
АС-09 |
|
|
|
|
|||||||
|
|
|
|
|
|
|
||||||||
|
Принял |
|
|
|
|
|
||||||||
|
|
|
|
|
Махлышев М.А. |
|
||||||||
|
ученая степень, звание |
|
подпись, дата |
|
фамилия, инициалы |
|
Липецк 2012
Задание кафедры
1. Сформировать собственную базу правил (не менее 20 правил) в произвольной предметной области на основе собственных знаний или знаний эксперта.
2. Написать программный модуль на языке Prolog, реализующий вышеприведенный алгоритм.
1. База
Если власть = легитимна то народ = доволен
Если власть = не_легитимна то народ = не_доволен
Если власть = коррупционна то народ = не_доволен
Если народ = доволен то в_стране = порядок
Если в_стране = порядок то выборы = не_нужны
Если народ = не_доволен то в_стране = митинги
Если в_стране = митинги И госдеп = вмешивается то правительство = обвиняет_госдеп
Если в_стране = митинги И госдеп = не_вмешивается то гражданское_общество = зарождается
Если президент = умер то выборы = новые
Если президент = не_дееспособный то выборы = новые
Если президент = совержил_тяжкое_преступление то выборы = новые
Если президент = хороший_человек то народ = доволен
Если президент = закончился_срок то выборы = новые
Если правительство = контроллирует_сми то конституция = не_исполняется
Если правительство = запрещает_митинги то конституция = не_исполняется
Если правительство = ничего_не_делает то конституция = не_исполняется
Если правительство = защищает_народ то конституция = исполняется
Если конституция = исполняется то народ = доволен
Если конституция = не_исполняется то народ = не_доволен
2. Схема
3. Листинг
domains
database
have_found(symbol)
db_confirm(symbol,symbol)
db_denied(symbol,symbol)
predicates
guess_animal
find_animal
test1(symbol)
test2(symbol,symbol)
test3(symbol,symbol,symbol)
confirm(symbol,symbol)
denied(symbol,symbol)
check_if(symbol,symbol)
remember(symbol,symbol,symbol)
goal
guess_animal.
clauses
guess_animal:-
find_animal,
have_found(X),
write("Result: ",X),nl,!.
find_animal:-
test1(X),
test2(X,Y),
test3(X,Y,_),!.
test1(y):-
confirm("Narod","dovolen"),!.
test1(n).
test2(y,y):-
confirm("President","umer"),
asserta(have_found("Vybory novye")),!.
test2(y,n):-
asserta(have_found("Vybory ne nyzhny")),!.
test2(n,y):-
confirm("V strane","Poryadok"),
asserta(have_found("Vybory ne nuzhny")),!.
test2(n,n).
test3(n,n,y):-
confirm("gosdep","vmesh"),
asserta(have_found("Pravit obvin gosdep")),!.
test3(n,n,n):-
asserta(have_found("Zarozhd gragd obsh")),!.
confirm(X,Y):-
db_confirm(X,Y),!.
confirm(X,Y):-
not(denied(X,Y)),
!,
check_if(X,Y).
denied(X,Y):-
db_denied(X,Y),!.
check_if(X,Y):-
write(X," ",Y,"?\n"),
readln(Reply),
remember(X,Y,Reply).
remember(X,Y,yes):-
asserta(db_confirm(X,Y)).
remember(X,Y,no):-
asserta(db_denied(X,Y)),
fail.
4. Пример