This shows you the differences between two versions of the page.
courses:knowledge_base_and_expert_system:lab5 [2019/10/03 23:02] andrey.suchkov [Цель работы] |
courses:knowledge_base_and_expert_system:lab5 [2022/12/10 09:08] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Лабораторная работа №5: Разработка простой экспертной системы на языке Visual Prolog ====== | ||
- | ===== Цель работы ===== | ||
- | Реализация и отладка простой экспертной системы на языке Visual Prolog. | ||
- | ===== Основные теоретические положения ===== | ||
- | Экспертные системы (ЭС) -- это системы искусственного интеллекта (интеллектуальные системы), предназначенные для решения плохо формализованных и слабо структурированных задач в определенных проблемных областях на основе заложенных в них знаний специалистов-экспертов. В настоящее время ЭС внедряются в различные виды человеческой деятельности, где использование точных математических методов и моделей затруднительно или вообще невозможно. К ним относятся: медицина, обучение, поддержка принятия решений и управление в сложных ситуациях, различные деловые приложения и т.д. | ||
- | Основными компонентами ЭС являются рабочая память, называемая также базой данных (БД), база знаний (БЗ), блоки поиска решения, объяснения, извлечения и накопления знаний, обучения и организации взаимодействия с пользователем. Рабочая память, БЗ и блок поиска решений образуют ядро ЭС. | ||
- | |||
- | База данных (рабочая память) предназначена для хранения исходных и промежуточных данных решаемой в текущий момент задачи. Этот термин совпадает по названию, но не по смыслу с термином, используемым в информационно-поисковых системах (ИПС) и системах управления базами данных (СУБД) для обозначения всех данных (в первую очередь долгосрочных), хранимых в системе. | ||
- | |||
- | База знаний в ЭС предназначена для хранения долгосрочных данных, описывающих рассматриваемую предметную область (а не текущих данных), и правил, описывающих целесообразные преобразования данных этой области. | ||
- | |||
- | Для конструирования ЭС используются различные инструментальные средства: универсальные языки программирования, языки искусственного интеллекта, инструментальные системы и среды и системы-оболочки. Системы-оболочки являются наиболее простым средством формализации (автоформализации) экспертных знаний, практически не требующие участия посредников в лице инженера по знаниям или программиста при их использовании. Инженер по знаниям только помогает эксперту выбрать наиболее подходящую для его проблемной области оболочку. | ||
- | |||
- | Рассматриваемая в данной работе экспертная система функционирует следующим образом. Например, при работе с предметной областью <<Бытовая техника>>, определяется предикат ''technique_is(string)'', позволяющий идентифицировать бытовую технику, которая более всего удовлетворяет указанным пользователем признакам. При этом БЗ экспертной системы задается перечислением свойств объектов, которые у них имеются или же отсутствуют: | ||
- | <code prolog> | ||
- | technique_is ("CD-плейер") :- | ||
- | it_is ("аудио"), | ||
- | positive ("работает с", "CD-дисками"), | ||
- | negative ("имеет", "динамик"). | ||
- | </code> | ||
- | Предикаты ''positive'' и ''negative'' необходимы для того, чтобы запросить у пользователя ответ о наличии у объекта какого-то свойства и сохранить этот ответ в рабочей памяти: | ||
- | <code prolog> | ||
- | positive(X,Y) :- | ||
- | xpositive(X,Y),!. | ||
- | positive(X,Y) :- | ||
- | not(xnegative(X,Y)), | ||
- | ask(X,Y,Answer), | ||
- | remember(X,Y,Answer), | ||
- | Answer = yes. | ||
- | negative(X,Y) :- | ||
- | xnegative(X,Y),!. | ||
- | negative(X,Y) :- | ||
- | not(xpositive(X,Y)), | ||
- | ask(X,Y,Answer), | ||
- | remember(X,Y,Answer), | ||
- | Answer = no. | ||
- | ask(X,Y,yes) :- | ||
- | write(X," ",Y,"?"), | ||
- | readln(Reply), | ||
- | frontchar(Reply,'y',_),!. | ||
- | ask(_,_,no). | ||
- | remember(X,Y,yes) :- | ||
- | assertz(xpositive(X,Y)). | ||
- | remember(X,Y,no) :- | ||
- | assertz(xnegative(X,Y)). | ||
- | </code> | ||
- | Два встроенных предиката ''asserta'' и ''assertz'' позволяют добавлять новые утверждения в базу данных. Оба предиката действуют в точности одинаковым образом, за тем исключением, что ''asserta'' добавляет утверждение в начало базы данных, в то время как ''assertz'' (или ''assert'') добавляет утверждение в ее конец. | ||
- | ===== Постановка задачи ===== | ||
- | Разработать в среде Visual Prolog простую ЭС в соответствии с вариантом задания либо предложив свою предметную область, предварительно согласовав её с преподавателем. | ||
- | ===== Порядок выполнения работы ===== | ||
- | - Разработать простую ЭС в соответствии с вариантом задания либо . | ||
- | - Произведите отладку ЭС в среде Visual Prolog для различных наборов ответов пользователя на задаваемые экспертной системой вопросы. | ||
- | ===== Варианты заданий ===== | ||
- | ^ № варианта ^ Описание ^ | ||
- | | 1 | Экспертная система с __обратной__ цепочкой рассуждений для определения заболевания пациента. | | ||
- | | ::: | Количество возможных видов заболеваний -- 3. | | ||
- | | ::: | Количество признаков заболеваний -- 15. | | ||
- | | ::: | Максимальная глубина дерева определения заболевания по соответствующим признакам -- 4. | | ||
- | | 2 | Экспертная система с __прямой__ цепочкой рассуждений для определения заболевания пациента. | | ||
- | | ::: | Количество возможных видов заболеваний -- 15. | | ||
- | | ::: | Количество признаков заболеваний -- 7. | | ||
- | | ::: | Максимальная глубина дерева определения заболевания по соответствующим признакам -- 4. | | ||
- | | 3 | Экспертная система с __обратной__ цепочкой рассуждений для определения причины неработоспособности компьютера. | | ||
- | | ::: | Количество возможных причин неработоспособности -- 4. | | ||
- | | ::: | Количество признаков неработоспособности -- 15. | | ||
- | | ::: | Максимальная глубина дерева определения причины неработоспособности по соответствующим признакам -- 3. | | ||
- | | 4 | Экспертная система с __прямой__ цепочкой рассуждений для определения причины неработоспособности компьютера. | | ||
- | | ::: | Количество возможных причин неработоспособности -- 12. | | ||
- | | ::: | Количество признаков неработоспособности -- 6. | | ||
- | | ::: | Максимальная глубина дерева определения причины неработоспособности по соответствующим признакам -- 4. | | ||
- | | 5 | Экспертная система с __обратной__ цепочкой рассуждений для определения причины, по которой не заводится автомобиль. | | ||
- | | ::: | Количество возможных причин -- 4. | | ||
- | | ::: | Количество признаков, позволяющих определить причину -- 11. | | ||
- | | ::: | Максимальная глубина дерева определения причины по соответствующим признакам -- 3. | | ||
- | | 6 | Экспертная система с __прямой__ цепочкой рассуждений для определения причины, по которой не заводится автомобиль. | | ||
- | | ::: | Количество возможных причин -- 6. | | ||
- | | ::: | Количество признаков, позволяющих определить причину -- 7. | | ||
- | | ::: | Максимальная глубина дерева определения причины по соответствующим признакам -- 5. | | ||
- | | 7 | Экспертная система с __обратной__ цепочкой рассуждений для выработки рекомендаций студенту по планированию его времени для успешной сдачи экзаменов. | | ||
- | | ::: | Количество возможных рекомендаций -- 4. | | ||
- | | ::: | Количество факторов, влияющих на выработку рекомендации -- 11. | | ||
- | | ::: | Максимальная глубина дерева определения причины по соответствующим факторам -- 4. | | ||
- | | 8 | Экспертная система с __прямой__ цепочкой рассуждений для выработки рекомендаций студенту по планированию его времени для успешной сдачи экзаменов. | | ||
- | | ::: | Количество возможных рекомендаций -- 10. | | ||
- | | ::: | Количество факторов, влияющих на выработку рекомендации -- 4. | | ||
- | | ::: | Максимальная глубина дерева определения причины по соответствующим факторам -- 5. | | ||
- | ===== Содержание отчёта ===== | ||
- | * Цель работы. | ||
- | * Краткое изложение основных теоретических понятий. | ||
- | * Постановка задачи с кратким описанием порядка выполнения работы. | ||
- | * Результаты работы программы для различных исходных ситуаций (скриншоты экрана с результатами работы программы). Объяснения результатов программы | ||
- | * Общий вывод по проделанной работе. | ||
- | * Код программы. |