About |
Projects |
Publications |
Contacts
Case Study 1: The IrkutskNIIHimmash project № 052013
Personal Knowledge Base Designer was used in the project of Irkutsk research and design institute of chemicaland petrochemical engineering (IrkutskNIIHimmash) № 052013 «Development of the domain-specific editor for rule-based knowledge base engineering in the case of problems of assesment of technical conditions and residual life».
In this project the PKBD functionality was expanded in terms of supporting the domain-specific editor mode, and a knowledge base for predicting the development of degradation processes in the petrochemical industry was developed. The conceptual models developed in collaboration with IrkutskNIIHimmash experts were used as a source of information. These models were subjected to meaningful analysis and transformation using PKBD. Fragments containing cause-and-effect and other dependencies sufficient for building knowledge base elements were extracted from the models. 26 conceptual models containing 256 concepts and 208 relationships were built and analyzed. As a result of the analysis, a knowledge base was developed. This knowledge base contains 18 templates for facts, 18 templates for rules, 4 initial facts and 30 specific rules describing the degradation processes of corrosion fatigue, corrosion cracking and hydrogen embrittlement. On the basis of the created rule-based model the code for the knowledge base in the CLIPS format is generated. The detail description of the application is presented in:
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.
The process of knowledge bases engineering based on the analysis of the conceptual models can be presented in the form of a diagram (Fig.1).
Fig.1 The diagram of knowledge base engineering based on the analysis of conceptual models using PKBD
Next, let’s consider the example of developing a fragment of the knowledge base according to this diagram by analyzing one conceptual model.
Step 1. As a result of the analysis of the conceptual model (Fig.2, the model is translated into English) the main concepts were identified: mechanical stress, metarial, technological environment, the object of the incident, event and mechanism. Each concept is characterized by a set of properties. Relationships are also defined between concepts. Extracted concepts are converted to fact templates with slots, and relationships are converted to rule templates.
Fig.2 The example of the analyzed model in the form of a UML class diagram (IBM Rational Rose)
Step 2. The resulting templates were edited using PKBD wizards (Fig.3). In this case, each template coresponds to the RVML scheme (Fig.4).
Fig.3 An example of the template editing wizard
Fig.4 RVML representation of the rule template
Step 3. Facts and rules were created on the basis of defined templates (Fig.5-6).
Fig.5 An example of the fact creation wizard
Fig.6 RVML rule representation
Step 4. Testing the knowledge base was carried out with the aid of a special wizard. This wizard uses the initial facts (Fig.7) and makes a logical inference with details for each step (Fig.8).
Fig.7 A GUI form of testing knowledge base: the initial facts preview
Fig.8 A knowledge base testing GUI form: the activated rules preview
Step 5. It is possible to create a prototype of the expert system (Fig.9-10) dased on the test results. PKBD is used as an interpreter for the ES created.
Fig.9 An expert system GUI form: entering initial facts
Fig.10 An expert sytem GUI form: activated rules preview
A fragment of CLIPS code obtained:
(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)
))
)
…
A fragment of CFM specifications:
[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