- •Відкритий міжнародний університет розвитку людини “україна” контрольна робота
- •Содержание
- •Общие указания по выполнению контрольной работы
- •1. Лабораторная работа №1 "Создание прототипа экспертной системы"
- •1.1. Основные теоретические сведения
- •1.1.1. Экспертные системы
- •1.1.2. Прототип экспертной системы
- •1.1.3. Решение задач в экспертной системе
- •1.1.4. Постановка задачи распознавания в экспертной системе (пример)
- •1.1.5. Алгоритм решения задачи распознавания в экспертной системе (пример)
- •1.2. Порядок выполнения работы
- •1.2.1. Расчетно-графическая часть
- •1.2.2. Лабораторная часть
- •1.3. Отчет о работе
- •1.3.1. Расчетно-графическая часть
- •1.3.2. Лабораторная часть
- •2. Лабораторная работа №2 "Модели представления знаний"
- •2.1. Основные теоретические сведения
- •2.1.1. Логические модели представления знаний
- •Основные понятия исчисления предикатов первого порядка
- •Логическая база знаний
- •Пример построения логической базы знаний
- •2.1.2. Семантические модели представления знаний
- •1.2.3. Фреймовые модели представления знаний
- •1.2.4. Продукционные модели представления знаний
- •Продукционная модель базы знаний "Транспортные средства":
- •2.2. Порядок выполнения работы
- •3.1.2. Выполнение „Prolog”- программы
- •3.1.3. Примеры „Prolog”-программ
- •Программа решения задачи эс ("Транспортные средства")
- •3.2. Порядок выполнения работы
3.1.2. Выполнение „Prolog”- программы
Как уже отмечалось выше, в основу „Prolog”- программы положен аппарат автоматического доказательства теорем в исчислении предикатов первого порядка, который состоит в следующем. Логическая база знаний содержит истинные утверждения (правила), которые называются аксиомами или гипотезами. На основе двух или нескольких исходных аксиом можно доказать теорему, т.е. вывести очередное утверждение-следствие путем использования конечного числа правил вывода. Этот процесс называют логическим выводом на знаниях.
Метод автоматического доказательства теорем с использованием правил вывода следствий из набора исходных аксиом получил название метода резолюций. Теорема, выведенная из двух или нескольких аксиом путем использования метода резолюций, называется резольвентой.
Основной операцией, выполняемой над данными в „Prolog”- программе, является операция сопоставления (линейная резолюция) утверждений. Задача „Prolog”- программы состоит в определении значений аргументов, входящих в состав целевого утверждения, который согласуется с одной из аксиом базы знаний. Это утверждение с точки зрения компилятора „Prolog”- программы является запросом, который необходимо ввести в диалоговое окно после сообщения Goal, либо записать как часть текста программы в разделе goal.
Простой запрос пользователя состоит из имени предиката, за которым в скобках указан список аргументов.
Сложенный запрос создается из нескольких простых запросов, соединенных между собой:
-
запятой "," что означает логическое "и" ("and") ( &);
-
точкой с запятой ";", что соответствует логическому "или" ("or") ( ).
3.1.3. Примеры „Prolog”-программ
Пример №1. Рассмотрим „Prolog”-программу построения базы знаний ЭС с использованием логической модели представления знаний (см. "Лабораторную работу №2").
Пусть предметной областью ЭС являются "Транспортные средства" с такими объектами (см. "Лабораторную работу №1"):
1. Самолет. 2. Вертолет. 3. Катер. 4. Танкер. 5. Грузовик. 6. Такси.
Указанные транспортные средства могут обладать следующими свойствами:
1. Иметь колеса. 2. Иметь винт. 3. Иметь крыло. 4. Возить грузы.
Связь между объектами и их свойствами представлена в табл. 3.1:
Табл. 3.1. Связь базы данных с базой знаний
-
1
2
3
4
Колеса
Винт
Крыло
Грузы
1
Самолет
+
+
+
+
2
Вертолет
+
+
-
+
3
Катер
-
+
-
-
4
Танкер
-
+
-
+
5
Грузовик
+
-
-
+
6
Такси
+
-
-
-
где: "+" – объект имеет соответствующее свойство;
"-" – объект не имеет указанного свойства.
„Prolog”- программа логической базы знаний ЭС имеет вид:
domains % Типы данных:
sml, vrt, ktr, tnk, grz, tks = symbol
kls, vnt, krl, vgr = symbol
x, y = symbol
predicates % Предикаты:
P(x, y), Q(x), R(y)
clauses % Правила (фразы Хорна):
not P(sml, kls); not P(sml, vnt); not P(sml, krl); not P(sml, vgr); Q(sml).
not P(vrt, kls); not P(vrt, vnt); not P(vrt, vgr); Q(vrt).
not P(ktr, vnt); not P(ktr, vgr); Q(ktr).
not P(tnk, vnt); not P(tnk, vgr); Q(tnk).
not P(grz, kls); not P(grz, vgr); Q(grz).
not P(tks, kls); Q(tks).
not P(sml, kls); not P(vrt, kls); not P(grz, kls); not P(tks, kls); R (kls ).
not P(sml, vnt); not P(vrt, vnt); not P(ktr, vnt); not P(tnk, vnt); R (vnt ).
not P(sml, krl); R (krl ).
not P(sml, vgr); not P(vrt, vgr); not P(ktr, vgr);not P(tnk, vgr)); not P(grz, vgr); R (vgr ).
Пример №2. Рассмотрим „Prolog”-программу построения базы знаний ЭС с использованием семантической модели представления знаний (см."Лабораторную работу №2"):
domains % Типы данных:
объект = symbol
объекты = string
свойства = string
транспорт_средства = symbol
самолет, вертолет, катер, танкер, грузовик, такси = string
колеса, винт, крыло, грузы = string
predicates % Предикаты:
имеет_частью (объекты, объект )
имеет_свойство (свойства, объект)
clauses % Правила:
имеет частью (самолет, вертолет, катер, танкер, грузовик, такси, транспорт_средства)
% Связь базы данных с базой знаний
имеет_свойство ("колеса", "винт", "крыло", "грузы ", "Самолет")
имеет_свойство ("колеса", "винт", " ", "грузы ", "Вертолет")
имеет_свойство (" ", "винт", " ", "грузы ", "Катер")
имеет_свойство (" ", "винт", " ", "грузы ", "Танкер")
имеет_свойство ("колеса", " ", " ", "грузы ", "Грузовик")
имеет_свойство ("колеса", " ", " ", " ", "Такси")
Пример №3. Рассмотрим „Prolog”-программу построения базы знаний ЭС с использованием фреймовой модели представления знаний (см."Лабораторную работу №2"):
domains % Типы данных:
Фрейм, имя_фрейма, имя_слота, транспорт_средства = symbol
фреймы = string
значения_слота = string
самолет, вертолет, катер, танкер, грузовик, такси = string
колеса, винт, крыло, грузы = string
predicates % Предикаты:
структура (фреймы, Фрейм)
фрейм (имя_фрейма, имя_слота, значения_слота)
clauses % Правила:
структура (самолет, вертолет, катер, танкер, грузовик, такси, транспорт_средства)
% Связь базы данных с базой знаний
фрейм ("Самолет", имеет, "колеса", "винт", "крыло", "грузы ")
фрейм ("Вертолет", имеет, "колеса", "винт", " ", "грузы ")
фрейм ("Катер", имеет, " ", "винт", " ", "грузы ")
фрейм ("Танкер", имеет, " ", "винт", " ", "грузы ")
фрейм ("Грузовик", имеет, "колеса", " ", " ", "грузы ")
фрейм ("Такси", имеет, "колеса", " ", " ", " ")
Пример №4. Рассмотрим „Prolog”-программу построения базы знаний ЭС с использованием продукционной модели представления знаний (см."Лабораторную работу №2").
domains % Типы данных:
sml, vrt, ktr, tnk, grz, tks = symbol
kls, vnt, krl, vgr = symbol
x, y = symbol
predicates % Предикаты:
P(x, y), Q(x), R(y)
clauses % Правила:
Q (sml) :- P(sml, kls), P(sml, vnt), P(sml, krl), P(sml, vgr).
Q (vrt). :- P(vrt, kls), P(vrt, vnt), not P(vrt, krl), P(vrt, vgr).
Q (ktr) :- P(ktr, kls), P(ktr, vnt), not P(ktr, krl), P(ktr, vgr).
Q (tnk) :- not P(tnk, kls), P(tnk, vnt), not P(tnk, krl), P(tnk, vgr).
Q (grz) :- P(grz, kls), not P(grz, vnt), not P(grz, krl), P(grz, vgr).
Q (tks) :- P(tks, kls), not P(tks, vnt), not P(tks, krl), not P(tks, vgr).
R (kls ) :- P(sml, kls), P(vrt, kls), not P(ktr, kls), not P(tnk, kls), P(grz, kls), P(tks, kls).
R (vnt ) :- P(sml, vnt), P(vrt, vnt), P(ktr, vnt), P(tnk, vnt), not P(grz, vnt), not P(tks, vnt).
R (krl ) :- P(sml, krl), not P(vrt, krl), not P(ktr, krl), not P(tnk, krl), not P(grz, krl), not P(tks, krl).
R (vgr ) :- P(sml, vgr); P(vrt, vgr), P(ktr, vgr), P(tnk, vgr); P(grz, vgr), not P(tks, vgr).
Пример №5. Рассмотрим пример „Prolog”-программы решения задачи ЭС (см. "Лабораторную работу №1") в среде программирования "Turbo-Prolog" версии 2.0. Запрос пользователя ЭС состоит в определении названия объекта с такими свойствами:
-
имеет колеса;
-
не имеет винта;
-
не имеет крыльев;
-
возит грузы.
ЭС будет задавать вопросы, на которые должен отвечать пользователь. Вопросы формируются в порядке следования свойств в базе знаний:
1) "Объект имеет колеса?" "Да".
2) "Объект имеет винт?" "Нет".
3) "Объект имеет крыло?" "Нет".
4) "Объект возит грузы?" "Да".