Лабораторная работа 1. Простая экспертная система на языке Prolog
Стр 1 из 4Следующая ⇒ ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра автоматизированных систем управления (АСУ)
А.Я. Суханов ЭКСПЕРТНЫЕ СИСТЕМЫ
Учебное методическое пособие по лабораторным и практическим занятиям, самостоятельной и индивидуальной работе студентов направления бакалавриата 230100
Суханов А.Я. Экспертные системы: Учебное методическое пособие по лабораторным и практическим занятиям, самостоятельной и индивидуальной работе студентов – 37 с.
Учебное методическое пособие содержит программу для проведения лабораторных и практических занятий, а также экзаменационные вопросы по дисциплине.
© ТУСУР, каф. АСУ
Ó Суханов А.Я., 2014 ЦЕЛИ И ЗАДАЧИ ДИСЦИПЛИНЫ Целью дисциплины является ознакомление студентов с экспертными системами и основами их проектирования и реализации, а также изучение основных моделей представления знаний. Необходимо заложить основы проектирования и принципы функционирования экспертных систем для последующего самостоятельного изучения и освоения программных продуктов предназначенных для создания и поддержки экспертных систем, а также их возможной разработки для какой-либо предметной области. Основной задачей изучения дисциплины является приобретение студентами прочных знаний и практических навыков в области, определяемой основной целью курса. В результате изучения курса студенты должны свободно ориентироваться и иметь представление о различных моделях представления знаний, включая семантические сети, фреймы и продукционные модели, иметь понятие о нечетких знаниях (ненадежных знаниях и нечетких множествах), а также принципах проектирования экспертных систем.
В результате изучения дисциплины студент должен: Знать: Основные методы и модели представления знаний о предметной области: семантические сети, фреймы, продукции, способы вывода знаний на данных моделях, выводы в логике предикатов и высказываний. Методы представления нечетких знаний, понятие о нечетких множествах, выводах на нечетких множествах, байесовский и минимаксных подходы в представлении ненадежных знаний. Состав экспертной системы и принципы ее организации, способы объяснения выводов. Уметь: Проектировать и реализовывать экспертные системы в какой-либо предметной области с использованием систем предназначенных для этого, а также на языках высокого уровня. Работать с экспертами, литературой и другими источниками информации, в том числе сетью Интернет, для выявления знаний и представления их в виде выбранной модели. Владеть: Языком логического программирования (Prolog), одним и языков программирования высокого уровня (Java, C#, Python) и средствами реализации графического интерфейса пользователя для создания оболочки экспертной системы.
Содержание разделов дисциплины
Темы для самостоятельного изучения. Нейронные RBF сети. Реальные экспертные системы. Семантическая паутина.
основная литература 1. Системы искусственного интеллекта: модели и технологии, основанные на знаниях [Текст]: учебник для вузов / Л. С. Болотова; Министерство образования и науки Российской Федерации, Российский государственный университет инновационных технологий и предпринимательства, Государственный научно-исследовательский институт информационных технологий и телекоммуникаций "Информатика". - М.: Финансы и статистика, 2012. - 664 с (15 экз.)
б) дополнительная литература 1. Методы искусственного интеллекта. Программирование в Prolog [Текст]: практикум / Д. В. Багаев; Федеральное агентство по образованию, Ковровская государственная технологическая академия им. В. А. Дегтярева (Ковров). - Ковров: КГТА, 2010. - 52 с. - Библиогр.: с. 51. (10 экз.) 2. Системы искусственного интеллекта. Практический курс: учебное пособие для вузов / В. А. Чулюков [и др.]; ред. И. Ф. Астахова. - М.: БИНОМ. Лаборатория знаний, 2008; М.: Физматлит, 2008. - 292[4] с .(1 экз) 3. Интеллектуальные информационные системы: учебник для вузов / Д. В. Гаскаров. - М.: Высшая школа, 2003. - 430[2] с.: ил. - Библиогр.: с. 424. (65 экз.)
в) программное обеспечение Операционные системы линейки Windows. Пакеты Microsoft Office, Open Office. Microsoft Visual Studio 2008, NetBeans IDE, Java Standard Edition 7, CPython, PyPy, SWI-Prolog.
Экзаменационные вопросы 1. Классификация способов представления знаний. Продукционные модели. Фреймы. Семантические сети. 2. Логика предикатов 3. Логика высказываний. 4. Выводы в логических моделях нулевого и первого порядков. 5. Метод резолюций. 6. Выводы знаний на продукционных моделях. 7. Выводы в семантических сетях. 8. Нечеткие множества. 9. Ненадежные знания. 10. Операции над нечеткими множествами. 11. Продукционные нечеткие правила. 12. Коэффициенты уверенности.
13. Условная вероятность и правило Байеса. 14. Теория Демпстера-Шефера 15. Экспертные системы. Структура экспертной системы. 16. Разработчики экспертной системы 17. Этапы проектирования экспертной системы. Машина вывода. 18. Приобретение знаний 19. Объяснение выводов сделанных экспертной системой.
Практические задания 1. Даны следующие высказывания: A: Иванов купил компьютер. B: Петров успешно сдал экзамен. C: Сидоров уехал в другой город. Переведите на естественный язык следующие формулы логики высказываний: ~A→B; (~A∧B) →C; ~(~A→B); ~(B∧C) →~A; ~(~A→B) →C; ~(~B∧~C) →A. 2. Перед началом соревнований трое болельщиков высказали предположения относительно будущих победителей. 1-й болельщик: «Спартак» будет первым, «Динамо» займет третье место. 2-й болельщик: победителем будет «Динамо», «Торпедо» займет третье место. 3-й болельщик: первое место займет «Торпедо», «Динамо» будет вторым. По окончании соревнований выяснилось, что каждый из них был прав лишь в одном из своих предположений. Опишите распределение мест, если каждое место было занято только одним клубом.
3. Переведите на язык высказываний a. Студент не может заниматься, если он устал или голоден. b. Если Иван выиграет в лотерею, он купит компьютер и будет праздновать всю ночь c. Если он не выиграет в лотерею или не купит компьютер, то праздновать всю ночь не будет d. Если Артёму нравятся фиолетовые галстуки, то он популярен и у него много друзей e. Если Игорь носит желтые ботинки, то он не модный и если он не модный, то у него странные друзья. f. Если он не удачлив, то он и не популярен g. Он удачлив и богат, следовательно, он популярен. h. Он читает научную литературу и любит фантастику, следовательно, он ученый-фантаст. i. Если он информатик, то он либо работает за компьютером, либо читает книги об ЭВМ. j. Если он или умеет писать или читать, то он грамотный человек. k. Для того, чтобы натуральное число a было нечётным, достаточно, чтобы оно было простым и большим двух.
4. Выразить описание задачи через фразы Хорна и провести доказательства, используя метод резолюций. 1. Или Пётр и Иван братья, или они однокурсники. Если Пётр и Иван братья, то Сергей и Иван не братья. Если Пётр и Иван однокурсники, то Иван и Михаил также однокурсники. Следовательно или Сергей и Иван не братья, или Иван и Михаил однокурсники. 2. Если Петр не встречал Ивана, то либо Иван не был на лекциях, либо Пётр лжёт. Если Иван был на лекциях, то Пётр встречал Ивана, и Сергей был в читальном зале после лекций. Если Сергей был в читальном зале после лекций, то либо Иван не был на лекциях, либо Пётр лжёт. Следовательно, Иван не был на лекциях. 3. Наша футбольная команда либо выигрывает матч, либо проигрывает, либо сводит его к ничьей. Если матч выигран или проигран, то он не перенесён. Команда матч не выиграла и не свела его к ничьей. Следовательно, матч не перенесён и проигран 4. Если Джон не встречал этой ночью Смита, то либо Джон был убийцей, либо Джон лжет. Если Смит не был убийцей, то Джон не встречал Смита этой ночью, и убийство имело место после полуночи. Если же убийство имело место после полуночи, то либо Смит был убийцей, либо Джон лжет. Следовательно, Смит был убийцей. 5. Известно, что хроничные сепульки всегда латентны или бифуркальны. Какие из следующих утверждений в этом случае истинны: a) сепульки не хроничны только в случае отсутствия у них свойства латентности; b) латентность сепулек не является необходимым условием их хроничности или бифуркальности; c) хроничность сепулек является достаточным условием их латентности или бифуркальности; d) для нехроничности сепулек необходимо отсутствие у них как бифуркальности, так и латентности.
5. Необходимо используя кванторы ∀ и ∃ и операции математической логики: ~ ∼, ∨, ∧, ⊃ перевести предложения с русского на язык предикатов. Пример. Для всякого х неверно А(х): ∀x ∼ ~ A(x). Нет х, такого, что А(х): ∼ ~ ∃x A (x). Варианты задания 1. Вариант 1: Для всякого х неверно А(х). Никто не есть А. Вариант 2: Не при всяком х (верно) А(х). Для некоторых х не (верно) А(х). Вариант 3: Все суть S или P. Нет никакого х, такого, что А(х). Вариант 4: Все суть S или все суть Р. А(х) не выполняются ни для каких х. Вариант 5: А не всегда верно. Нет х, такого, что А(х). Вариант 6: Если S, то для некоторых х(верно) Р(х). А(х) всегда ложно. Вариант 7: А(х) оказывается истинным не для всех х. Никто не есть А. Вариант 8: Все суть S или все суть Р. Что-то не обладает свойством А. Вариант 9: Если S, то для некоторого х (верно) Р(х). Не все обладают свойством А. Вариант 10: А(х) всегда ложно.
Нечто есть S и Р.
6. Необходимо в тексте выделить простые предложения, обозначив их как атомы и затем представить каждое утверждение в виде формулы. Далее доказать теорему, основанную на резолюции путем построения противоречия или опровержения. Пример. Имеются утверждения:
1. Кто может читать, тот грамотный: (∀x)[ Ч (х) ⇒ Г (х)] 2. Дельфины неграмотны: (∀x)[ D (x) ⇒ ∼ ~ Г (х)] 3. Некоторые дельфины обладают интеллектом: (∃х)[ D (x) ∧ И (х)] Мы хотим доказать следующее утверждение: 4. Некоторые из тех, кто обладает интеллектом, не могут читать: (∃ (х)[ И (х) ∧ ∼ ~ Ч (х)]). Воспользуемся преобразованиями. 1. ∼ ~ Ч (х) ∨ Г (х) 2. ∼ ~ D (y) ∨ ∼ ~ Г (y) 3 а. D (A) 3 б. И (А) Здесь переменные разделены, А – сколемовская функция или константа. Отрицание теоремы, которую надо доказать. 4. ' ∼ ~ ∃х[ И (х)∧ ∼ ~Ч (х)] = (∀х) ∼ ~ [ И (х) ∧ ∼ ~ Ч (х)] = ∀ х [∼ ~ И (х) ∨ ∼ Ч (х)] = ∼ ~ И (х)∨ ∼ Ч (х)
Варианты задания Вариант 1: Если 9 марта будет тепло, то Джон поедет в Сан-франциско или в ЛасВегас. Кейт поедет туда же, куда и Джон. Если Мери поедет в Лас-Вегас, то и Джон поедет в Лас-Вегас. Если Мери не поедет в Лас-Вегас, то Джон поедет в Сан-Франциско. Если 8 марта будет холодно, то 9 марта будет тепло. Если 8 марта будет холодно, то Мери не поедет в Лас-Вегас. 8 марта будет холодно. Вопрос: поедет ли Кейт в Сан-Франциско? Вариант 2: Никакой сладкоежка не откажется от вкусного торта. Некоторые люди, которые отказываются от вкусного торта, не любят сладкого. Справедливо ли утверждение: некоторые люди, не любящие сладкого, не являются сладкоежками. Вариант 3: Шар 2 находится всегда в том месте, где находится шар 1. Шар 3 находится в месте А. Если шар 3 находится в месте А, то шар 1 находится в месте В. Где находится шар 2? Вариант 4: Если спрос больше предложения, то цена на данный товар возрастет. Когда цена растет и на данный товар есть заменители, покупатели берут товары-заменители. Когда покупатели берут товары-заменители, спрос на данный товар падает. Спрос больше предложения. Для данного товара есть товары-заменители. Вопрос: упадет ли спрос на товар? Вариант 5: Если команда А выигрывает в футбол, то город А’ торжествует, а если выигрывает команда В, то торжествовать будет город В’. Выигрывает или А или В. Однако, если выигрывает А, то город В’ не торжествует, а если выигрывает В, то не будет торжествовать город А’. Следовательно, город В’ будет торжествовать тогда и только тогда, когда не будет торжествовать город А’. Вариант 6: Любой тсудент хочет закончить институт. Некооторые студенты обладают особыми способностями. Доказать следующее утверждение: студенты, обладающие особыми способностями, хотят закончить институт.
Вариант 7: Сегодня тучи. Если сегодня тучи, то будет дождь. Если будет дождь, то вырастут грибы. Доказать следующее утверждение: вырастут грибы. Вариант 8: Если не работает лифт, я пойду по лестнице пешком. Лифт не работает. Если я пойду пешком по лестнице, то я не куплю стол. Доказать следующее утвердение: Не куплю ли я стол? Вариант 9: Если некто бизнесмен, то он любит считать деньги. Если он любит считать деньги, то деньги у него есть. Олег мужчина. Если он мужчина, то у него черная машина. Если у него есть деньги, то у него дорогая машина. Олег бизнесмен. Если дорогая машина, то Феррари. Если он выберет черную машину, то это будет или Феррари, или Волга. Доказать следующее утверждение: у Олега черная Феррари. Вариант 10: Все первокурсники встречаются со всеми второкурсниками. Ни один первокурсник не встречается ни с одним студентом предпоследнего курса. Существуют первокурсники. Следовательно, ни один второкурсник не является студентом предпоследнего курса. Лабораторный практикум Лабораторная работа 1. Простая экспертная система на языке Prolog Цель работы. Создать на языке Пролог простую экспертную систему на основе логических выводов.
Пролог (англ. Prolog) — язык логического программирования, основанный на языке предикатов первого порядка.
Язык использует набор механизмов вывода, включая сопоставление с образцом, древовидного представления структур данных и автоматического перебора с возвратами, рекурсии. Подходит для решения задач, где рассматриваются структурированные объекты и отношения между ними. Пролог используется в задачах искусственного интеллекта и компьютерной лингвистики. Довольно часто реализация символьных вычислений на других стандартных языках вызывает необходимость создавать большое количество кода, сложного в понимании, в то время как реализация тех же алгоритмов на языке Пролог дает простую программу длинной несколько строк. Prolog является декларативным языком программирования: логика программы выражается в терминах отношений, представленных в виде фактов и правил. Для того, чтобы инициировать вычисления, выполняется специальный запрос к базе знаний, на которые система логического программирования генерирует ответы «истина» и «ложь». Для обобщённых запросов с переменными в качестве аргументов созданная система Пролог выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.
Язык пролог оперирует фактами, атомами и переменными. Атом записывается со строчной буквы или заключается в кавычки, когда требуется запись с прописной буквы. atom 'Atom' vasia Переменные записываются с прописной буквы X, Y,Z, A, B
Переменные могут быть свободными или связанными.
Свободная переменная - это переменная, которая еще не получила значения. Она не равняется ни нулю, ни пробелу; у нее вообще нет никакого значения. Такие переменные еще называют неконкретизированными.
Переменная, которая получила какое-то значение и оказалась связанной с определенным объектом, называется связанной. Если переменная была конкретизирована каким-то значением и ей сопоставлен некоторый объект, то эта переменная уже не может быть изменена.
Структуры представляют собой совокупности термов, заключенные в круглые скобки, в том числе и другие структуры. Структура обозначается именем (функтором), которое располагается перед круглыми скобками.
book('Название', '2009', 'Спб', authors('Первый автор', 'Второй автор')).
Еще одной конструкцией являются списки, элементы которых заключаются в квадратные скобки. В основе списков в Пролог лежат связные списки.
List = [a, b, [c, d], e].
Правила
Правила в Прологе записываются в форме правил логического вывода с логическими заключениями и списком логических условий. В чистом Прологе предложения ограничиваются Дизъюнктами Хорна
Вывод:- Условие.
и читаются как: Заголовок ИСТИНА, если Тело ИСТИНА. Тело правила содержит ссылки на предикаты, которые называются целями правила.
<предикат>:-<предикат>[,<предикат>]*. Предикаты, перечисленные через запятую в теле условия означают конъюнкцию предикатов. То есть, чтобы предикат в левой части принял значение ИСТИНА, то все предикаты справа должны принять истинное значение. Например: мальчик(том). ходитвшколу(том). мальчик(гек). мальчик(сид). ходитвшколу(сид). учится(сид). возраст(том,12). школьник(X):-мальчик(X), ходитвшколу(X), учится(X) школьник(X):-мальчик(X),возраст(X,Y),Y<15. ?- школьник(сид). true. ?- школьник(Y). Y = сид; Y = том; false.
Второй предикат в примере описывающий школьника проверяется как условие «или», хотя некой логики реальности в этом мало, так как не все мальчики младше 15 лет школьники, но для примера вполне подходит. Вначале указанно примера идет набор фактов. Факты в языке Пролог описываются логическими предикатами с конкретными значениями. Факты в базах знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщёнными сведениями. Предложения с пустым Телом называются Фактами. Факт представляет собой безусловно истинное утверждение. Пример факта:
Кот(Иван).
оно эквивалентно правилу:
Кот(Иван):- ИСТИНА.
Упрощенно система пролога работает следующим образом, при задании вопроса, сопоставляются факты, а также левые части правил, для того, чтобы проверить истинность или ложность далее проверяются предикаты в правой части. Для истинности выражения слева необходима истинность всех выражений справа, либо для истинности предиката необходима истинность хотя бы одного из правил, тем не менее, несмотря на истинность даже первого найденного правила, система продолжает проверять и другие правила. В этом случае может быть использовано отсечение!, которое всегда дает истинный результат, но при этом если выражение слева от отсечения дает истину, то перебор предикатов прекращается, а если дает ложь, то берутся и другие правила. Например,
Первый случай школьник(X):-мальчик(X), ходитвшколу(X),!, учится(X). школьник(X):-мальчик(X),возраст(X,Y),Y<15.
Второй случай школьник(X):-мальчик(X),учится(X),!, ходитвшколу(X) школьник(X):-мальчик(X),возраст(X,Y),Y<15.
В первом случае если выполнится условие мальчик(X),учится(X), ходитвшколу(X), то второе условие уже не сработает. Условие выполнится для Сида. Для Тома оно не выполнится, но так как не выполнится для Тома, то выполнится второе правило. Во втором случае условие сработает для тома мальчик(X),учится(X) как истина, но учится примет значение falsе и предикат школьник примет значении false, а так как второе правило уже не сработает то для тома false и останется результатом.
Проще можно представить отсечение как реализацию if then else … Предикат:-условие,!, предикат если условие выполнено Предикат:- предикат если условие не выполнено
Например, реализация выбора максимального числа из двух чисел max2(X,Y,X):- X>Y,!./* если первое число больше второго, то первое число - максимум */ max2(_,Y,Y). /* в противном случае максимумом будет второе число */ Знак нижнего подчеркивания обозначает анонимную переменную, например если спросить школьник(_), то просто будет указано true если есть школьники.
Известными оболочками и интерпретаторами пролога являются gnu-prolog, swi-prolog. Обычно для работы с этими интерпретаторами понадобится загружать правила и факты непосредственно из командной строки, используя?-assert() или из файла?-[имя файла].
Например Добавляем факт, tom является родителем ann ?- assert(parent(tom,ann)). true. Спрашиваем у системы является ли tom родителем ann ?- parent(tom,ann). true. Система уже зная данный предикат и факт, отвечает да. При вопросе является ли том родителем каса, система отвечает нет, так как данного факта нет в базе фактов. ?- parent(tom,cas). false.
Далее приведен пример сопоставления, для вывода нескольких результатов или фактов в базе, которые сопоставляются переменной можно нажать;.
?- parent(tom,X). X = ann.
?- parent(Y,X). Y = tom, X = ann.
Можно ввести некую простенькую программу, которая позволяет определять предков каких-то людей, для этого воспользуемся чуть более сложными правилами.
родитель(том, дон). родитель(дон,джен). предок(X,Y):-родитель(X,Y). предок(X,Y):-родитель(X,Z),предок(Z,Y).
Как видите, здесь присутствует рекурсия.
?- предок(X,Y). X = том, Y = дон; X = дон, Y = джен; X = том, Y = джен;
Попробуем создать простейшую экспертную систему. Любая экспертная система представляет собой базу знаний, машину вывода, интерфейс и механизм объяснений выводов. В данном случае рассмотрим экспертную систему, которая угадывает фрукты и сок который можно из них сделать по некоторым признакам.
цвет([красный, синий, желтый, зеленый, оранжевый, белый]). форма([круглый, продолговатый]). размер([большой, средний, маленький]). вкус([сладкий, кислый, кислосладкий, горький]). фрукт(апельсин, оранжевый, круглый, средний, кислосладкий). сок(апельсиновый, апельсин). вцвет(X):-цвет(Y),writeln('введите цвет '), writeln(Y), readln([X|_]). вформа(X):-форма(Y),write('введите форму '), writeln(Y),readln([X|_]). вразмер(X):-размер(Y),write('введите размер '), writeln(Y),readln([X|_]). ввкус(X):-вкус(Y),write('введите вкус '), writeln(Y), readln([X|_]). какойфрукт(B):-вцвет(X),вформа(Y), вразмер(Z), ввкус(A), фрукт(B, X,Y,Z,A), writeln('ваш фрукт'),writeln(B). какойсок(X):-сок(X,Y),какойфрукт(Y). Как видите, в базе знаний присутствует всего один фрукт, это апельсин. Кроме того, количество признаков для всех фруктов одинаково, интерфейс для ввода данных не очень удобен. Также система не содержит никаких объяснений. Например, при выводе она должна сказать, так как цвет оранжевый, форма круглая, размер средний и вкус кислосладкий, то это апельсин. Если бы присутствовали более длинные цепочки размышлений, то нужно было бы ознакомить с ними пользователя. Кроме того, могут быть применены и другие способы представления базы знаний и способы выводов. Задание на лабораторную работу. Создать простейшую экспертную систему на прологе, используя следующие предметные области по вариантам: 1) Куда вы можете добраться и за какое время, имея перед собой некое средство передвижения с заданными признаками. Например, автомобиль, передвигается – на колесах, четыре колеса, два колеса - велосипед. Самолет – имеет крылья или пропеллер. Самолет расстояние до 4000 км за 4 часа. Лыжи. Сноуборд и т.д. 2) Какую еду можно готовить, имея гриб с заданными признаками. 3) Куда можно пойти, если погода имеет определенные признаки. 4) Что нужно одеть, если погода имеет определенные признаки. 5) Степень вашего будущего опьянения, если вы видите перед собой напиток с определенными признаками. 6) Но что может пойти дерево с указанной формой листвы и цвета ствола. 7) Куда поехать если сезон года такой-то, сезон угадать по признакам. 8) К какому врачу обратиться, имея определенные признаки заболевания или повреждений. 9) Определить по внешним признакам животного, на каком материке вы могли оказаться. 10) Предложить свою предметную область.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|