О нас |
Наши проекты |
Публикации |
Контакты
Договор с АО «ИркутскНИИхиммаш» № 052013 НИР
Personal Knowledge Base Designer использовался при выполнении работ по договору с АО «ИркутскНИИхиммаш» № 052013 НИР «Разработка проблемно-ориентированного редактора продукционных БЗ для задач оценки технического состояния и остаточного ресурса».
В ходе выполенния проекта была расширена функциональность PKBD в части поддержки режима функционирования в форме проблемно-ориентированного редактора, а также разработана база знаний для прогнозирования развития деградационных процессов в нефтехимии. В качестве источника информации использовались предметные концептуальные модели, разработанные в сотрудничестве с экспертами АО «ИркутскНИИхиммаш».
Данные модели были подвергнуты содержательному анализу и трансформации с использованием PKBD. Из моделей выделялись фрагменты, содержащие причино-следственные и иные зависимости, достаточные для построения элементов базы знаний. В общей сложности было построено и проанализировано 26 conceptual models containing 256 concepts and 208 relationships. В результате анализа была разработана база знаний содержащая: 18 шаблонов фактов, 18 шаблонов правил, 4 начальных (initial) факта и 30 конкретных правил описывающих деградационные процессы коррозионной усталости, коррозионного растрескивания и водородного охрупчивания. На основе созданной продукционной модели сгенерирован код БЗ в формате CLIPS. Детальное описание применения приведено в работе:
Yurin A.Yu., Dorodnykh N.O., Nikolaychuk O.A., Grishenko M.A. Prototyping Rule-Based Expert Systems with the Aid of Model Transformations // Journal of Computer Science, 2018, 14 (5): 680-698.
Процесс разработки баз знаний на основе анализа рассмотренных концептуальных моделей может быть представлен в виде схемы (Рис.1).
Рис.1 Схема разработки баз знаний на основе анализа концептуальных моделей с использованием PKBD
Далее рассмотрим пример разработки фрагмента базы знаний согласно данной схеме на примере анализа одной концептуальной модели.
Этап 1. В результате анализа концептуальной модели (Рис.2, модель переведена на английский) были выделены основные сущности: механические нагрузки, метариал, технологическая среда, объект инцидента, наблюдаемое событие и наблюдаемый механизм. Каждая сущность характеризуется набором свойств. Между сущностями также определены отношения. Выделенные сущности преобразованы в шаблоны-фактов со слотами, а отношения – в шаблоны правил.
Рис.2 Пример анализируемой модели в форме UML диаграмм классов (IBM Rational Rose)
Этап 2. Полученные шаблоны были отредактированы с использованием мастеров PKBD (Рис.3). При этом каждому шаблону соотвествует RVML схема (Рис.4), обеспечивающая визуализацию представления.
Рис.3 Пример мастера редактирования описания шаблона
Рис.4 RVML представление шаблона правила
Этап 3. На основе уточненных шаблонов созданы факты и правила-экземпляры (Рис.5-6).
Рис.5 Пример мастера ввода факта
Рис.6 RVML представление правила
Этап 4. Тестирование базы знаний осуществлялось с помощью специального мастера, который на основе начальных фактов (Рис.7) обеспечивает построение цепочки рассуждений с детализацией каждого шага (Рис.8).
Рис.7 Форма тестирования базы знаний: просмотр начальных фактов
Рис.8 Форма тестирования базы знаний: просмотр активированных правил
Этап 5. По результатам тестирования возможно создание прототипа экспертной системы (Рис.9-10). При этом PKBD используется в качестве интерпретатора.
Рис.9 ЭС: ввод начальных фактов
Рис.10 ЭС: просмотр активированных правил
Также был получен CLIPS код (фрагмент):
(deftemplate exist-meh ;наблюдаемая механизм
(slot caption-meh (default "CORROSION FATIGUE")) ;наименование
(slot meh-cf (default 1)) ;коэффициент уверенности
)
(deftemplate exist-kin ;наблюдаемая кинетика отказа
(slot caption (default "KINETICS 'CORROSION FATIGUE'")) ;наименование
(slot caption-meh (default "CORROSION FATIGUE")) ;ссылка на механизм
(slot cf (default 1)) ;выявления событий -
)
;************************ Facts *******************************
(deffacts initial-settings
(mechanical-stress-const ;mechanical-stress-const
(stress-value 0)
(cycle-frequency "HIGH")
(cf 1)
)
(technological-environment ;technological-environment
(ph "ACTIVE")
(properties-alternation "YES")
(cf 1)
)
(incident-object ;incident-object
(cf "1")
(caption "PIPE INTO PIPE")
)
(material ;material
(cf "1")
(type "STEEL")
(chemical-prop-alloying "LOW-ALLOY STEEL")
)
)
;************************* Rules ******************************
(defrule fai-mechanism-ky-1001 "правило выявления /механизма/: если имеются механические нагрузки высокой частоты и активная технологическая среда с чередующимися свойствами и материал низколегированная сталь и имеются дефекты изготовления то может возникнуть механизм коррозионная усталость"
(mechanical-stress-const ;механические нагрузки
(cycle-frequency "HIGH") ;-----------
)
(technological-environment ;технологическая среда
(ph "ACTIVE") ;водородный показатель
(properties-alternation "YES") ;чередование свойств среды /да/нет/
)
(material ;материал
(type "STEEL") ;вид
(chemical-prop-alloying "LOW-ALLOY STEEL") ;легированность
)
(making-defects ;дефекты изготовления
(caption-technological-heredity ?id-th-m1) ;ссылка на технологическую наследственность
)
=>
(assert
(exist-event ;exist-event
(caption "MECHANISM 'CORROSION FATIGUE'") ;может возникнуть /механизм/
(cf "0,9") ;ку
))
(assert
(exist-meh ;exist-meh
(caption-meh "CORROSION FATIGUE") ;может возникнуть /механизм/
(meh-cf "0,9") ;ку
))
)
(defrule fai-kinatics-ky-1001 "правило выявления /кинетики/: если наблюдается механизм коррозионная усталость то может возникнуть кинетика коррозионная усталость"
(exist-event ;exist-event
(caption "MECHANISM 'CORROSION FATIGUE'") ;наблюдается /механизм/
(cf ?x)
)
=>
(assert
(exist-kin ;exist-kin
(caption "KINETICS 'CORROSION FATIGUE'") ;может возникнуть /кинетика/
(caption-meh "CORROSION FATIGUE")
(cf ?x)
))
)
(defrule fai-kinatic-events-ky-1001 "правило выявления /параметры/события кинетики/: если наблюдается кинетика коррозионная усталость то могут наблюдаться события: утечка рабочей среды через сквозные трещины и полный выброс рабочей среды"
(exist-kin ;exist-kin
(caption "KINETICS 'CORROSION FATIGUE'") ;наблюдается /кинетика/
(cf ?x)
)
=>
(assert
(exist-event ;exist-event
(caption "LEAKAGE OF THE WORKING ENVIRONMENT THROUGH THE THROUGH CRACKS") ;может возникнуть /событие/
(probabilityrel "1")
(caption-kin "KINETICS 'CORROSION FATIGUE'")
(cf ?x)
))
(assert
(exist-event ;exist-event
(caption "COMPLETE RESET OF THE WORKING ENVIRONMENT") ;может возникнуть /событие/
(probabilityrel "1")
(caption-kin "KINETICS 'CORROSION FATIGUE'")
(cf ?x)
))
)
…
CFM спецификации (фрагмент):
[Metadata]
;exist-dam
tempale_name=exist-dam
edited_by_user=Yes
[Fields]
id-dam=val0:1
caption-dam=val1:1
dam-type=val2:1
dam-stress-type=val3:1
dam-mesto-zarozdenia=val4:1
dam-istochnik=val5:1
dam-mestopolozenie=String
dam-orientacia=String
dam-glubina=String
dam-dlina=String
dam-diametr=String
dam-forma=String
dam-kolichestvo=String
dam-velichina-raskritia=String
dam-tech-pered-razrusheniem=String
dam-napravlenie=String
caption-def=String
id-def=String
caption-meh=String
dam-cf=val6:1
[Captions]
id-dam=id-dam
caption-dam=caption-dam
dam-type=dam-type
dam-stress-type=dam-stress-type
dam-mesto-zarozdenia=dam-mesto-zarozdenia
dam-istochnik=dam-istochnik
dam-mestopolozenie=dam-mestopolozenie
dam-orientacia=dam-orientacia
dam-glubina=dam-glubina
dam-dlina=dam-dlina
dam-diametr=dam-diametr
dam-forma=dam-forma
dam-kolichestvo=dam-kolichestvo
dam-velichina-raskritia=dam-velichina-raskritia
dam-tech-pered-razrusheniem=dam-tech-pered-razrusheniem
dam-napravlenie=dam-napravlenie
caption-def=caption-def
id-def=id-def
caption-meh=caption-meh
dam-cf=dam-cf
[Values]
val0:1=crack
val1:1=perpendicularly;constructive_stress_concentrator_formed_by_the_intersection_of_holes;surface_damage;hole;crack
val2:1=longitudinal;perpendicularly
val3:1=corrosion_fatigue;longitudinal;single
val4:1=semi-elliptic;single;corrosion_fatigue
val5:1=corrosion_fatigue
val6:1=1