|
Тема: "Инструментальная система для создания продукционных экспертных систем с четкой логикой в среде Delphi 7" Аннотация. Разрабатывается инструментальная система создания экспертных систем, использующих продукционную модель знаний. Среда является одновременно средой исполнения экспертной системы. Особенностью проекта является подключение современного языка программирования высокого уровня в объектно-ориентированной технологии, что существенно расширяет возможности работы с базами знаний. По отношению к статическим экспертным системам вводятся элементы динамических экспертных систем. Содержание.
2.1.
Описание команд. 2.2.
Реализация команд. 3.
Логический проект системы RulProc
(диаграмма вариантов использования). 4.
Математическая модель построения
единого понятийного аппарата для
описания правил группы экспертов. 1
Обзор системы RulProc Система
RulProc –
процессор работы с правилами для
создание экспертных систем
продукционного типа, реализованная в
среде визуального программирования Delphi 7.0 . Система RulProc была разработана в Самарском
Государственном Аэрокосмическом и
Самарском Государственном
Архитектурно-Строительном
Университетах. Система
RulProc
предназначена для создания и отладки
наборов правил (баз знаний) экспертных
систем продукционного типа. Система
имеет свой язык описания знаний в
предметной области и широкий набор
средств для организации и контроля
процесса логического вывода. Для
описания правила необходимо указать
его имя, условие посылки (часть IF)
и перечень действий, если значение
посылки истинно (часть THEN)
или ложно (часть ELSE).
При этом нужно учесть, что у некоторых
правил может не быть части ELSE.
Для реализаций стратегий логического
вывода необходимо предусмотреть
наличие приоритетов правил. В
определенных случаях может возникнуть
необходимость того, чтобы
актуализировались все (соответствующие
значению посылки) заключения правила. В
общем случае это может быть невозможно
из-за того, что переменные, входящие в
правые части заключений, еще не были
проинициализированы. Чтобы этого не
происходило, у каждого правила
необходимо предусмотреть возможность
указания списка переменных,
определенность значений которых
является необходимым условием для
актуализации правила. Принимая во
внимание особое самостоятельное
значение каждого правила, нужно
предусмотреть возможность
специального комментария для каждого
правила. Система
RulProc
поддерживала два способа
рассмотрения набора правил (логического
вывода): прямая цепочка рассуждений,
использующая весь набор правил (To Test); обратная цепочка рассуждений,
использующая весь набор правил (To
Seek).
Были разработаны два дополнительных
метода работы с правилами: включение
одного правила (To
Fire);
рассмотрение определенного набора
правил (To Execute). Эти функции не являются
стандартными и отличают систему RulProc
от имеющихся аналогов. В
дальнейшем планируется расширить
данный процессор правил до полноценной
инструментальной системы создания
экспертных систем продукционного типа,
который будет реализован в среде
визуального программирования Delphi
7.0. Аналогом является система Guru
1.0. Система будет использоваться в
учебном процессе в курсе дисциплин по
основам экспертных систем. 2 Команды консультации To Fire и
To
Execute 2.1
Описание команд В
существующем процессоре обработки
правил было необходимо добавить два
вида консультации: включение одного
правила (To
Fire)
и работу с определенным набором правил
(To Execute). Описание
команды консультации To Fire:
Используя этот вариант команды,
процессор правил разрешает условие в
специфицированном правиле. Сначала
процессор выполняет команды
инициализации набора правил, при
условии, что отсутствует запрос на
продолжение процесса аргументации с
помощью специфицированного правила.
Правило рассматривается относительно
всего набора переменных. При
необходимости, пытаясь включить
правило, процессор может использовать
обратную аргументацию. Затем, чтобы
завершить консультацию, выполняются
команды завершения набора правил. Описание команды консультации To Execute: Используя эту команду, процессор обработки правил начинает выполнять предписанную последовательность правил. Прежде всего выполняются команды инициализации набора правил. Затем процессор правил рассматривает каждое правило относительно всего набора переменных в порядке, который определен. Затем, чтобы завершить консультацию, выполняются команды завершения набора правил. 2.2 Реализация
команд Система
и соответствующие команды были
реализованы в среде визуального
программирования Delphi
7.0. Команда
консультации To Fire
(включение одного правила).
Рис.2.2.1
- Форма команды консультации «включения
одного правила» Правило
может тестироваться, используя прямую
или обратную цепочку рассуждений. Все
переменные, входящие в набор правил
могут быть просмотрены относительно
выбранного правила, т.е. можно
определить, как влияет правило на
переменную: значение переменной можно
определить, запустив правило или
нельзя. Сведения о каждой
протестированной переменной
записываются в поле на форме. Например,
для тестирования выбрали правило №1: RULE
R1 :
IF ( УплотненностьПочвы = 'Уплотнена'
) OR ( ПокрытостьПочвыКоркой = 'Есть корка'
)
THEN ТвердостьПочвы := 'Твердая'
ELSE ТвердостьПочвы := 'Нетвердая'
COMMENT если почва уплотнена или
покрыта коркой, то она твердая;
ENDRULE; Список
переменных правил: VARIABLES
УплотненностьПочвы : STRING FROM ['Уплотнена',
'Не уплотнена'] ASK 'Почва уплотнена ?';
ПокрытостьПочвыКоркой : STRING FROM ['Есть
корка', 'Нет корки'] ASK 'Есть ли на почве
корка?';
ТвердостьПочвы : STRING FROM ['Твердая', 'Нетвердая'];
БудетМногоДождей : BOOLEAN ASK 'Прогноз
обещает много дождей?';
НужноСмягчитьПочву : STRING FROM ['Нужно
смягчить', 'Смягчать не нужно'];
КорнейНаАкре : REAL ASK 'Сколько корней
высажено на акре?';
ОбработатьРотационнойМотыгой : STRING
FROM ['Обработать', 'Не обрабатывать'];
ЕстьСемена : BOOLEAN ASK 'Поле засеяно
семенами?';
ПересеиватьПоле : STRING FROM ['Не
пересеивать', 'Частично пересеить', 'Пересеить
все поле'];
ОбщееСостояниеРастений : STRING FROM ['Стебли
ослаблены', 'Стебли хорошие'] ASK 'Наблюдается
общее утоньшение стеблей?'; Если
в описании переменной присутствует
слово «ASK»,
то значение переменной не зависит от
правила, а запрашивается у
пользователя. После
запуска каждой переменной получили
следующие результаты: Переменная:
УплотненностьПочвы;
Значение: 'Уплотнена' CF(100) Переменная:
ПокрытостьПочвыКоркой;
Значение: 'Есть корка' CF(100) Переменная:
ТвердостьПочвы;
Значение: 'Твердая' CF(100) Переменная:
БудетМногоДождей
; Значение: 'true' CF(100) Переменная:
НужноСмягчитьПочву
; Значение: Значение не
определено Переменная:
КорнейНаАкре
; Значение: 12000 CF(100) Переменная:
ОбработатьРотационнойМотыгой
; Значение: Значение не
определено Переменная:
ЕстьСемена
; Значение: 'true' CF(100) Переменная:
ПересеиватьПоле
; Значение: Значение не
определено Переменная:
ОбщееСостояниеРастений
; Значение: 'Стебли
ослаблены' CF(100) Команда
консультации To
Execute
(выполнение определенного набора
правил).
Рис.2.2.2
- Форма команды консультации «выполнения
определенного набора правил» Пользователь
выбирает правила, которые он хочет
протестировать относительно всего
набора переменных. Правила запускаются
по очереди в порядке их записи.
Выбранная переменная рассматривается
в каждом правиле по очереди. Данный вид
консультирования позволяет проследить
значения переменных в выбранном
подмножестве правил. Например,
для тестирования взяли следующее
подмножество правил: №2, №3, №5: RULE
R2 :
IF ( ТвердостьПочвы = 'Твердая' ) AND (
БудетМногоДождей = FALSE )
THEN НужноСмягчитьПочву := 'Нужно
смягчить'
ELSE НужноСмягчитьПочву :=
'Смягчать не нужно'
COMMENT если почва нетвердая или будет
много дождей, то ее можно не смягчать;
ENDRULE;
RULE R3 :
IF ( НужноСмягчитьПочву = 'Нужно
смягчить' ) AND ( КорнейНаАкре <= 12000 )
THEN ОбработатьРотационнойМотыгой :=
'Обработать'
ELSE ОбработатьРотационнойМотыгой :=
'Не обрабатывать'
COMMENT если не нужно смягчить почву
или количество корней на акре > 12000, то
не обрабатывать поле ротационной
мотыгой;
ENDRULE; RULE
R5 :
IF ( ЕстьСемена = FALSE ) AND ( (ОбщееСостояниеРастений
= 'Стебли ослаблены' ) OR (КорнейНаАкре
<=12000 ) )
THEN ПересеиватьПоле := 'Пересеить все
поле'
COMMENT если поле не засеяно семенами и
количество корней на акре < 12000, или
наблюдается общее утоньшение растений,
то пересеить поле;
ENDRULE; Список
переменных правил: VARIABLES
УплотненностьПочвы : STRING FROM ['Уплотнена',
'Не уплотнена'] ASK 'Почва уплотнена ?';
ПокрытостьПочвыКоркой : STRING FROM ['Есть
корка', 'Нет корки'] ASK 'Есть ли на почве
корка?';
ТвердостьПочвы : STRING FROM ['Твердая', 'Нетвердая'];
БудетМногоДождей : BOOLEAN ASK 'Прогноз
обещает много дождей?';
НужноСмягчитьПочву : STRING FROM ['Нужно
смягчить', 'Смягчать не нужно'];
КорнейНаАкре : REAL ASK 'Сколько корней
высажено на акре?';
ОбработатьРотационнойМотыгой : STRING
FROM ['Обработать', 'Не обрабатывать'];
ЕстьСемена : BOOLEAN ASK 'Поле засеяно
семенами?';
ПересеиватьПоле : STRING FROM ['Не
пересеивать', 'Частично пересеить', 'Пересеить
все поле'];
ОбщееСостояниеРастений : STRING FROM ['Стебли
ослаблены', 'Стебли хорошие'] ASK 'Наблюдается
общее утоньшение стеблей?'; Если
в описании переменной присутствует
слово «ASK»,
то значение переменной не зависит от
правила, а запрашивается у
пользователя. После
запуска каждой переменной получили
следующие результаты: Переменная:
УплотненностьПочвы;
Значение: 'Уплотнена' CF(100) Переменная:
ПокрытостьПочвыКоркой;
Значение: 'Есть корка' CF(100) Переменная:
ТвердостьПочвы;
Значение: Значение не
определено Переменная:
БудетМногоДождей
; Значение: 'true' CF(100) Переменная:
НужноСмягчитьПочву
; Значение: 'Смягчать не
нужно' CF(100) Переменная:
КорнейНаАкре
; Значение: 12000 CF(100) Переменная:
ОбработатьРотационнойМотыгой
; Значение: 'Не
обрабатывать' CF(100) Переменная:
ЕстьСемена
; Значение: 'true' CF(100) Переменная:
ПересеиватьПоле
; Значение: Значение не
определено Переменная:
ОбщееСостояниеРастений
; Значение: 'Стебли
ослаблены' CF(100) 3
Логический проект системы RulProc
Диаграмма
вариантов использования Реализован логический проект системы RulProc в нотации UML, с использованием программного продукта Rational Rose 2003. Выполнены следующие диаграммы: диаграмма вариантов использования, диаграмма классов, диаграмма состояний, диаграммы активности для методов консультации (метода прямой цепочки рассуждений, метода обратной цепочки рассуждений, метода включения одного правила и метода тестирования определенной последовательности правил), диаграммы последовательности и коопераций для методов консультации, диаграммы компонентов и развертывания. Рис.3.1
- Диаграмма вариантов использования
системы RulProc
Выделенные овалы на диаграмме – методы консультации «Включение одного правила» и «Выполнение определенного набора правил», разработка, реализация и тестирование которых были выполнены в течение 9 семестра. Диаграмма
развертывания
4
Математическая модель построения
единого понятийного аппарата для
описания правил группы экспертов Рассмотрим
группу экспертов, состоящую из 3
человек. Каждый эксперт имеет свой
понятийный аппарат: 1 эксперт: X=(x1,x2,x3,…),
2 эксперт: Y=(y1,y2,y3,…), 3 эксперт: Z=(z1,z2,z3,…),
где x1,x2,x3,…,y1,y2,y3,…,z1,z2,z3,…
- понятия для описания правил
определенного эксперта. Для
получения единого понятийного
аппарата сначала необходимо выделить
наиболее достоверные понятия, которые
используют все эксперты: М=XÇYÇZ. M=(м1,м2,м3,...) - набор «общих» понятий. Понятия,
которые не вошли в множество М:
X-M, Y-M, Z-M. Введем множество L=(l1,l2,l3,...) - множество различных понятий, оставшихся во множествах X-M, Y-M, Z-M. Подсчитаем количество одинаковых понятий во множествах X-M, Y-M, Z-M, отсортируем понятия в множестве L по частоте использования экспертами и построим график. По оси x отложим значения множества L, по оси y - количество экспертов, использовавших это понятие:
Возьмем для построения единого понятийного аппарата, например, первую третью часть понятий от множества L - наиболее часто используемые понятия, не включенные в множество М. Таким образом, полученный понятийный аппарат будет состоять из: Р=M+⅓ L, где P - полученный понятийный аппарат, M - набор общих понятий, ⅓L – третья часть наиболее часто используемых понятий от множества, не включенные в множество М. Таким
образом, рассмотрен вариант нахождения
общего понятийного аппарата для трех
экспертов. Можно обобщить полученную
модель для n
экспертов. Список
используемых источников 1.
Рамбо
Д., Якобсон А., Буч Г. UML.специальный
справочник. – СПб: Питер, 2002 - 652 с. 2.
Хассан Гома. UML.Проектирование систем реального
времени, распределенных и параллельных
приложений. М: ДМК, 2002 - 698 с. 3.
Гофман В., Хомоненко А. Delphi
6. Наиболее полное руководство в
подлиннике. СПб: БХВ-Петербург, 2001 - 1152 с. 4.
Котов С.Л.. Нормирование
жизненного цикла программной
продукции. М.: Юнити, 2002 - 143 с. 5.
Трофимов С.А.. CASE-технологии. Практическая работа
в Rational
Rose.
М.: Издательство БИНОМ, 2001 - 155 с. 6.
Фаулер М., Скотт К. UML. Основы. Второе издание. СПб:
Символ-Плюс, 2002 - 192 с. 7.
ГОСТ 2.102-68 (СТ СЭВ 4768-84) ЕСКД. Виды
и комплексность конструкторских
документов. – М.: Издательство
стандартов, 1968. 8.
ГОСТ
19.101-77 (СТ СЭВ 1626-79) ЕСПД. Виды программ и
программных документов. – М.:
Издательство стандартов, 1977. 9.
ГОСТ 19.301-79 (СТ СЭВ 3747-82) ЕСПД.
Программа и методика испытаний.
Требования к содержанию и оформлению.
– М.: Издательство стандартов, 1979. 10.
ГОСТ 34.201-89 ЕСПД. Виды,
комплектность и обозначение
документов при создании
автоматизированных систем. – М.:
Издательство стандартов, 1989. 11.
ГОСТ
34.601-90 ЕСПД. Автоматизированные системы.
Стадии создания. – М.: Издательство
стандартов, 1990. 12.
ГОСТ 34.603-92 ЕСПД. Виды испытаний
автоматизированных систем. – М.:
Издательство стандартов, 1992. Публикации
в Интернет. 13.
Экспертные системы. http://khpi-iip.mipk.kharkiv.edu/library/ai/conspai/07.html. 14.
д.т.н., д.э.н. А. Киселенко.
Введение в экспертные системы (обзор).
(http://ib.komisc.ru/t/ru/ir/vt/00-33/02.html). 15.
Г.В. Рыбина, В.В. Максимкин,
Е.В, Карманов, Р.Н. Фролов.
Сравнительный
анализ функциональных возможностей
инструментальных средств ЭКО, GURU (Интер-Эксперт),
LEVELS OBJECT. (http://nit7.artdesign.ru/sections/b/54.html). 16.
Гаврилов
А. В., Новицкая
Ю.В. Разработка экспертных систем.
(http://ermak.cs.nstu.ru/site/students/ai1/chapter1.htm).
|