ИИС_Лаб_1_ИЭоз-60а-19_Разумов П.В.. Разработка прототипа экспертной системы, базирующейся на правилах
Скачать 89.67 Kb.
|
ФГБОУ ВО НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ «МЭИ» «Инженерно-экономический институт» Кафедра «Безопасности и информационных технологий» Интеллектуальные информационные системы Лабораторная работа №1 на тему: «Разработка прототипа экспертной системы, базирующейся на правилах» Руководитель доц. Карпович Е.Е. Выполнил студент группы ИЭоз-60а-19 Разумов П.В. Москва 2023г Задание: Разработать базу знаний ЭС в выбранной предметной области. Написать программу, выполняющую функции ЭС, с использованием системы программирования SWI Prolog. Продемонстрировать работу программы. Составить отчет по лабораторной работе. Состав данных: База знаний на тему - Морские животные Текст программы: :- dynamic xpositive/2, xnegative/2. run :- assertz(xpositive(' ',' ')), assertz(xnegative(' ',' ')), nl,write(' * * * * * * * * * * * * * * * * * * * * * '), nl,write(' ДОБРО ПОЖАЛОВАТЬ! '), nl,write(' Проводится идентификация вида '), nl,write(' Отвечайте, пожалуйста, да или нет '), nl,write(' на вопросы об акулах, вид которой '), nl,write(' Вы хотите определить '), nl,write(' * * * * * * * * * * * * * * * * * * * * * * '), nl, expertiza. expertiza :- shark_is(X), !, nl, write('Вероятно Ваша акула – '), write(X), write('.'), nl,clear_facts. expertiza :- nl, write('Извините, я не смогу помочь Вам!'), clear_facts. vopros(X, Y) :- write('вопрос – '), write(X), write(' '), write(Y), write('? (да/нет) '), read(R), remember(X, Y, R). positive(X, Y) :- xpositive(X, Y), !. positive(X, Y) :- not(negative(X, Y)), !, vopros(X, Y). negative(X, Y) :- xnegative(X, Y), !. remember(X, Y, 'да') :- assertz(xpositive(X, Y)). remember(X, Y, 'нет') :- assertz(xnegative(X, Y)), fail. clear_facts :- retract(xpositive(_,_)), fail. clear_facts :- retract(xnegative(_,_)), fail. shark_is('Азиатская_кунья') :- positive('у нее','размер до 1,5м'), positive('она','опасна'),!, positive('она','часто встречается'),!. shark_is('Острозубая') :- positive('у нее','размер от 1,2м'), positive('она','не опасна'),!, positive('она','редко встречается'),!. shark_is('Колючая_акула') :- positive('у нее','размер 2м'), positive('она','потенциально опасна'),!, positive('она','часто встречается'),!. shark_is('Акула_молот') :- positive('у нее','размер до 4м'), positive('она','опасна'),!, positive('она','редко встречается'),!. shark_is('Белая_акула') :- positive('у нее','размер до 7м'), positive('она','очень опасна'),!, positive('она','крайне редко встречается'),!. shark_is('Тихоокеанская_сельдевая') :- positive('у нее','размер до 3,6м'), positive('она','потенциально опасна'),!, positive('она','редко встречается'),!. Тест работы программы: |