Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПРО-332б Ихсанова ЛР 3

.docx
Скачиваний:
0
Добавлен:
07.04.2025
Размер:
73.05 Кб
Скачать

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

Федеральное государственное бюджетное

образовательное учреждение высшего образования

«Уфимский университет науки и технологий»

Кафедра ВМиК

Отчет к лабораторной работе №3

По дисциплине «Логическое программирование»

На тему: «Экспертные системы»

Выполнил:

Студентка группы ПРО-332Б:

Ихсанова Э. А.

Проверил:

Cтарший преподаватель кафедры ВМиК Шакирзянов А. А.

Уфа 2024

Задание:

Разработать экспертную систему «Видеосалон», предназначенную для выбора фильмов в соответствии с предъявляемыми требованиями.

Ход работы

Экспертная система видеосалон также может предложить рекомендации по выбору фильмов, исходя из предпочтений пользователя или оценок других зрителей.

Код программы

database

xpositive(symbol, symbol)

xnegative(symbol, symbol)

predicates

run %запускает систему, задает вопросы и выводит рекомендацию фильма

it_is(symbol) %предикат, определяющий жанр фильма по критериям

movie_is(symbol) %предикат, определяющий фильм по критериям

ask(symbol, symbol) %задает вопрос и запоминает ответ

positive(symbol, symbol) %определяют позитивные ответы.

negative(symbol, symbol) %определяют негативные ответы.

remember(symbol, symbol, symbol) %записывает ответ на вопрос

clear_facts %очищает факты

goal %цель системы

run.

clauses

run :- write("Отвечать д/н\n"), movie_is(X), !, write("\n Вам более всего подходит ", X), nl, clear_facts.

run :- write("\n Интерстеллар"), clear_facts.

positive(X, Y) :- xpositive(X, Y), !.

positive(X, Y) :- not(negative(X, Y)), !, ask(X,Y).

negative(X, Y) :- xnegative(X, Y), !.

ask(X, Y) :- write("Фильм должен ", X, " ", Y, "?\n"), readln(Reply), remember(X, Y, Reply).

remember(X, Y, "д") :- asserta(xpositive(X, Y)).

remember(X, Y, "н") :- asserta(xnegative(X, Y)), fail.

clear_facts :- retract(xpositive(_, _)), fail.

clear_facts :- retract(xnegative(_, _)), fail.

clear_facts :- write("\n press enter"), readchar(_).

it_is("ужасы"):-

positive("быть", "страшным"),

positive("иметь", "напряженную атмосферу"),

positive("иметь", "мистику"),

positive("иметь", "темные сцены").

it_is("комедия"):-

positive("быть", "веселым"),

positive("иметь", "юморные ситуации"),

positive("поднимать", "настроение"),

positive("иметь", "забавных персонажей").

it_is("драма"):-

positive("быть", "глубоким"),

positive("иметь", "трагический сюжет"),

positive("вызывать", "сильные эмоции"),

positive("иметь", "драматичные моменты").

it_is("фэнтези"):-

positive("иметь", "волшебство"),

positive("быть", "необычным"),

positive("иметь", "фантастические существа"),

positive("переносить", "в другие миры").

it_is("боевик"):-

positive("иметь", "боевые сцены"),

positive("включать", "преследования"),

positive("иметь", "динамичный сюжет"),

positive("быть", "зрелищным").

movie_is("Оно"):-

it_is("ужасы"),

positive("быть", "экранизацией известного романа"),

positive("иметь", "страшных клоунов"),

positive("иметь", "необычные феномены"),

positive("иметь", "тревожную музыку"),!.

movie_is("Мстители"):-

it_is("фэнтези"),

positive("иметь", "супергероев"),

positive("включать", "эпические битвы"),

positive("иметь", "невероятные возможности персонажей"),

positive("быть", "зрелищным"),!.

movie_is("Форрест Гамп"):-

it_is("драма"),

positive("быть", "всемирно известной кинолентой"),

positive("иметь", "жизненную мудрость"),

positive("иметь", "запоминающиеся цитаты"),

positive("вызывать", "сильные эмоции"),!.

movie_is("Храбрая сердцем"):-

it_is("драма"),

positive("иметь", "сильную женскую героиню"),

positive("показывать", "исторические события"),

positive("иметь", "потрясающую музыку"),

positive("вызывать", "гордость"),!.

movie_is("Шрек"):-

it_is("анимационный"),

positive("быть", "приключенческим"),

positive("иметь", "смешные персонажи"),

positive("включать", "юмор для взрослых и детей"),

positive("иметь", "положительное послание"),!.

Список основных предикатов

run %запускает систему, задает вопросы и выводит рекомендацию фильма

it_is(symbol) %предикат, определяющий жанр фильма по критериям

movie_is(symbol) %предикат, определяющий фильм по критериям

ask(symbol, symbol) %задает вопрос и запоминает ответ

positive(symbol, symbol) %определяют позитивные ответы.

negative(symbol, symbol) %определяют негативные ответы.

remember(symbol, symbol, symbol) %записывает ответ на вопрос

clear_facts %очищает факты

Р езультат работы

Рисунок 1

Рисунок 2

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