Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
BY
VADIM V. BULITKO
Dipl., Odessa State University, 1995
THESIS
Submitted in partial fulllment of the requirements
for the degree of Master of Science in Computer Science
in the Graduate College of the
University of Illinois at Urbana-Champaign, 1998
Urbana, Illinois
MINERVA-5: A MULTIFUNCTIONAL DYNAMIC EXPERT SYSTEM
Vadim V. Bulitko
Department of Computer Science
University of Illinois at Urbana-Champaign, 1998
David C. Wilkins, Advisor
This thesis describes a research project on building a versatile expert system shell
and its applications. The system presented, Minerva-5, is an attempt to use blackboard
architectures for dynamic control, advising, and critiquing.
The concepts of blackboard and deliberate-schedule-execute cycle operation are well-
known and have been exploited in dierent areas ([18], [11], [20]). Our work extends this
approach by rening the scheduling stage into qualitative prediction and state evalua-
tion substages. This renement turns out to improve all Minerva-5 functions (control,
advising, and critiquing).
In order to support the extended framework, we found it ecient and convenient to
employ various AI paradigms (such as rule-based reasoning, Petri Nets, articial neural
networks) as knowledge sources of an integrating blackboard architecture. Such a setup
naturally provides for multiple levels of abstraction and opportunistic reasoning ([21])
and thus eciently addresses dierent reasoning subtasks (such as classication, predic-
tive simulation, and scheduling). It also facilitates low-cost explanatory and critiquing
facilities which normally come at a high expense.
As a mathematical analysis shows, Minerva-5 deliberation process is computationally
feasible while Minerva is a universal computational device (i.e. equivalent to the Turing
Machine).
The framework has been tested in the domain of Damage Control on the Navy battle-
ships and achieved an expert-level performance in the DCTrain simulated environment
([28]).
iii
To My Parents
iv
Acknowledgements
First of all I would like to give great thanks to my advisor, Dr. David C. Wilkins, for
his continuous and versatile support that made this project possible. KBS members and
especially Surya Ramachandran and Ole Mengshoel have provided me with numerous
valuable ideas and suggestions. Arthur Menaker, Tamar Shinar, Adam Boyko, Sebastian
Magda, and Scott Borton have done a wonderful programming job. Finally my deepest
debt is to my parents who not only supported me morally but also provided me with a
lot of interesting scientic ideas.
The research has been supported in part by ONR Grant N00014-95-1-0749, ARL
Grant DAAL01-96-2-0003, NRL Grant N00014-97-C-2061, and the International Soros
Educational Program (ISSEP) through Grant GSU051239.
v
Preface
vi
Table of Contents
Chapter
1 Introduction : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1
2 The Tasks of Dynamic Problem-Solving, Advising, and Critiquing : : 2
2.1 Static Diagnosis Domains : : : : : : : : : : : : : : : : : : : : : : : : : : 2
2.1.1 Tasks: Diagnosis : : : : : : : : : : : : : : : : : : : : : : : : : : : 2
2.1.2 Challenges : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 4
2.2 Dynamic Domains : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 5
2.2.1 Tasks: Problem-Solving/Control : : : : : : : : : : : : : : : : : : : 5
2.2.2 Challenges : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 6
2.2.3 Tasks: Advising and Critiquing : : : : : : : : : : : : : : : : : : : 7
2.2.4 Challenges : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 9
3 Proposed Approach : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 11
3.1 Introduction : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 11
3.1.1 Objectives : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 11
3.1.2 Philosophy of the Approach : : : : : : : : : : : : : : : : : : : : : 12
3.1.3 Blackboard as an Integrating Framework : : : : : : : : : : : : : : 13
3.2 Overall Design : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 14
3.2.1 Deliberation Module: Domain Knowledge Sources : : : : : : : : : 14
3.2.2 Deliberation Module: Strategy Knowledge Sources : : : : : : : : : 18
3.2.3 Scheduling Module: Design Ideas : : : : : : : : : : : : : : : : : : 21
3.2.4 Scheduling Module: Predictor : : : : : : : : : : : : : : : : : : : : 21
3.2.5 Scheduling Module: Evaluator : : : : : : : : : : : : : : : : : : : : 23
3.2.6 Scheduling Module: Computing Utilities : : : : : : : : : : : : : : 24
3.3 Operation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 24
3.3.1 Main Loop : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 24
3.3.2 Problem-Solving : : : : : : : : : : : : : : : : : : : : : : : : : : : 27
3.3.3 Advising : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 27
3.3.4 Critiquing and Measuring Performance : : : : : : : : : : : : : : : 30
3.4 Mathematical Formalization : : : : : : : : : : : : : : : : : : : : : : : : : 31
3.4.1 Notation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 31
3.4.2 Domain Layer : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 31
vii
3.4.3 Strategy Layer : : : : : : : : : : : : : : : : : : : : : : : : : : : : 34
3.4.4 Scheduling Layer: Extended Petri Nets Prediction Module : : : : 36
3.4.5 Scheduling Layer: Computing Utilities : : : : : : : : : : : : : : : 39
3.4.6 Minerva Main Loop : : : : : : : : : : : : : : : : : : : : : : : : : : 41
3.4.7 Computing Window Sizes for Critiquing and Performance Measure 41
3.4.8 Computing Performance Measure : : : : : : : : : : : : : : : : : : 43
3.5 Complexity Analysis : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 45
3.5.1 Domain Level Bounds : : : : : : : : : : : : : : : : : : : : : : : : 45
3.5.2 Blackboard Bounds : : : : : : : : : : : : : : : : : : : : : : : : : : 46
3.6 Equivalence to Turing Machine : : : : : : : : : : : : : : : : : : : : : : : 53
3.7 Implementation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 55
3.8 Application to the Navy Damage Control Domain : : : : : : : : : : : : : 58
3.8.1 Domain Background : : : : : : : : : : : : : : : : : : : : : : : : : 58
3.8.2 Minerva as an instructor aid in DCTrain environment : : : : : : : 60
3.8.3 Minerva as a DCA Decision Aid in DC-ARM : : : : : : : : : : : 63
3.9 Evaluation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 66
3.9.1 Theoretical Evaluation of the Proposed Approach : : : : : : : : : 66
3.9.2 Practical Evaluation of the Proposed Approach : : : : : : : : : : 66
4 Related Work : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 73
4.1 Medical Diagnosis Expert Systems : : : : : : : : : : : : : : : : : : : : : 73
4.1.1 MYCIN : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 73
4.1.2 NEOMYCIN : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 74
4.2 Blackboard Expert Systems : : : : : : : : : : : : : : : : : : : : : : : : : 74
4.2.1 Guardian : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 74
4.2.2 Minerva Family : : : : : : : : : : : : : : : : : : : : : : : : : : : : 76
4.2.3 HASP : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 78
5 Thesis Contributions and Conclusions : : : : : : : : : : : : : : : : : : : 81
5.1 Contributions : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 81
5.1.1 Theoretical Contributions : : : : : : : : : : : : : : : : : : : : : : 81
5.1.2 Practical Contributions : : : : : : : : : : : : : : : : : : : : : : : : 82
5.2 Conclusions : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 83
5.2.1 Thesis Summary : : : : : : : : : : : : : : : : : : : : : : : : : : : 83
5.2.2 Future Research Directions : : : : : : : : : : : : : : : : : : : : : : 84
Appendix : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 86
A DCA Doctrines : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 86
B Minerva-DCA knowledge layers : : : : : : : : : : : : : : : : : : : : : : : 89
B.1 Domain Layer : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 89
B.1.1 Domain Facts : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 89
B.1.2 Domain Rules : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 91
viii
B.1.3 Domain Graph : : : : : : : : : : : : : : : : : : : : : : : : : : : : 96
B.2 Strategy Layer : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 96
B.3 Extended Petri Nets Predictor : : : : : : : : : : : : : : : : : : : : : : : : 105
B.4 State Evaluator : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 118
B.4.1 Design : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 118
B.4.2 Inductive Learning Setup : : : : : : : : : : : : : : : : : : : : : : : 119
B.4.3 Multilayer Perceptrons with Backpropagation Learning : : : : : : 121
B.4.4 Kohonen Maps : : : : : : : : : : : : : : : : : : : : : : : : : : : : 121
B.4.5 Decision Trees : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 135
B.4.6 Comparisons and Comments : : : : : : : : : : : : : : : : : : : : : 146
B.5 Rule-based Scheduling Layer of Minerva-4 : : : : : : : : : : : : : : : : : 148
B.6 Critiquing and Problem-Solving Knowledge : : : : : : : : : : : : : : : : : 151
C Minerva Graphical User Interfaces (GUIs) : : : : : : : : : : : : : : : : : 153
C.1 Explanatory GUI : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 153
C.2 Advisory GUI : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 155
C.3 Critiquing GUI : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 156
D Experimental Data : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 159
D.1 Blackboard Statistics : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 159
D.1.1 Minerva-3 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 160
D.1.2 Minerva-4 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 160
D.1.3 Minerva-5 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 160
D.1.4 Comparative Chart : : : : : : : : : : : : : : : : : : : : : : : : : : 160
D.2 Damage Control Scenarios : : : : : : : : : : : : : : : : : : : : : : : : : : 160
Bibliography : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 176
Vita : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 180
ix
List of Figures
3.1 Minerva-5 Overall Design : : : : : : : : : : : : : : : : : : : : : : : : : : : 15
3.2 A Minerva-5 Domain Rule : : : : : : : : : : : : : : : : : : : : : : : : : : 16
3.3 Minerva-5 Domain Rule Format : : : : : : : : : : : : : : : : : : : : : : : 17
3.4 Minerva-DCA Strategy Chain : : : : : : : : : : : : : : : : : : : : : : : : 20
3.5 Minerva-5 Strategy Rule : : : : : : : : : : : : : : : : : : : : : : : : : : : 20
3.6 Minerva-5 Main Loop : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 25
3.7 Minerva-5 Advisory GUI short-form NL explanation generation : : : : : 28
3.8 Minerva-5 Advisory GUI long-form NL explanation generation : : : : : : 29
3.9 EPN ring mechanism : : : : : : : : : : : : : : : : : : : : : : : : : : : : 38
3.10 Illustrating performance measure : : : : : : : : : : : : : : : : : : : : : : 43
3.11 Possible Strategy Network Schema : : : : : : : : : : : : : : : : : : : : : 47
3.12 Strategy Network Scheme Starting with process-finding (step 1) : : : 49
3.13 Strategy Network Scheme Starting with process-finding (step 2) : : : 49
3.14 Minerva rules for MT simulation : : : : : : : : : : : : : : : : : : : : : : : 56
3.15 MT accepting 1 and changing them to x : : : : : : : : : : : : : : : : : 57
3.16 DDG-51 Arleigh Burke Destroyer : : : : : : : : : : : : : : : : : : : : : : 59
3.17 Main Repair Station Locations : : : : : : : : : : : : : : : : : : : : : : : : 59
3.18 Minerva-5 in DCTrain : : : : : : : : : : : : : : : : : : : : : : : : : : : : 62
3.19 Minerva-5 in DC-Aware : : : : : : : : : : : : : : : : : : : : : : : : : : : 64
3.20 Minerva-4/5 vs. SWOS graduates : : : : : : : : : : : : : : : : : : : : : : 68
3.21 Minerva-4/5 Average Cycle Time (Graph 1) : : : : : : : : : : : : : : : : 70
3.22 Minerva-4/5 Average Cycle Time (Graph 2) : : : : : : : : : : : : : : : : 70
3.23 Minerva-4/5 Average Cycle Time (Graph 3) : : : : : : : : : : : : : : : : 71
4.1 Minerva history : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 77
A.1 DCA's responsibilities on setting GQ : : : : : : : : : : : : : : : : : : : : 86
A.2 DCA's responsibilities on investigation and setting FBs : : : : : : : : : : 87
A.3 DCA's responsibilities on handling re progress : : : : : : : : : : : : : : 87
A.4 DCA's responsibilities on managing pressure drop on re main : : : : : : 88
B.1 Domain Subgraph (part 1) : : : : : : : : : : : : : : : : : : : : : : : : : : 97
B.2 Domain Subgraph (part 2) : : : : : : : : : : : : : : : : : : : : : : : : : : 98
B.3 EPN dealing with re : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 116
B.4 EPN dealing with remain : : : : : : : : : : : : : : : : : : : : : : : : : : 117
x
B.5 ANN 479-2-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : : 124
B.6 ANN 479-100-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : 126
B.7 ANN 479-200-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : 128
B.8 ANN 479-500-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : 130
B.9 ANN 479-100-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : 132
B.10 ANN 479-100-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : 134
B.11 Experiments with Kohonen Maps : : : : : : : : : : : : : : : : : : : : : : 137
B.12 Experiments with C5.0 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 138
B.13 ANNs vs. K-maps vs C5.0 : : : : : : : : : : : : : : : : : : : : : : : : : : 147
C.1 Minerva-5 Explanatory GUI : : : : : : : : : : : : : : : : : : : : : : : : : 154
C.2 Minerva-5 Advisory GUI : : : : : : : : : : : : : : : : : : : : : : : : : : : 157
C.3 Minerva-5 Critiquing GUI : : : : : : : : : : : : : : : : : : : : : : : : : : 158
xi
List of Tables
2.1 Static vs. Dynamic Domains : : : : : : : : : : : : : : : : : : : : : : : : : 5
3.1 Minerva-4/5 vs. SWOS graduates : : : : : : : : : : : : : : : : : : : : : : 68
3.2 Minerva-4/5 Average Cycle Time : : : : : : : : : : : : : : : : : : : : : : 69
B.1 Compartment Status Encoding Scheme : : : : : : : : : : : : : : : : : : : 119
B.2 Multi-layer Perceptrons as Board Evaluator : : : : : : : : : : : : : : : : 122
B.3 ANN 479-2-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : : 123
B.4 ANN 479-100-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : 125
B.5 ANN 479-200-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : 127
B.6 ANN 479-500-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : 129
B.7 ANN 479-100-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : 131
B.8 ANN 479-100-60 Results : : : : : : : : : : : : : : : : : : : : : : : : : : : 133
B.9 Experiments with Kohonen Maps : : : : : : : : : : : : : : : : : : : : : : 136
B.10 Experiments with C5.0 : : : : : : : : : : : : : : : : : : : : : : : : : : : : 139
B.11 Degree of Closeness Function : : : : : : : : : : : : : : : : : : : : : : : : 152
D.1 Minerva-3 Blackboard Statistics (Part 1) : : : : : : : : : : : : : : : : : : 161
D.2 Minerva-3 Blackboard Statistics (Part 2) : : : : : : : : : : : : : : : : : : 162
D.3 Minerva-4 Blackboard Statistics : : : : : : : : : : : : : : : : : : : : : : : 163
D.4 Minerva-3,4,5 Blackboard Statistics Comparison : : : : : : : : : : : : : : 163
D.5 DC Scenarios run with Minerva-4 (Part 1) : : : : : : : : : : : : : : : : : 165
D.6 DC Scenarios run with Minerva-4 (Part 2) : : : : : : : : : : : : : : : : : 166
D.7 DC Scenarios run with Minerva-4 (Part 3) : : : : : : : : : : : : : : : : : 167
D.8 DC Scenarios run with Minerva-4 (Part 4) : : : : : : : : : : : : : : : : : 168
D.9 DC Scenarios run with Minerva-5 (Part 1) : : : : : : : : : : : : : : : : : 169
D.10 DC Scenarios run with Minerva-5 (Part 2) : : : : : : : : : : : : : : : : : 170
D.11 DC Scenarios run with Minerva-5 (Part 3) : : : : : : : : : : : : : : : : : 171
D.12 DC Scenarios run with Minerva-5 (Part 4) : : : : : : : : : : : : : : : : : 172
D.13 DC Scenarios run by SWOS Students (Part 1) : : : : : : : : : : : : : : : 173
D.14 DC Scenarios run by SWOS Students (Part 2) : : : : : : : : : : : : : : : 174
D.15 DC Scenarios run by SWOS Students (Part 3) : : : : : : : : : : : : : : : 175
xii
Chapter 1
Introduction
This thesis is organized as follows:
1. Chapter 2, p.2 will present us with a formalization of dynamic problem-solving,
advising, and critiquing tasks. We will also consider some challenges related to
those tasks.
2. Chapter 3, p.11 will go into philosophy, design, analysis, and implementation of our
approach. We will also introduce the test-bed domain of Damage Control aboard
naval vessels.
3. Chapter 4, p.73 will present some widely-known past projects and discuss their
strengths and weaknesses.
4. Chapter 5, p.81 will summarize theoretical and application sides of this project
contributions, concludes the main part of the thesis, and presents us with some
future research directions.
5. Appendix A, p.86 will provide us with some additional information on the NAVY
Damage Control domain. Finally, appendices B, p.89; C, p.153; and D, p.159
contain certain details on the implementation as well as the experimental data
collected.
1
Chapter 2
The Tasks of Dynamic
Problem-Solving, Advising, and
Critiquing
This section will introduce the tasks of dynamic control advising, and critiquing. To get
a better handle on this we will start out with "classical" static diagnosis domains and
then move on to the dynamic domains. This transition makes it easier to appreciate the
complexity of the latter domains.
2
plausible diagnoses D(X ) = fD1(X ); :::; Dm(X )g. Patient's age, results of an x-ray, and
gender are examples of parameters from P . During a consultation C (X ) an expert system
can request the values of k parameters Pr (C (X ); X ) = fPC (X )1 (X ); :::; PC (X )k (X )g
P . Every parameter P 2 P (X ) has a cost
(P ; X ) associated with it. For example
performing a blood test is more time and resource consuming than asking the patient's
age. The diagnoses produced can be evaluated by a panel of domain experts and assigned
degrees of quality (Di(X ); X ).
Given the notation we can formalize the task of diagnosis of patient X as maximizing
the diagnosis quality2:
A(D(X ); X ) = d2max
D (X )
f(d; X )g
while minimizing the total consultation cost:
X
;(C (X ); X ) =
(P ; X ):
P2Pr (C (X );X )
(X ) = A(D(X ); X ) :
1 + ;(C (X ); X )
To dene the overall score (quality) of a diagnosis expert system we can run the system
on a control set of cases C and then somehow combine (e.g. add together) the scores:
X
=
(X ):
X 2C
2
Here we obviously consider the quality of the best produced diagnosis.
P (d; XAlternatively we can consider
the overall quality of produced diagnoses, i.e. A(D(X ); X ) = ).
d 2 D (X )
3
2.1.2 Challenges
The following aspects of medical diagnosis domain make development of a good expert
system challenging:
The challenge set described above is by no means complete but even those challenges
have made a severe impact on medical diagnosis expert system development as we will
see below on examples of some well known systems (see sections 4.1.1, p.73, 4.1.2, p.74).
4
Static Diagnosis Domains Dynamic Problem-solving Domain
State of the world doesn't change considerably State of the world changes signicantly in real
during the problem-solving process time
New data come only when the expert requests New data come at arbitrary moments of time
it
Once a nding is asserted it holds till the end Findings are subject to changes, noise, and
of the consultation errors
There is a little/no need to deal with temporal Temporal constraints play a major role
knowledge
A problem-solving session (consultation) has There is no a priori set limit on the problem-
a clearly dened beginning and an end solving session duration
Table 2.1: Static vs. Dynamic Domains
2.2 Dynamic Domains
2.2.1 Tasks: Problem-Solving/Control
The task of dynamic problem-solving (or control) is often more involved than diagnosis
for a number of reasons. Some of them are caused by the presence of the temporal factor
and everything related to it. Table 2.1, p.5 shows some of those dierences.
Other challenges result from the fact that problem-solving often includes diagnosis as
a subcomponent. In other words, a sophisticated control often involves diagnosing the
situation and then guring out the appropriate response (the therapy). Given a scenario
X the state of the world can be specied by P (X; t) = fP1(X; t); :::; Pn (X; t)g3 where t
is the time. The control expert system queries parameters fPC (X ) (X; t)g. In addition to
issuing queries it can also order some actions fA(X; t)g to be taken. Given a scenario
X querying a parameter P at time t has cost of
(P ; X; t) while performing an action
A has cost of
(A; X; t)4 . Let a real function Q(X; t) evaluate the state of the world at
time t and be the more negative the worse situation is and the more positive the better
situation is. In the domain of airplane autopilots Q might give us say ;1000 if the plane
is just about to crash and +1000 if everything is perfect. Given a scenario X beginning
3
Again some of the parameters might not be always dened on all X .
4
the split of the costs is rather a convention since in reality some parameters have associated actions
to take and that's where most of the cost comes from.
5
at time t1 and ending at time t2 we can dene the cost of scenario:
X
;(X ) =
(A; X; t) +
(P ; X; t)
t1 tt2
(X ) = A(D(X ); X ) :
1 + ;(C (X ); X )
To dene the overall score (quality) of a diagnosis expert system we can run the system
on a control set of cases C and then somehow combine (e.g. add together) the scores:
X
=
(X ):
X 2C
2.2.2 Challenges
In a realistic real-time control domain most challenges seem to be caused by the following:
1. Multiple concurrent interacting events to address
2. Limited time available for reaction (time pressure)
3. High information rate
4. Limited resources
5. Subtask interaction
To instantiate these challenges, we will consider a concrete dynamic control domain:
Damage Control on the Navy battleships (the domain of Minerva-DCA described in
6
section 3.8, p.58). In a combat situation many things can go wrong on a ship: a missile
hit is likely to cause multiple and simultaneous res, ruptures, equipment failures, etc.
Most of those crises have to be addressed promptly. For example: re boundaries have
to be set quickly or otherwise the re will spread. Thus the Damage Control Assistant
(DCA) works under time pressure and has only very limited crisis management resources
at his/her disposal. And lastly DCA's actions interact. A good example here is that
the DCA has to be quite careful about shutting remain cut-o valves since it might
prevent water
ow to the reghters and therefore render their eorts ineective. The
challenges mentioned here are signicant even for well trained Navy personnel with years
of experience. Thus an expert system which could handle the crises on its own (an
articial DCA) or at least be a decision-making aid would be of great help to the Navy
([9], [8]).
7
1. P+j! = fPj (t)g, the set of parameters to request in the future;
2. P;j! = fPk (t)g, the set of parameters not to request in the future;
3. A +j! = fAm (t)g, the set of actions to take in the future;
4. A ;j! = fAq (t)g, the set of actions not to take in the future.
In essence, the advice function S takes all parameters, parameters requested by the
subject, and actions taken by the subject and returns parameters and actions to re-
quest/take and not to request/take in the future.
The critiquing function could be dened similarly with the dierence being the time
scope. While an advice addresses the future (which we still can change), a critique
addresses the past, which is already a history. Formally: a critique C at time t could be
represented as:
C(t; P; PX; A ) = hP+!j; P;!j; A +!j ; A ;!j i
where the inputs are:
1. P= fPi(t)g, the set of all parameters available so far;
2. PX = fPC (X ) (X; t)g is the set of all parameters requested by H so far;
3. A = fA(X; t)g, the set of all actions already taken by H ;
and the outputs are:
1. P+!j = fPj (t)g, the set of parameters that should have been requested but weren't
requested;
2. P;!j = fPk (t)g, the set of parameters that should not have been requested but were
requested;
3. A +!j = fAm (t)g, the set of actions that should have been taken but weren't taken;
4. A ;!j = fAq (t)g, the set of actions that should not have been taken but were taken.
8
So, in essence, the critiquing function C takes all parameters, the parameters re-
quested by the subject, and the actions taken by the subject and returns the dierence
between the "optimal" set of parameters and actions to be taken and the actual one.
Severity of a critique could be characterized by the total cost (as
denes it) of the
deviation. Formally:
X X X X
C;(t; P; PX; A ) =
(P+!j) +
(P;!j) +
(A +!j ) +
(A ;!j )
Quality of a critique could be dened as the dierence between the corrected and the
actual performance levels (as A denes it).
Quality of an advice could be dened as the increase in the performance level should
the suggestions be implemented.
2.2.4 Challenges
A number of issues make a direct implementation of the introduced denitions compli-
cated. The issues and corresponding complications include:
1. Often there are many parallel solution paths. So, while a critique could be severe,
the quality of it could be low.
2. The denitions introduced assume that we know the "optimal" solution. Often this
is unfeasible to nd, especially in real time.
3. The denitions assume that the subject is somewhere reasonably close to the "op-
timal" solution path. Otherwise the critique/advice would be totally inapplicable.
4. In practice we would probably consider a certain time window for both future and
the past. The choice of the window width is an open issue.
The list above is by no means complete, but even those challenges have often forced
developing designated expert systems for the critiquing and advising tasks. Sections 3.3.3,
9
p.27 and 3.3.4, p.30 will show how the proposed architecture of Minerva can handle both
at a relatively low extra cost.
10
Chapter 3
Proposed Approach
3.1 Introduction
3.1.1 Objectives
The previous sections were intended to specify the domains we are looking at and to
give a reader an idea of their complexity. This project objectives are to develop a single
architecture that would be:
1. applicable in both static diagnosis and dynamic problem-solving domains;
2. domain-independent otherwise;
3. capable of problem-solving;
4. capable of explaining its actions;
5. capable of evaluating another subject's problem-solving performance;
6. capable of critiquing another subject doing problem-solving.
The architecture presented is called Minerva-5. We will use Minerva-DCA to refer to
Minerva-5 applied in the Navy DC domain (see section 3.8, p.58).
11
3.1.2 Philosophy of the Approach
A system aimed at such goals would have to deal with dierent kinds of knowledge. In
particular the following kinds of knowledge are of a primary concern:
1. Domain Knowledge to reason about the domain events;
2. Strategy Knowledge to guide the reasoning about the domain events;
3. Scheduling Knowledge to schedule the system's activities eciently.
Those three types of knowledge are well known and have been used in a number of
systems (e.g. [18], [11], [14], [20]). We are extending this concept by employing pre-
dictive qualitative simulation and state evaluation knowledge as parts of the scheduling
knowledge. This approach is not a quick hack to boost the performance but rather an
extension based on certain philosophical ideas as the next paragraph describes. Also we
would like to note that rening a single knowledge layer has been traditional in Minerva
family development (see section 4.2.2, p.76 for the Minerva family history).
It has been observed that the combinatorial computational power of humans is in-
ferior to that of modern computers, yet human experts exhibit superior performance
in many real-world domains including the ones we have discussed. In our opinion, the
impressive performance of human problem-solving comes from the collaboration of the
analytical ("conscious") and the non-analytical ("subconscious") sides of human mind.
The analytical side seems to be somewhat similar to the algorithmical methods we are
using in Articial Intelligence problem-solvers (e.g. theorem-proving, rule-based classi-
cation, minimax-style search, etc.). Unfortunately the other "subconscious" side is still
poorly understood and thus leaves plenty of room for hypotheses. Our second hypothesis
is that humans possess certain "subconscious" mechanism that allow them to predict
the environment at a qualitative level very rapidly and thus facilitate intuition or the
"gut feeling". Hypothesizing further we note that the "subconscious" prediction mod-
ule might be implemented as some kind of specialized brain "hardware" capturing the
12
key properties of the environment. Under those assumptions, human reasoning becomes
similar to computations with oracle known in Recursion Theory community ([4, 1]).
Naturally, anything computed on a Turing Machine has to be algorithmical, and
thus we are looking at algorithmical approximations of human "subconsciousness". Our
proposition is to use Extended Petri Nets for rapid qualitative prediction and a classier
for state evaluation. Various classiers could be used (e.g. articial neural networks,
decision trees, etc.) as we discuss in section 3.2.5, p.23.
13
5. Multiple Solution Paths could be generated by having knowledge sources of dierent
nature and biases. This is helpful for critiquing and search space exploration.
6. Uncertainty Reasoning and Voting could be supported through combining the con-
dence factors of a datum produced by dierent knowledge sources.
The paradigm has been tested and proven useful by a number of researchers ([16],
[23], [18], [11]).
14
Deliberation Module Blackboard Scheduling Module
domain KS
Prediction Module
Scheduling Knowledge
domain KS
suggested actions
strategy KS
states
State
...
Evaluation
evaluations of Module
Rule-based predicted world
strategy KS states
Environment
15
a required condence factor or a general-form predicate to be satised. The conclusion
is also a datum (usually a hypothesis) with its own condence factor. Both precondi-
tions and the conclusion might have parameters specied partially in the rule. In such
a case Minerva-5 tries to instantiate the unspecied parameters from the specied ones.
For example (gure 3.2, p.16): nding alarm can have parameter Where. Then, we can
have a rule stating that if nding [alarm,fire,Where] is known then assert hypoth-
esis [fire,Where]. Given nding [alarm,fire,3-370-0-E] parameter Where in the
hypothesis will be unied with parameter Where in the nding and thus instantiated to
3-370-0-E. Then, the hypothesis will read [fire,3-370-0-E].
ccf(r1012,1,1,[alarm,fire,Where,Time],800,[fire,Where,FireClass,discovered,Time],666,[]).
ccb(r1012,1,1,[alarm,fire,Where,TimeAlarm],800,[fire,Where,FireClass,Status,Time],666).
In general all rules could be used opportunistically for forward and backward chaining.
However, certain rules should be used exclusively for forward or backward chaining. The
purpose of domain rules is to traverse the domain graph (section B.1.3, p.96). In other
words, forward application of a rule moves us from a certain set of data (the rule's
preconditions) to a dierent datum (the rule's conclusion). Likewise backward application
of a rule moves us from some preconditions or the conclusion to other preconditions of
the rule. A forward application is called rule ring (section 3.4.2, p.31) and results in
asserting the rule's conclusion (via an action-level strategy goal conclude(Hypothesis)).
For eciency purposes (see section 3.3.1.1, p.24), it is benecial to keep domain
blackboard size down and remove obsolete/outdated ndings and hypotheses. Minerva-5
has a number of removal rules that serve this purpose.
Figure 3.3, p.17 presents us with the format used. A mathematical formalization of
Minerva's domain layer can be found in section 3.4.2, p.31, while the actual code is listed
in section B.1, p.89.
16
For forward chaining:
ccf(RuleID,Clause1,ReqCF,Conclusion,ConclusionCF,UnifList) :- p1(X1,...,XM)
...
ccf(RuleID,ClauseN,ReqCF,Conclusion,ConclusionCF,UnifList) :- pN(X1,...,XM)
The rules are written in Prolog format with each predicate representing one clause. There are
three types of the rules: ccf are used for forward chaining, ccb are used for backward chaining,
and ccm are used to remove obsolete data from the blackboard to keep down its size. The
arguments of the rules are as follows:
Clause is a datum which has to be known with a condence factor of at least ReqCF in order
for this precondition to be satised.
Conclusion is a datum which will be concluded with ConclusionCF should the rule re.
UnifList is a list of variables to unify across Clause1,...,ClauseN, and Conclusion.
pI(X1,...,XM) is a general-form predicate to satisfy.
17
3.2.2 Deliberation Module: Strategy Knowledge Sources
One of the distinctive features of Minerva-5 is its declaratively and domain-independently
represented strategy knowledge. The strategy layer of Minerva-5 knowledge is used to
drive the deliberation process. Depending on the new data and other blackboard contents,
Minerva could perform either backward or forward chaining. This makes Minerva-5 more
exible in its reasoning process in comparison with a xed reasoning strategy system
(such as MYCIN). As is well known ([6]), a xed reasoning strategy is not benecial in
domains where it is unclear what kind of situation we will be dealing with. Specically,
backward chaining is inecient when we have a fan-in situation while forward chaining
doesn't deal too well with fan-out.
While domain knowledge sources reason over the lexicon of domain ndings, hy-
potheses, and actions the rule-based strategy knowledge sources reason over the lexicon
of domain-independent goals. The goals range from the top-level goals:
1. process_hypothesis(Hypothesis)
2. process_finding(Finding)
3. explore_hypothesis(Hypothesis)
4. remove_datum(Datum)
to intermediate-level goals:
1. applyrule_backward(Rule)
2. applyrule_forward(Rule)
3. findout(Datum)
4. pursue_hypothesis(Hypothesis)
5. test_hypothesis(Hypothesis)
18
1. perform(Action)
2. lookup(Finding)
3. remove(Datum)
4. conclude(Hypothesis)
The goals are used in building the strategy networks. A strategy network is a directed
acyclic graph consisting of strategy chains. Each chain starts with a top-level goal, goes
through the intermediate and top-level goals, and ends up with a bottom level goal that
carries a domain-level action to take.
During the deliberation process the strategy knowledge sources rules are triggered by
the important ndings and active hypotheses on the blackboard. The triggering data is
considered within the context of top-level goals. For example: re alarm
finding(fire-alarm) would lead to top-level goal process_finding(fire-alarm). In
turn, this goal will trigger other strategy rules and thus entail intermediate-level goals.
This process eventually results in the strategy chain network (an actual strategy chain
is shown in gure 3.4, p.20). Each edge in the network is labeled with the corresponding
strategy operator identier (e.g. pf5). Figure 3.5, p.20 shows an example of actual
strategy rule. Strategy operators are also implemented as Prolog clauses. The rst
argument of mr is the strategy operator identier (in this case pf1). The second argument
is the higher level goal the operator applies to. Finally, the third argument is the lower-
level goal. So, in a way, a strategy operator is nothing but a transition from a higher to a
lower level goals (see section 3.4.3, p.34 for details). The pre-conditions of mr are various
predicates that have to hold in order for the strategy operator to re. In the example
show in the gure 3.5, p.20 we should apply Rule in a backward manner if:
1. we are trying to process nding F;
2. F is important (a "red-
ag");
3. there is (ccf) a domain rule (Rule) such that F is one of its preconditions (with
required condence factor of CF) and Hyp is its conclusion;
19
4. and nally F is known to hold with condence factor of at least CF.
Mathematical formalization of the strategy level is given in section 3.4.3, p.34 with
some complexity analysis results in section 3.5, p.45. The actual strategy layer code is
listed in section B.2, p.96.
mr(pf1,process_finding(F),applyrule_forward(Rule,Hyp)) :-
finding(F,_),
red-flag(F),
ccf(Rule,N,M,F,CF,Hyp,CFC,UL),
satisfied(F,CF).
20
3.2.3 Scheduling Module: Design Ideas
It is worth mentioning that scheduling in a dynamic domain is one of the major issues
to consider (sections 2.2.1, p.5, 2.2.2, p.6). Therefore, an ecient scheduler is the key
to successful problem-solving, critiquing, and advising in dynamic domains such as the
damage control domain we are looking at.
At every cycle Minerva generates a number of feasible actions. Given limited re-
sources, task interaction, and potentially contradicting actions we need to schedule the
actions eciently. We are tackling this task by computing actions' utilities and execut-
ing the top-ranked actions rst. Therefore the problem of scheduling now becomes the
problem of utility assignment.
Roughly speaking (see section 3.2.6, p.24 for details), we assign an action's utility by
predicting how much better or worse the environment will become should we take the
action. Thus, our scheduler consists of an extended Petri nets prediction module (sec-
tion 3.2.4, p.21), a static board evaluator (section 3.2.5, p.23), and the utility assignment
module (section 3.2.6, p.24).
21
Qualitative data. In our scheduling approach, vast quantitative data would put an
unnecessary burden on the board evaluator. Thus qualitative (as opposed to quan-
titative) predicted data is more benecial for us.
Considering agents' actions. Not only we should predict development of the physical
systems, but even more so, we should predict eects of the action being scheduled
and other agents' actions.
Modularity. To facilitate easy upgrades, renement, and debugging the predictor should
be modular with respect to modeled subsystems/agents of the environment. This
way, introducing a new agent wouldn't require rebuilding everything from scratch.
Variables/Parameters. Given the typically vast amount of similar agents/subsystems,
we need to be able to model them with a single predicting submodule. Thus, some
kind of variables/parameters mechanism would be highly ecient.
Temporal Data. Temporal information is obviously very important. Thus we should
be able to predict not only what is going to happen but also when it is going to
happen.
With those ideas in mind we rejected numerical simulation (slow, no sublinearity,
hard to take agents' actions into account), belief networks (hard to implement variables
and support temporal data, less modularity), and decision trees (for similar reasons).
Our novel solution is to use classical Petri Nets ([5]) extended with variable-support and
temporal information as section 3.4.4, p.36 describes.
Petri Nets have a number of attractive features including the following:
1. solid mathematical backup;
2. rapid and mostly sublinear performance with qualitative data;
3. temporal data support;
4. dierent levels of abstraction, variables/parameters support;
22
5. high modularity;
6. taking agents' actions into account;
7. concurrent processing;
8. ease of representing and reading.
Section 3.4.4, p.36 will formally describe our Extended Petri Nets (EPN) predictor
while section B.3, p.105 will list the actual networks we have used.
23
concept of the evaluator. We have utilized various inductive learning methods including
Multilayer Perceptrons, Kohonen Maps, and Decision Trees. Please refer to section B.4,
p.118 for details.
3.3 Operation
3.3.1 Main Loop
Minerva-5 works in cycles as shown in gure 3.6, p.25.
Each cycle consists of 3 stages:
1. Deliberation;
2. Scheduling (qualitative prediction, state evaluation, utilities computation);
3. Execution.
A mathematical formalization of this process is given in section 3.4.6, p.41. The
following sections will go into details on each of the stages.
3.3.1.1 Deliberation
During the deliberation stage, the important data from the blackboard is used to trigger
domain rules and build a strategy network. Each of the strategy chains starts with a
top-level goal (e.g. process_hypothesis(fire)) and ends with a feasible action (e.g.
24
findings
Deliberation
strategy chains
findings/hypotheses,
strategy chains
EPN prediction
predicted ship states
Environment
Blackboard
predicted ship states
state
evaluation
ship state scores
orders
rated actions
Execution
orders
25
perform(fight_fire)). Dierent networks can share dierent nodes. Sections 3.2.1,
p.14; 3.2.2, p.18; 3.4.2, p.31; D.1, p.159; and 3.4.3, p.34 give intuition, details, formaliza-
tion, and examples of this process.
Given Minerva-5 strategy layer, the following are two important points to this process:
1. The size of the strategy network is, at most, linear in the number of important (red-
ag) ndings and hypotheses. Since the network is built in a depth-rst manner, the
deliberation time is linear in the total number of ndings as well. See section 3.5,
p.45 for more details and the proof.
2. While being computationally ecient (i.e. linear in the number of data) the de-
liberation mechanism is a universal computing device and can emulate any Turing
machine. Section 3.6, p.53 provides the necessary details and the proof.
26
3.3.2 Problem-Solving
In problem-solving mode, at the end of each cycle, all internal and highest-ranked domain-
level actions are executed. Executing internal actions involves asserting hypotheses,
removing obsolete data from the blackboard, etc. Executing domain level actions involves
passing the appropriate message to the environment's actuators (either simulated or real).
It is worth noticing that domain-level actions could be inconsistent with each other (e.g.
one of the reasons is the existence of multiple solution paths). To resolve potential
con
icts, Minerva-5 executes the single top-ranked domain-level action at every cycle.
3.3.3 Advising
In advising mode, Minerva-5's external actions are not passed to the domain actuators
but instead used for advising. Specically, we present ndo top-ranked actions and ndon0t
bottom-ranked actions to the student through Minerva Graphical User Interfaces (GUIs)
(see section C, p.153). For each action the following information is available upon request:
Reasoning behind the action could be shown by displaying the appropriate strategy
chain(s) in both graphical and textual forms. The textual form involves generating
natural language output for the action and the top nodes of the chain (the short
form) or possibly all nodes of the chain (the long form). Figures 3.7, p.28 and 3.8,
p.29 show a screenshot of the actual GUI displaying a particular strategy chain
together with the corresponding short-form and long-form explanations.
Reasoning behind the action's rank could be shown by displaying the environment
states predicted by the EPN prediction module and their scores computed by the
state evaluator. Further details could be provided by tracking down evaluator work
if it allows for that (e.g. in case with decision trees).
27
28
Figure 3.7: Minerva-5 Advisory GUI displaying a strategy chain and corresponding short-form NL explanation
29
Figure 3.8: Minerva-5 Advisory GUI displaying a strategy chain and corresponding long-form NL explanation
3.3.4 Critiquing and Measuring Performance
One of Minerva-5's distinctive features is built-in facilities for evaluating subject's problem-
solving performance as well as critiquing the subject. In both cases the setup is as follows:
1. The subject (typically a student) is solving a scenario using some kind of problem-
solving environment (either natural or simulated). In our domain we used the
DCTrain immersive multimedia environment (section 3.8.2, p.60).
2. Minerva is solving the same scenario simultaneously with the subject.
3. As a result, we are now presented with two streams of time-stamped actions: sub-
ject's and Minerva's. Critiquing and performance measuring is based on window-
matching those two streams as follows.
(a) At every Minerva's cycle (at say time t) the critiquing module determines the
window sizes as described in section 3.4.7, p.41. Actions in those two windows
form two sets: Asubject and AMinerva;5 .
(b) The sets are matched and the performance measure at time t is calculated as
described in section 3.4.8, p.43.
(c) Every high-ranked action that Minerva suggested but the subject didn't take1
is an error of omission that the subject could be critiqued for.
(d) For every action a that the subject took (i.e. a 2 Asubject) one of the three
cases holds:
Action a is generated by Minerva and ranked high. In this case, no cri-
tique is issued since the subject is considered to be doing well.
Action a is generated by Minerva and ranked low. In this case, we cri-
tique the subject by explaining why a is bad (see section 3.3.3, p.27 for
the details). This case constitutes an error of commission.
1
That corresponds to a high-ranked part of AMinerva;5 n Asubject.
30
Action a is not generated by Minerva. In this case, we feed it into the
Minerva scheduler and calculate a's utility u(a). If u(a) is low then we
critique the subject and provide him/her with scheduler reasoning2. If
u(a) is high the subject is considered to be doing ne.
Mathematical formalization of this process is given in sections 3.4.7, p.41 and 3.4.8,
p.43 while the actual Minerva-DCA implementation is given in B.6, p.151.
Denition 3.4.2 Drf D is the set of red-
ag (i.e. unconditionally important) data.
Hrf = Drf \ H and Frf = Drf \ F.
There is a more primitive approach to this case: instead of computing u(a) we can simply assume
2
31
3.4.2.2 Rules
Denition 3.4.3 Rf and Rb are the sets of domain rules of the following form: hd1 ;
1 ;
:::; dn ;
n; P1 ; :::; Pm ; C; !i. Here di D are the premises3;
i 2 R are their required
condence factors; C D is the conclusion4 and ! 2 R is its condence factor; Pj Dn
are some predicates. n 1; m 0. A domain rule r res i all its premises are asserted
with at least condence factors required and all the predicates hold. In other words:
r = hd1 ;
1 ; :::; dn ;
n ; P1 ; :::; Pm ; C; !i res () 8(1 i n)9d~i [asserted(d~i ;
e i ) &
d~i 2 di &
e i
i ] & 8(1 j m)Pj (d~1 ; :::; d~n ). Here and below asserted(d~ ;
~ )
denotes that nding/hypothesis d~ is asserted on the blackboard with condence factor of
~ .
Denition 3.4.4 Rrm is the set of removal rules of the following form: hd1 ;
1 ; :::; dn ;
n ;
P1; :::; Pm ; C; removei. Here di D are the premises;
i 2 R are their required condence
factors; C D is the datum to remove5; Pj are some predicates dened on di . n 1; m
0.
Denition 3.4.5 Removal rule ring mechanism is identical to the one of domain rules.
32
3.4.2.4 Domain Graph
Denition 3.4.7 The domain graph is a directed graph (V; E ) where V = fdj9(r 2
Rf [ Rb [ Rrm [ Sor )[d is in r as C or a di ]g (i.e. all data subsets mentioned in domain
rules and source relations) and E = Ef [ Eb [ Es [ Erm as follows:
1. Ef = f(v1; v2 )j(9hd1 ;
1 ; :::; dn ;
n ; P1; :::; Pm ; C; !i 2 Rf )(9i 2 f1; : : : ; ng)[di \ v1 6=
; & C \ v2 6= ;]g (forward rule edges)6;
2. Eb = f(v1 ; v2 )j(9hd1 ;
1 ; :::; dn ;
n; P1 ; :::; Pm ; C; !i 2 Rb)(9i 2 f1; : : : ; ng)[di \ v1 6=
; & C \ v2 6= ;]g (backward rule edges);
3. Es = f(v1 ; v2 )j(9hd1 ; d2 ; P1 ; :::; Pm i 2 Sor )[d1 \ v1 6= ; & d2 \ v2 6= ;]g (source
edges);
4. Erm = f(v1; v2 )j(9hd1 ;
1 ; :::; dn ;
n ; P1; :::; Pm ; C; removei 2 Rrm )(9i 2 f1; : : : ; ng)
[di \ v1 6= ; & C \ v2 6= ;]g (removal rule edges);
Denition 3.4.8 The following are degrees of the domain graph vertices (v 2 D):
1. fB (v) = jfv1j(v; v1 ) 2 Ef gj;
2. bB (v) = jfv1j(v; v1 ) 2 Eb gj;
3. sB (v) = jfv1j(v; v1 ) 2 Esgj;
B (v ) = jfv1 j(v; v1 ) 2 Erm gj;
4. rm
5. fC (v) = jfv1j(v1; v) 2 Ef gj;
6. bC (v) = jfv1j(v1; v) 2 Eb gj;
7. sC (v) = jfv1j(v1; v) 2 Esgj;
C (v ) = jfv1 j(v1 ; v ) 2 Erm gj.
8. rm
6
Loosely speaking it means that di is unifyable with v1 and C is unifyable with v2 .
33
B refers to outcoming edges while C refers to incoming edges. 's without arguments
are maximums of the 's with arguments over all vertices (e.g. fB = max B(v)). =
v2D f
maxffB; fC ; bB ; bC g.
Denition 3.4.12 Feasible actions are of two types: external and internal. External
actions are to be passed to environment actuators while internal actions aect Bm+1
directly and aren't passed to the environment. Thus (Bm ) = e(Bm ) [ i (Bm ). Sets
e(Bm ) (external actions) and i (Bm ) (internal actions) are always disjoint.
34
3.4.3.3 Action-Goal Chains
Denition 3.4.14 An action-goal (or strategy) chain for cycle i is an n-tuple hg1 ; : : : ; gn i
such that:
Denition 3.4.15 Ch is the set of all possible chains. Chi is the set of strategy chains
(or the strategy network) generated during Minerva cycle i.
35
3.4.4 Scheduling Layer: Extended Petri Nets Prediction Mod-
ule
Following the formalism from [5] we will denote a Petri net C as a tuple C = (P; T; I; O)
where P is a set of places, T is a set of transitions, I is a set of transition inputs, and O
is a set of transition outputs. A marking of Petri net C is denoted by . A marked Petri
net is referred to as M = (P; T; I; O; ). Marking is a n-vector of numbers, n = jP j.
To extend this formalism we introduce the following:
1. The tokens now have identiers assigned to them. Each token will be identied
using a label l 2 2Ot 2Ov T 2 , where Ot ; Ov represent the set O = Ot Ov of
objects (represented as a pair (type; value)) we would like to model. In the domain
of reghting8 O might include compartments C and damage control stations S.
Each token can have a list of domain-object pairs so l is dened on 2Ot 2Ov . Each
token will also have a time interval [tb ; te] associated with it (tb ; te 2 T ). The time
interval will be changed as the token proceeds through the net. Given a token x its
identier is given by iO(x) (the object component) and iT (x) (the time interval).
Intuitively, places correspond to dierent states of the modeled subsystem, domain
identiers of the tokens represent a specic subsystem, and the time intervals rep-
resent the interval when the subsystem got into the state.
36
Intuitively, the EPN transitions represent the transitions between dierent states of
the modeled system. Transition delays re
ect the time it typically takes to change
the state.
4. In additon to the classical Petri Nets edges between the places and the transitions
we now have the following new types of edges:
(a) a negation edge from place p to transition t species that the transition t
should not re if there is an appropriate token in p;
(b) a double-ended edge from place p to transition t species that if the transition
t res all the appropriate tokens in p should remain there.
5. Suppose places fA1; :::; An g are connected to transition T via regular or double-
ended edges f(Ai ; T )g and places fB1 ; :::; Bm g are connected to T via negation edges
f(Bj ; T )g (see gure 3.9, p.38). Suppose f[ajb ; aje]g are the time intervals associated
with all tokens in places fAig and f[bjb ; bje]g are the time intervals associated with
all tokens in places fBi g. Then the ring mechanism could be described as follows:
(a) Dene (compute) [maxfajb g; maxfajeg] = [ab ; ae] as the common time interval
for all f[ajb ; aje]g.
(b) Dene (compute) [minfbjb g; maxfbjeg] = [bb ; be] as the common time interval
for all f[bjb ; bje]g.
(c) Compute the new time interval [ab ; minfae; bbg] = [c0b ; c0e ] representing the
domain time when the transition is allowed to re.
(d) If c0b > c0e then the transition would not re. Otherwise we add the delays
of T and have [c0b + min; c0e + max ] = [cb ; ce] as the time interval for the
propagated tokens.
(e) Merge object components of all the enabling token labels together and to get
the object component of identier for the token(s) in the output places of the
transition.
37
A1 An B1 Bm
[a 1 b ,a 1 e ]
[b m b ,b m e ]
... ...
~
[∆min ,∆m a x ]
[c b ,c e ]
the identier (station, R5)2 S O as the two enabling tokens for some tran-
38
sition. When the transition res, the resulting token(s) will have an identier
f(compartment, 3-370-0-E),(station,R5)g. Later on, we will need to sepa-
rate this combined identier into two identiers. It could be done with operator
C (X ) = X \ C and operator S (X ) = X \ S.
Denition 3.4.18 Let s : W ! [smin; smax ] be the scoring function. This value is
provided by the static state evaluator. W is the set of all world states. smin and smax
correspond the worst and the best world states from the DCA standpoint.
Denition 3.4.19 Let a be a suggested action, ! be its CF, sgn be the sign function10 .
Let Fhc be a set of high-condence ndings11 currently present on the blackboard. Then
we dene operational utility of a as:
ta +(
X a) ta +(
X a)
uo (a; !) = sgn(!)[ s(Wt(fag; Fhc )) ; s(Wt(;; Fhc ))]:
t=ta t=ta
Here ta is when action a would be taken, (a) denes the prediction interval duration.
Intuitively, if the CF ! is positive then a's operational utility is a measure of how much
the world gets better if we take a. Otherwise (! < 0) uo (a) is the measure of how much
the world gets better if we do not take the action. If posted CF is equal to 0 then the
operational utility is equal to 0 as well.
9
only high-condence ndings are fed into the EPN.
10
i.e. returns +1 if the argument is positive, ;1 if negative, and 0 if the argument is 0.
11
such as conrmed re,
ood, low pressure, etc.
39
Example 3.4.3 Fighting re in a compartment will most likely have a positive opera-
tional utility since the rst sum above will be larger than the second one (as the state of
the world is likely to be better with re-ghting than without).
Here th is the time when h was rst considered, (h) denes the prediction interval
duration. Intuitively, goal utility of a strategy chain (from h to a) is the amount by how
much better the world would be if h didn't hold.
Example 3.4.4 Investigating a compartment with an active high-temp alarm will get
a positive goal utility since this action is trying to conrm hypothesis "re" (i.e. h =
"re"). Fire results in low-score world states and therefore the rst sum (which ignores
h) will be higher than the second sum.
Denition 3.4.21 Total utility (or simply utility) of an action is dened as:
X
u(a) = !i [uo (a; !i ) + ug (a)]:
[a;!i ]
The sum runs over all instances of the suggested action (every single instance is repre-
sented as [a; !i ]). This formula combines the condence factors !i with the utilities. We
can also consider normalizing the result:
X
u(a) = g( !i [uo (a; !i ) + ug (a)])
[a;!i ]
40
Example 3.4.5 Consider the following:
1. Utility of re ghting is most likely to be high due to operational utility component.
However it will be even higher if the re is in/near to a magazine as the goal utility
will contribute a lot too.
2. Compartment investigation will have 0 or negative operational utility since the world
is no better and actually a little worse (since investigations takes up some resources)
with investigation than without. However the goal utility should make the total
utility positive since a re can cause serious troubles and therefore addressing this
"dangerous" hypothesis ("re") is important and worthwhile doing.
b ; te ] = [t ; t
[tM M window (M ) ; lag ; t ; lag ]
t t
41
where
1. window
t (X ) is the width of subject's window (denition 3.4.24, p.42);
2. window
t (M ) is the width of Minerva's window (denition 3.4.24, p.42);
3. lag
t is the dierence between subject's and Minerva's windows (denition 3.4.24,
p.42). It is necessary since in DCTrain subject gets reports with a certain delay. In
fact the more involved scenario is the longer the delay becomes.
Intuitively, subject's actions are considered from time t ; window
t to t while Minerva's
actions are taken from the window of the same width but pushed back lag t time units.
This is illustrated in gure 3.10, p.43.
X
window
t (X ) = ta (X; t; aXi )
i=Na
X
lag
t = da (t; aXi )
i=Na
X
window
t (M ) = ta (M; t ; lag X
t ; ai )
i=Na
where
1. Na is a constant showing how many subject's action we will track back from time t;
2. aXi ; aM
i are subject's and Minerva's consecutive actions with the last one (aNa or
X
aMNa correspondingly) being the last action ordered before a certain time (see the next
bullet);
3. ta (S; t; aSi ) is the average S 's time to come up with action aSi . Action faS1 ; :::; aSNa g
have t as the reference (ending time);
4. da (t; aXi ) is the average delay time for the multimedia interface to display the con-
rmation videoclip and the nding videoclip for action aXi . t is the reference time.
42
Intuitively, subject's window width is subject's total average time to come up with the last
Na subject's actions. Minerva's window width is Minerva's average total time to come
up with the last Na subject's actions. And lastly, the time lag is the total average time
of interface to play video clips corresponding to the last Na subject's action conrmation
messages and ndings leading to those actions. See gure 3.10, p.43.
Scenario
tb
Subject .
∆t w i n d o w ( M ) a '
Na
a 2'
Minerva's
a 1'
actions
∆t lag aNa
∆t w i n d o w (X) Subject's
a2 actions
a1
Minerva
t (current time)
te
where
1. tb and te are the beginning and ending times of the scenario;
43
2. t runs from tb to te with the step of step
t ;
3. X is the subject, C is the scenario session we are looking at, and A(X; C ) is X 's
action stream while solving C ;
4. P (A(X; C )) is the overall performance of X on C ;
5. P (A(X; C ); t) is X 's instantaneous performance at time t (denition 3.4.26, p.44).
Intuitively, the overall performance measure is a sum of "instantaneous" performance
measures with a certain time step.
where
1. M is a matching function (denitions 3.4.27, p.44, 3.4.28, p.45);
2. A(M; C ) and A(X; C ) are Minerva's and subject's actions on scenario C . Vertical
line denotes the scope. In other words A(subject; C )jtt21 is the set of subject's action
which were ordered between t1 and t2;
3. [tXb ; tXe ] and [tM
b ; te ] are X 's and Minerva's time windows where we look for actions.
M
44
where A1 and A2 are sets of actions.
Intuitively, this simple matching function returns the number of actions which belong
to the both sets. Notice that this could be called "miss/don't miss" matching function
since it requires perfect match between the actions in the sets.
where m(a; A1; A2 ) is the matching quality (denition 3.4.29, p.45) of action a (either
subject's or Minerva's).
where c(a; a0 ) is the degree of closeness of actions a and a0 (denition 3.4.30, p.45).
Intuitively, matching quality m(a; A1 ; A2) is the degree of closeness of an action from
one set to the closest action from the other set.
Intuitively, c(a; a0 ) returns some degree of closeness depending on the arguments of action
a.
45
Denition 3.5.1 Let dg be the number of vertices in the domain graph.
46
process-hypothesis remove-datum explore-hypothesis
process-finding
pursue-hypothesis
applyrule-backward
applyrule-backward
remove test-hypothesis
applyrule-forward
applyrule-forward
applyrule-backward
findout
applyrule-forward
findout
applyrule-forward
perform conclude
perform conclude
47
findout
applyrule-forward
test-hypothesis
test-hypothesis
perform conclude perform
perform conclude perform
test-hypothesis
bounds on the edge number of the actual strategy chain. We also augmented each ver-
tex (i.e. a strategy goal) with its arguments to make the edge bounds more obvious.
For example: there could be no more than fB edges going from process-finding to
applyrule-forward since there are no more than fB domain-level rules from Rf con-
48
process-finding(d)
δ f = {(d , C2 ) ∈ E f } δ b = {(d , C1 ) ∈ Eb }
applyrule-backward(C1)
applyrule-forward(C2)
1
1
δ f = {(d1 , C1 ) ∈ E f }
applyrule-forward(C1)
1
1 δ s = {(a, d 2 ) ∈ Es } 1
process-finding(d)
δ
applyrule-forward(C2) applyrule-backward(C1)
1 δ
1 δ
findout(d2)
applyrule-forward(C1)
1
perform(C2) conclude(C2) S(n) δ
1 1
test-hypothesis(d2)
perform(a) δ
perform(C1) conclude(C1)
applyrule-backward(C1)
S(n-1)
49
network schema and looking at the diagram 3.13, p.49 we notice that:
(3.2) S (2) = 5 + 2 :
We will upperbound S (n) by using the "guess-method" ([34]). Specically, we guess
that
S (n) = O(3n):
Thus our inductive hypothesis is that:
(3.3) S (n ; 1) c3(n;1)
50
It is easy to check that if c = 5 + and 2 then both the inductive step and the
boundary condition hold for all n 2. This case with = 1 is trivial since then
S (n) = O(n). Thus we just proved S (n) = O(3n) and Swhole (n) = O(3n).
Strategy chains are acyclic by denition. Therefore in any particular strategy chain
all the nodes are distinct. Taking into account denitions 3.5.2, p.46 and 3.5.1, p.45 we
conclude that any strategy chain has no more than ng dg vertices13. Thus, the height n
of the entire strategy network tree is limited by ng dg .
Combining everything together we conclude that the total size (number of edges) of
all strategy chains starting with process-finding(h) is O(3ng dg ) edges.
Theorem 3.5.2 The following are upper bounds on the total number of the strategy
chains generated from a blackboard Bi = hFi ; Hi i:
1. There are no more than hrfi (fB + bB) chains starting with process-hypothesis(h)
where h 2 Hirf .
2. There are no more than hi chains starting with explore-hypothesis( h) where
h 2 Hi .
3. There are no more than firf (fB + bB) chains starting with process-finding( f)
where f 2 Firf .
13
This holds since domain-level arguments of the strategy goals are carried throughout the strategy
chain unmodied.
51
B chains starting with
4. There are no more than di rm remove-datum( d) where d 2
Fi [ Hi .
52
Corollary 3.5.3 If all the free-form predicates in the domain rules take O(1) time to
compute then the deliberation time is linear in the total number of ndings and hypotheses
currently posted on the blackboard.
Proof follows directly from corollary 3.5.2, p.52 and theorem 3.5.3, p.52.
53
Given the next move function (qt ;
it ; q0 ;
0 ; move) the next state at time t + 1 is then
dened as:
1. qt+1 = q0 ;
2.
t+1 =
0 ;
3. it+1 = it + 1 if move = R;
4. it+1 = it ; 1 if move = L.
54
(c) is_hypothesis([next_head,I1,P]) and is_hypothesis([next_tape,I,Y])
represent the same type of information but for the next time tick.
3. We can have one action only: is_action([halt]) which signals reaching an ac-
cepting state.
4. The rules are used to simulate Turing Machine operation. Figure 3.14, p.56 shows
the rules.
Remark. It is interesting to notice that this proof uses Minerva deliberation mechanism
only. No scheduler is needed since all the actions except [halt] are internal.
Example 3.6.1 We will show an encoding for Turing Machine which accepts any string
of form 1 and converts all 1's to x's. The mathematical and Minerva-style programs are
given in gure 3.15, p.57.
3.7 Implementation
Minerva-5 is written in Prolog. It communicates with the other modules through an
ODBC interface by posting and reading messages to/from an Microsoft-Access table.
See section 3.8.2, p.60 for additional details. We have been using dierent versions of
LPA Prolog (e.g. 3.4, 3.5, etc.) to run it on a PC under MS Windows 95 or MS Windows
NT. Minerva can run as a task concurrently with other tasks but the best performance is
achieved is when it is given a whole networked machine (see section D.2, p.160 for more
details).
Large fragments of Minerva-5 Prolog code are given in Appendix B, p.89.
55
%% Moving Head (#1) -- right move, create new head state
ccf(r_hm1,1,3,[head,I,Q],818,[next_head,I1,P],818,[I,P,Q,X,I1]) :- add1(I,I1).
ccf(r_hm1,2,3,[tape,I,X],818,[next_head,I1,P],818,[I,P,Q,X,I1]) :- add1(I,I1).
ccf(r_hm1,3,3,[move,Q,X,P,Y,r],818,[next_head,I1,P],818,[I,P,Q,X,I1]) :- add1(I,I1).
ccb(r_hm1,1,3,[head,I,Q],818,[next_head,I1,P],818).
ccb(r_hm1,2,3,[tape,I,X],818,[next_head,I1,P],818).
add1(A,B) :-
nonvar(A),!,
TMP is A+1,
B = TMP,!.
add1(_,_).
sub1(A,B) :-
nonvar(A),!,
TMP is A-1,
B = TMP,!.
sub1(_,_).
Minerva encoding:
finding([init_head,0,q0],818)).
% Tape: 111bbbbb.....
finding([init_tape,0,1],818).
finding([init_tape,1,1],818).
finding([init_tape,2,1],818).
% Moves
finding([move,q0,1,q0,x,r],818)).
finding([move,q0,b,q1,b,r],818)).
%% Accepting states: q1
finding([accept,q1],818).
57
3.8 Application to the Navy Damage Control Do-
main
3.8.1 Domain Background
This section will provide us with a brief domain introduction. Further information could
be found in [2], [3].
We are concerned with the task of the DCA (Damage Control Assistant). The DCA
is an ocer aboard a Navy ship. Many of the DCA's tasks are similar across various
platforms; however, we will focus on Arleigh Burke class destroyers. A representative of
the class (DDG-51) is shown in gure 3.16, p.59.
Brie
y speaking the DCA is concerned with maintaining ship readiness in a com-
bat situation (i.e. when the crises happen). Typically the crises (re,
ood, rupture,
equipment failures, personnel casualties, etc.) are caused by primary damage events (e.g.
missile/torpedo/mine hits; internal explosions, ignitions, etc.) and secondary damage
events (e.g. re/
ood/smoke propagation). The following main tasks are related to crisis
management:
1. maintaining situation awareness;
2. containing/extinguishing res;
3. dealing with
oods;
4. dealing with smoke;
5. maintaining damage control subsystems (e.g. remain);
6. maintaining other vital systems (e.g. chillwater).
The DCA is physically located in the Damage Control Central (DCC) and communi-
cates with other stations (Repair-2,3,5,8; CSMC; CIC; CHENG; EOOW; Aft/Fwd BDS;
CO; etc.) through phone talkers. Figure 3.17, p.59 shows the location of four major
repair stations (Repair-2,3,5,8) and their areas of jurisdiction.
58
Figure 3.16: DDG-51 Arleigh Burke Destroyer
59
The communications include reports to the DCA from the dierent stations and
DCA's orders. The repair stations are capable of performing the following major tasks:
1. investigation to establish a status of a specic space/system on the ship;
2. setting up and maintaining re boundaries to prevent re spread;
3. reghting to put out a re;
4. setting up and maintaining smoke boundaries to prevent smoke spread;
5. securing
ooded spaces (setting
ood boundaries);
6. dewatering spaces;
7. manual operation of various equipment (e.g. shutting valves);
8. repairing dierent kinds of damage.
Appendix A, p.86 presents us with
ow charts for a subset of DCA's actions at a very
high-level. The charts probably don't even cover 5% of the variety of DCA's tasks, thus
clearly indicating the vast complexity of the control domain.
All of the tasks are subject to concurrency, time pressure, task/crisis interaction, and
shortage of resources. This makes the task very challenging even for well trained Navy
personnel with years of experience ([9]).
60
3. Scenario generator { an auxiliary module helping the instructor to build a useful
scenario.
4. State of the world (ship) database containing time-ordered world snapshots
and also serving as a common knowledge repository to provide the modules with
the domain data and to interface them together.
5. Physical simulator and intelligent agents simulating physical processes (com-
bustion,
ooding, etc.) and human/mechanical agents eects (investigation, re
ghting, etc.). DCTrain has an agent for each ship station. The agents use the
common knowledge base to communicate with each other.
6. Minerva-5 doing problem-solving, advising, and student critiquing.
Typically the system is used as follows:
1. Training objectives (e.g. handling small res) are specied through the instructor
interface.
2. The scenario generation module takes them as an input and produces appropriate
primary damage specications.
3. Simulator and intelligent agents simulate the crisis development which is presented
to the student through the immersive multimedia interface.
4. The student uses the interface to order dierent damage control stations (simulated
by the intelligent agents) to handle the crisis.
5. Minerva-5 is solving the same scenario on its own but instead of operating the
simulator it uses its generated and ranked actions for advising and critiquing the
student.
61
Simulator
State of the
world Intelligent Agents
Database
Scenario
Generator
62
Student
Multimedia
Interface Minerva-5
Instructor
Interface
63
Simulator
++
Smart Sensors State of the Intelligent
world Agents/Objects
64
problem-solving
••problem-solving
explanation
••explanation
learning
••learning
Supervisory
Interface
65
3.9 Evaluation
3.9.1 Theoretical Evaluation of the Proposed Approach
The expert shell constructed appears to have sound foundation insomuch as the following
aspects are concerned:
1. Deliberation cycle is computationally feasible since it takes time linear in the num-
ber of ndings and hypotheses (section 3.5, p.45).
2. Deliberation mechanism is a universal computing device (section 3.6, p.53).
3. Board evaluation method is appropriate for the domain as it achieves high cross-
validation accuracy (section B.4, p.118).
66
Evaluation Setup. To address the two issues mentioned above we tested SWOS s-
tudents, Minerva-4, and Minerva-5 on 160 damage control scenarios simulated in the
DCTrain immersive multimedia environment. For each scenario the following parame-
ters were recorded:
1. Complete primary damage specications were logged as n blasts descriptions. Each
blast was described by its compartment, 3-value parameter vector (as DCTrain
requires), and the blast time.
2. Outcome of the scenario was dened as follows:
(a) "dead" if a kill-point was reached within the rst 25 minutes of the scenario;
(b) "survived" if no kill-point was reached but some res didn't get extinguished
within the rst 25 minutes of the scenario;
(c) "victory" if all the res were extinguished and no kill-point was reached within
the rst 25 minutes.
3. Average cycle time was recorded for Minerva-4 and Minerva-5 as the time spent
per cycle averaged over all cycles starting from the rst damage report and ending
at the last damage-related message.
The detailed transcripts for all 480 runs are presented in section D.2, p.160.
Minerva-4/5 vs. SWOS students. To address the rst target of our evaluation
we collected some statistics on the scenario outcomes. The number of scenarios where
SWOS students and Minerva-4/5 died, survived, or won are presented in table 3.1, p.68
and graph 3.20, p.68. The fact that Minerva-4 and Minerva-5 are better than students
is statistically signicant.
Minerva-4 vs. Minerva-5. To address the second target of our evaluation (Minerva-
5 scheduler performance) we compare Minerva-4 and Minerva-5 performance on the 160
67
Outcome SWOS Students Minerva-4 Minerva-5
Dead 39 28 21
Survived 93 22 22
Victorious 28 110 117
Total 160 160 160
140
117
120 110
100 93
80
60
39
40 28 28
21 22 22
20
0
Dead Survived Victorious
68
scenarios. It is important to note that at the time Minerva-5's Extended Petri Nets
predictor was just implemented, barely debugged, and no tuned optimally.
However as table 3.1, p.68 and graph 3.20, p.68 show, even with the beta-version
of Extended Petri Nets predictor Minerva-5 slightly outperforms Minerva-4. We also
investigated the possibility that this performance increase is caused by a more frequent
cycling. That would certainly decrease Minerva-5's response time and help in involved
scenarios. However, as table 3.2, p.69 and graphs 3.21, p.70, 3.22, p.70, 3.23, p.71
show Minerva-5's average cycle time is actually greater than Minerva-4's. Therefore
the performance increase is not caused by a faster cycling. Since the only signicant
dierence between Minerva-4 and Minerva-5 is the scheduling layer, we conclude that
the performance increase is likely to be due to the more intelligent scheduling.
Minerva-4
Parameter Overall Dead Survived Victorious
Min Avg Cycle Time 0.054 0.061 0.162 0.054
Max Avg Cycle Time 4.853 4.833 3.986 4.853
Avg Avg Cycle Time 1.627 1.560 1.642 1.614
Minerva-5
Parameter Overall Dead Survived Victorious
Min Avg Cycle Time 0.051 0.057 0.129 0.051
Max Avg Cycle Time 11.778 11.778 3.962 11.740
Avg Avg Cycle Time 2.711 3.535 2.328 2.604
69
Min Avg Cycle Time
0.180
0.162
0.160
0.140 0.129
0.120
0.100
0.080
0.057 0.061
0.060 0.051 0.054 0.051 0.054
0.040
0.020
0.000
Overall Dead Survived Victorious
Minerva-5 Minerva-4
10.000
8.000
2.000
0.000
Overall Dead Survived Victorious
Minerva-5 Minerva-4
70
Avg Avg Cycle Time
4.000
3.535
3.500
2.000
1.627 1.560 1.642 1.614
1.500
1.000
0.500
0.000
Overall Dead Survived Victorious
Minerva-5 Minerva-4
3.9.2.4 Summary
The beta-implementation of Minerva-DCA shows an impressive performance in the Dam-
age Control domain. In particular, Minerva-5 greatly outperforms Navy SWOS graduates
(73% vs. 18% of victorious scenarios correspondingly) in the DCTrain simulated envi-
ronment. The theoretical extensions of the Minerva-4 blackboard architecture turn out
to improve the problem-solving performance through better scheduling. As a result, the
beta version of Minerva-5 outperforms Minerva-4 despite its slower cycle-operation.
71
The explanatory facility implemented up to date features a natural language output
and a graphical user interface. It will serve as a foundation for the upcoming advising
and critiquing add-on modules.
72
Chapter 4
Related Work
4.1 Medical Diagnosis Expert Systems
4.1.1 MYCIN
A "grandfather" of many modern expert systems, including Minerva, MYCIN is an expert
system for diagnosing bacterial blood infections and prescribing treatment [13].
Technically speaking MYCIN's diagnostic module is mostly a backward chainer with
some meta-level knowledge and a preview mechanism introduced mainly for optimization
purposes. MYCIN performs a dialog with the user to collect necessary evidences which
would allow it to diagnose a patient's disease. MYCIN has been implemented in LISP
and reasons over a purely rule-based database. A condence factor (CF) mechanism is
used to handle uncertainty issues. A similar mechanism is used in Minerva.
There has been a lot of research showing a strong necessity for an antibiotic drug
prescription aid. The basic idea is that lab tests to precisely identify the infection take
too long. This leaves a physician with two choices: (a) to use wide-coverage drugs which
are typically less eective or (b) to use disease-specic drugs given some relatively-easy-
to-get evidences. MYCIN's goal is to help the physician along the second direction.
MYCIN has been proven to be very eective in its domain, though some people have
remarked that the domain is quite narrow and has a combinatorial nature ([13]).
73
Backward chaining easily allows for explanation and MYCIN is equipped with a
natural language generator for them.
An attempt to use MYCIN for tutoring resulted in creating GUIDON: a MYCIN-
based tutoring system. While being successful the system left a considerable space for
development. Further research has resulted in creating many other systems such as
NEOMYCIN, Minerva, etc. Refer to Minerva history section 4.2.2, p.76 for further
detail.
4.1.2 NEOMYCIN
NEOMYCIN was one of the MYCIN extensions [14]. One of the major changes was
creating an explicit strategy layer. Parts of this layer have been extracted from MYCIN's
domain knowledge where there were represented implicitly (e.g. encoded by the order of
premises). Other parts have been created from scratch.
Control knowledge in NEOMYCIN is based on the concept of task. The tasks are or-
ganized hierarchically with strategy (a.k.a. meta) rules representing transitions between
them.
This framework, while being eective for medical diagnosis problem-solving and tu-
toring, turned out to be not so eective for critiquing and apprenticeship learning ([11]).
This shortcoming of NEOMYCIN eventually resulted in the creation of Minerva.
74
2. Reasoning system constitutes the largest part of Guardian. It is centered around
the blackboard containing knowledge, reasoning results, and the cognitive state.
The reasoning process has two types of reactions:
(a) fast re
ex reactions that don't really require reasoning but rather execute
certain actions in response to the critical ndings;
(b) slow cognitive reactions which actually involve opportunistic reasoning.
Guardian's knowledge contains domain knowledge and reasoning or strategy knowl-
edge. Reasoning results include intermediate and nal products of the reasoning
tasks: ndings, hypotheses, diagnoses, predictions, plans, etc. And nally the cog-
nitive state consists of an event buer containing asynchronous incoming ndings
and cognitive events produced by reasoning; an agenda holding executable reason-
ing operations; and the next operation. The system works in cycles involving the
concept of control plan.
3. Action systems control the execution of the actions. Guardian is capable of manip-
ulating ventilation settings, recommending other interventions, etc.
The system has been tested in a simulated environment with a sophisticated physical
patient model and has shown impressive performance. Specically, it outperformed ICU
nurses and physicians in prompt diagnosis and proper response on numerous realistically
simulated scenarios ([16]).
However, despite impressive problem-solving performance, the system currently lacks
some important features including:
1. natural language explanations of its behavior;
2. critiquing facility;
3. non-apprenticeship type tutoring.
75
4.2.2 Minerva Family
Minerva-2 ([18]) and Minerva-3 ([11]) have been developed at the Knowledge-Based Re-
search Group at the University of Illinois at about the same time. Both of them are
based on ProHC which in turn was based on Proneo. Proneo was mainly a Prolog reim-
plementation of NEOMYCIN. The Minerva-2 and Minerva-3 projects, however, pursued
slightly dierent research directions. Minerva-2 research focused on scheduling issues as
well as recursive heuristic classication approach ([10]). The research on Minerva-3, on
the other hand, focused on strategy layer and its reusability for critiquing.
Just as the transition from MYCIN to NEOMYCIN resulted in creating an addition-
al knowledge layer (strategy knowledge), the transition from NEOMYCIN to Minerva-
2,3 resulted in creating one more explicit knowledge layer: scheduling knowledge (see
gure 4.1, p.77). This additional layer has allowed for critiquing and apprenticeship
learning.
Minerva-4 ([20]) has been developed on the base of Minerva-3. With real-time control
domains in mind all Minerva-3 knowledge layers have been completely rewritten and
signicantly extended while the inference engine has been considerably modied and
streamlined. This allowed Minerva-4 be the rst expert system of this family achieving
real-time performance.
However, rule-based and handcoded scheduling layer of Minerva-4 didn't allow for
taking a full advantage of the blackboard architecture and hindered its performance in
complex scenarios. Minerva-5 was developed on the base of Minerva-4 by going away from
domain-independent rule-based scheduling knowledge and substituting it with qualitative
prediction and state evaluation knowledge (gure 4.1, p.77). This renement improved
dynamic scheduling and thus boosted all of Minerva's features: problem-solving, advising,
and critiquing.
76
Inference
Engine
State
Inference Inference
Evaluation
Engine Engine
Knowledge
Qualitative
Inference Scheduling Scheduling
Prediction
Engine Knowledge Knowledge
Knowledge
static →
dynamic
77
Inference Stategy Strategy domains Strategy Strategy
Engine Knowledge Knowledge Knowledge Knowledge
78
Despite those severe diculties, HASP/SIAP proved to be a successful blackboard
system. At a very high-level the architecture consisted of the following modules:
Blackboard represented the current best hypothesis (CBH). CBH was partitioned into
multiple levels from raw hydrophone spectra to information about whole
eets.
Technically CBH was organized into an AND-tree with local alternatives. Its nodes
were called "hypothesis elements".
Knowledge sources operated on the information in the blackboard at various level-
s. The knowledge sources were rule-based implementations of the model-driven
approach.
Control data was used to direct the problem-solving process and consisted of:
Event list recording changes to the blackboard. One of the changes was selected
and represented the "attention focus".
Expectation list carrying some expected data (e.g. acoustic signatures of plat-
forms anticipated from intelligence reports). Every once in a while, the list
was searched to see if the data had arrived.
Problem list representing currently open problems as well as missed and desired
information. Example: a knowledge source could post a currently unavailable
piece of information that would increase the condence in some hypothesis if
it were available.
Clock-event list scheduling execution of certain rules.
History list logging system activity and used for explanation and debugging pur-
poses.
Control modules were rule-based and consisted of:
Strategy KS deciding which category of control knowledge to focus on next.
Control managers (one for each of the control knowledge categories) selecting
which datum in the category to focus on. Focusing on a control knowledge
79
datum led to executing domain-level knowledge sources and thus updating the
blackboard.
While being blackboard-based systems and operating in a dynamic real-world domain,
Minerva-5 and HASP have a number of distinctions including:
1. HASP is primarily concerned with the task of situation awareness and dynamic
classication. Minerva's functions are much wider and, in addition, include: casu-
alty response, human problem-solver NL advising, NL critiquing, and performance
measurements.
2. Minerva has been actively using non-rule-based knowledge such as Articial Neural
Networks and Petri Nets.
3. Minerva's environment often changes very rapidly and often a datum comes once
only. In HASP the environment changes are relatively slow and the data readings
are quite repetitive.
4. HASP control knowledge was the rst attempt to separate control and domain-level
knowledge. It was still kept rule-based and was processed in a special way. Minerva-
5 employs a sophisticated qualitative simulation and state evaluation scheduler.
80
Chapter 5
Thesis Contributions and
Conclusions
5.1 Contributions
This section will summarize the theoretical and practical contributions of the author
described in this thesis. In that way it is dierent from chapter 5.2, p.83 which provides
a comprehensive project summary.
81
2. Extending classical Petri Nets ([5]) typically used for modeling of parallel sys-
tems behavior at a logical level. The extended formalism (Extended Petri Nets
(EPNs)) allows for a beyond-logical-level high-quality qualitative prediction while
still being computationally ecient (section 3.2.4, p.21).
3. Devising a static state evaluator to work together with the predictor as a
part of the new scheduling layer. The design is simple in concept, computationally
ecient, and easily inducible from a handful of scenarios in a unsupervised manner
(section 3.2.5, p.23).
4. Devising performance measuring and critiquing mechanisms to extend
Minerva functionality (section 3.3.4, p.30).
5. Analyzing the complexity of the deliberation module. The analysis shows
the deliberation scheme to be linear timewise in the size of domain blackboard and
thus computationally feasible (section 3.5, p.45).
6. Showing equivalence to Turing Machine proves that Minerva framework and
the deliberation mechanism is indeed a universal computational device (section 3.6,
p.53).
82
(a) domain knowledge layer;
(b) strategy knowledge layer;
(c) EPN predictor layer;
(d) state evaluator layer (inductive learning setup, trace collection, classier (ANNs,
K-maps, C5.0) implementation);
(e) utility computation module;
(f) ODBC-based interface to the DCTrain environment;
(g) explanatory GUI;
(h) advising GUI;
(i) critiquing GUI;
(j) performance measure utility.
3. Setting up Minerva-DCA as an instructor-aid in DCTrain training environ-
ment (section 3.8.2, p.60).
4. Setting up Minerva-5 as a foundation of the Situation Awareness and
Casualty Response system in the DC-ARM project (section 3.8.3, p.63).
5.2 Conclusions
5.2.1 Thesis Summary
This thesis describes a research project on building a versatile expert system shell and
its applications. The system presented, Minerva-5, is an attempt to use blackboard
architectures for dynamic control, advising, and critiquing.
The concepts of blackboard and deliberate-schedule-execute cycle operation have been
well-known and exploited in dierent areas ([18], [11], [20]). Our work extends this ap-
proach by rening the scheduling stage into qualitative prediction and state evaluation
83
substages. This renement turns out to improve all Minerva-5 functions (control, advis-
ing, and critiquing).
In order to support the extended framework, we found it ecient and convenient to
employ various AI paradigms (such as rule-based reasoning, Petri Nets, articial neural
networks) as knowledge sources of an integrating blackboard architecture. Such a setup
naturally provides for multiple levels of abstraction and opportunistic reasoning ([21])
and thus eciently addresses dierent reasoning subtasks (such as classication, predic-
tive simulation, and scheduling). It also facilitates low-cost explanatory and critiquing
facilities which normally come at a high expense.
As a mathematical analysis shows, the Minerva-5 deliberation process is computa-
tionally feasible while Minerva is a universal computational device (i.e. equivalent to
Turing Machine).
The framework has been tested in the domain of Damage Control on the NAVY bat-
tleships and achieved an expert-level performance in the simulated environment DCTrain
([28]).
84
3. Certain ndings might indicate vital events that require immediate response. Min-
erva's reasoning mechanism might not have enough time for inference. Thus it
might be advisable to have an additional "fast-re
ex" mechanism with hardwired
reactions.
4. Importance/utility of a nding or a hypothesis is generally not constant but changes
over time. In our approach we have used an Extended Petri Nets predictor and a
board evaluator to assess importance of the ndings and hypotheses. An alternative
approach would be to use a partially hardwired module for that task. Such a module
called TRM (Temporal Resource Manager) has been developed at KBS ([24]). A
comparative performance analysis of those two approaches would be of interest.
5. Currently Minerva-5 critiquing and performance measuring is based on action
matching (section 3.3.4, p.30). This approach is computationally ecient, but
rather limited to scenarios with a narrow set solution paths. In other words, qual-
ity of the critique delivered drops if there are radically dierent but equally good
solution paths. Alternative approaches include:
(a) Evaluating subject's actions using the EPN predictor and the state evaluator
as described in section 2.2.3, p.7. Although being more graceful to multiple so-
lution paths, this approach is still a subject to the same problem (section 2.2.4,
p.9).
(b) Inferring subject's goals and intentions and using them to critique. This ap-
proach seems to be closer to what human instructors use; however, it is also
a subject to a number of problems and complications. Some of the aspects of
this approach for the Navy Damage Control domain have been researched in
[33].
(c) Perhaps a better critiquing performance could be achieved by a hybrid ap-
proach that uses action-matching-based critique when applicable and tries to
infer the subject's goals when possible.
85
Appendix A
DCA Doctrines
The following illustrations re
ect a subset of DCA responsibilities at a very high-level.
They are reproduced here to allow the reader to appreciate the complexity of the domain.
We appreciate S. Ramachandran's help on bringing them to KBS.
86
Figure A.2: DCA's responsibilities on investigation and setting FBs
87
Figure A.4: DCA's responsibilities on managing pressure drop on re main
88
Appendix B
Minerva-DCA knowledge layers
The following are Minerva-DCA knowledge layers.
%% FINDINGS
is_finding([alarm,AlarmType,Where,Time]).
is_finding([fire_report,From,Where,FireClass,Time]).
is_finding([fbs_report,From,SA,PA,PF,SF,Pbelow,Pabove,Time]).
is_finding([ff_progress,From,Where,Time]).
is_finding([fire_out,From,Where,Time]).
is_finding([permission_flood_granted,Station,Space,Time]).
is_finding([no_pers_avail,Station,Time]).
is_finding([mrzp,Station,Time]).
is_finding([mrzs,Station,Time]).
is_finding([request_mrz,Time]).
is_finding([granted_start_pump, Station, Time]).
redflag([alarm,_,_,_]).
redflag([fire_report,_,_,_,_]).
89
redflag([no_pers_avail,_,_]).
redflag([request_mrz,_]).
redflag([mrzs,dcco,_]).
redflag([fire_out,_,_,_]).
%% HYPOTHESES
is_hypothesis([fire,Where,FireClass,Status,Time]).
is_hypothesis([mrzs,Time]).
redflag([fire,_,_,discovered,_]).
%% ACTIONS
is_action([invest_f,Station,Where]).
is_action([fight_fire,Station,Where]).
is_action([setfb,Station,Where,SA,PA,PF,SF,Pbelow,Pabove]).
is_action([flood, Station, Space]).
is_action([request_permission_flood, Station, Space]).
is_action([report_mrzp]).
is_action([report_mrzs]).
is_action([request_mrz_status,Station]).
is_action([thmrz]).
is_action([request_start_fp, Station]).
is_action([start_fp, Station, FP]).
is_action([close_valve, Station, Sys, Valve]).
is_action([open_valve, Station, Sys, Valve]).
%% FINDINGS SOURCES
source([fire_report,StationR,Where,FireClass,Time],[invest_f,Station,Where]) :-
ja(Where,Station).
%% source([fbs_report,StationR,SA,PA,PF,SF,PBelow,PAbove,Time],
[setfb,Station,SA,PA,PF,SF,PBelow,PAbove]) :-
%% fb(Where,SA,PA,PF,SF,PBelow,PAbove),
%% ja(Where,Station).
source([permission_flood_granted,Station,Space,Time],
[request_permission_flood,co,Space]).
%% bother the stations with status only if the CO asks it at the 2nd time
90
source([mrzs,Station,Time], [request_mrz_status,Station]) :-
satisfied([request_mrz,Time1],800),
satisfied([request_mrz,Time2],800),
Time1 \= Time2.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Normal Rules: populate the BB with new hypotheses
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ccf(r1010,1,1,[fire_report,From,Where,FireClass,Time],800,
[fire,Where,FireClass,discovered,Time],818,[]).
ccb(r1010,1,1,[fire_report,From,Where,FireClassRep,TimeRep],800,
[fire,Where,FireClass,Status,Time],818).
ccf(r1012,1,1,[alarm,fire,Where,Time],800,[fire,Where,FireClass,
discovered,Time],666,[]).
ccb(r1012,1,1,[alarm,fire,Where,TimeAlarm],800,[fire,Where,FireClass,
Status,Time],666).
ccf(r1020,1,1,[fire,Where,FireClass,discovered,TimeD],800,
[fight_fire,Station,Where],818,[]) :-
\+ vital_space(Where),
ja(Where,Station).
ccf(r1021,1,1,[fire,Where,FireClass,discovered,TimeD],800,
[setfb,Station,Where,SA,PA,PF,SF,PBelow,PAbove],818,[]) :-
fb(Where,SA,PA,PF,SF,PBelow,PAbove),
91
\+ vital_space(Where),
ja(Where,Station).
ccf(r1022,1,2,[ff_progress,Station,Where,Time],800,
[fire,Where,FireClass,fought,Time],818,[Where,FireClass,Time]).
ccf(r1022,2,2,[fire,Where,FireClass,discovered,TimeD],800,
[fire,Where,FireClass,fought,Time],818,[Where,FireClass,Time]).
%% R1030: When the fire is being tackled and "fire out" report
%% comes we assert "fire out" hypothesis
ccf(r1030,1,2,[fire_out,Station,Where,Time],800,
[fire,Where,FireClass,out,Time],818,[Where,FireClass,Time]).
ccf(r1030,2,2,[fire,Where,FireClass,out,TimeFF],no,
[fire,Where,FireClass,out,Time],818,[Where,FireClass,Time]).
ccf(r1040,1,1,[no_pers_avail,Station,_],800,[fight_fire,StationNew,Where],
818,[]) :-
ordered([fight_fire,Station,Where],_),
repair_locker(StationNew),
\+ satisfied([no_pers_avail,StationNew,Time1],800),
!.
%% R1050: Instead of fighting fire flood the space if it is vital and on fire
ccf(r1050,1,2,[fire,Space,FireClass,discovered,TimeD],800,
[flood,Station,Space],818,[Space,Station]) :-
vital_space(Space),
ja(Space,Station).
ccf(r1050,2,2,[permission_flood_granted,StationG,Space,Time],
800,[flood,Station,Space],818,[Space,Station]).
ccb(r1050,1,2,[fire,Space,FireClass,discovered,TimeD],800,
[flood,Station,Space],818) :-
vital_space(Space),
ja(Space,Station).
ccb(r1050,2,2,[permission_flood_granted,StationG,Space,Time],800,
[flood,Station,Space],818) :-
92
vital_space(Space),
ja(Space,Station).
ccf(r1052,1,1,[fire,Space,FireClass,discovered,TimeD],600,
[request_permission_flood,co,Space],818,[]) :-
vital_space(Space).
%% If MRZ set throughout the ship and the CO wants it, give it to him
ccf(r1060,1,2,[request_mrz,Time],800,[report_mrzs],818,[]).
ccf(r1060,2,2,[mrzs,Time1],800,[report_mrzs],818,[]).
ccb(r1060,1,2,[request_mrz,Time],800,[report_mrzs],818).
ccb(r1060,2,2,[mrzs,Time1],800,[report_mrzs],818).
ccf(r1062,1,2,[request_mrz,Time],800,[report_mrzp],818,[]).
ccf(r1062,2,2,[mrzs,Time1],no,[report_mrzp],818,[]).
ccf(r1064,1,9,[mrzs,r2,_],800,[mrzs,TimeR3],818,[TimeR3]).
ccf(r1064,2,9,[mrzs,r3,TimeR3],800,[mrzs,TimeR3],818,[TimeR3]).
ccf(r1064,3,9,[mrzs,r5,_],800,[mrzs,TimeR3],818,[TimeR3]).
ccf(r1064,4,9,[mrzs,aftbds,_],800,[mrzs,TimeR3],818,[TimeR3]).
ccf(r1064,5,9,[mrzs,fwdbds,_],800,[mrzs,TimeR3],818,[TimeR3]).
ccf(r1064,6,9,[mrzs,bridge,_],800,[mrzs,TimeR3],818,[TimeR3]).
ccf(r1064,7,9,[mrzs,eng,_],800,[mrzs,TimeR3],818,[TimeR3]).
ccf(r1064,8,9,[mrzs,dcco,_],800,[mrzs,TimeR3],818,[TimeR3]).
ccf(r1064,9,9,[mrzs,csmc,_],800,[mrzs,TimeR3],818,[TimeR3]).
ccb(r1064,1,9,[mrzs,r2,_],800,[mrzs,TimeR3],818).
ccb(r1064,2,9,[mrzs,r3,_],800,[mrzs,TimeR3],818).
ccb(r1064,3,9,[mrzs,r5,_],800,[mrzs,TimeR3],818).
ccb(r1064,4,9,[mrzs,aftbds,_],800,[mrzs,TimeR3],818).
ccb(r1064,5,9,[mrzs,fwdbds,_],800,[mrzs,TimeR3],818).
ccb(r1064,6,9,[mrzs,bridge,_],800,[mrzs,TimeR3],818).
ccb(r1064,7,9,[mrzs,eng,_],800,[mrzs,TimeR3],818).
ccb(r1064,8,9,[mrzs,dcco,_],800,[mrzs,TimeR3],818).
ccb(r1064,9,9,[mrzs,csmc,_],800,[mrzs,TimeR3],818).
93
%% If MRZ was already given to the captain but he
%% keeps bugging the DCA tell him to take a hike
ccf(r1066,1,1,[request_mrz,Time],800,[thmrz],818,[]) :-
ordered([report_mrzs],TimeR),
earlier(TimeR,Time).
ccf(r1070,1,2,[alarm,fm_low_pressure,Where,Time],800,
[start_fp, dcco, FP],818,[Where,FP]) :-
choose_fp(Where,FP).
ccf(r1070,2,2,[granted_start_pump, eoow, Time1],800,
[start_fp, dcco, FP],818,[Where,FP]).
ccb(r1070,1,2,[alarm,fm_low_pressure,Where,Time],800,
[start_fp, dcco, FP],818) :-
choose_fp(Where,FP).
ccb(r1070,2,2,[granted_start_pump, eoow, Time1],800,
[start_fp, dcco, FP],818).
ccf(r1080,1,1,[mrzs,dcco,Time],800,[close_valve, Station,
firemain, Valve],818,[]) :-
zebra_fm_valve(Valve),
fm_valve(Valve,Space,open),
ja(Space,Station).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Removal Rules -- KEEP THE BB CLEAN
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ccm(rem1011,1,2,[fire_report,From,Where,FireClass,TR],800,
[fire_report,From,Where,FireClass,TR],remove,[From,Where,FireClass]).
ccm(rem1011,2,2,[fire,Where,FireClass,discovered,_],800,
[fire_report,From,Where,FireClass,TR],remove,[From,Where,FireClass]).
ccm(rem1014,1,2,[alarm,fire,Where,TA],800,
[alarm,fire,Where,TA],remove,[Where,TA]).
ccm(rem1014,2,2,[fire,Where,FireClass,discovered,_],800,
94
[alarm,fire,Where,TA],remove,[Where,TA]).
ccm(rem1013,1,1,[fire,Where,FC,discovered,_],800,
[fire,Where,FireClass,discovered,Time],remove,[]) :-
hypothesis([fire,Where,FireClass,discovered,Time],CF),
CF < 800.
ccm(rem1024,1,2,[fire,Where,FireClass,fought,Time],800,
[fire,Where,FireClass,discovered,TimeD],remove,[TimeD,Where,FireClass]).
ccm(rem1024,2,2,[fire,Where,FireClass,discovered,TimeD],800,
[fire,Where,FireClass,discovered,TimeD],remove,[TimeD,Where,FireClass]).
ccm(rem1032,1,2,[fire,Where,FireClass,out,Time],800,
[fire,Where,FireClass,fought,TimeFF],remove,[Where,FireClass,TimeFF]).
ccm(rem1032,2,2,[fire,Where,FireClass,fought,TimeFF],800,
[fire,Where,FireClass,fought,TimeFF],remove,[Where,FireClass,TimeFF]).
ccm(rem1034,1,2,[fire,Where,FireClass,out,Time1],800,
[fbs_report,Station,SA,PA,PF,SF,Time],remove,[Where,FireClass,Time,Station]).
ccm(rem1034,2,2,[fbs_report,Station,SA,PA,PF,SF,Time],800,
[fbs_report,Station,SA,PA,PF,SF,Time],remove,[Where,FireClass,Time,Station]).
ccm(rem1036,1,2,[fire,Where,FireClass,out,Time1],800,
[ff_progress,Station,Where,Time],remove,[Where,FireClass,Time,Station]).
ccm(rem1036,2,2,[ff_progress,Station,Where,Time],800,
[ff_progress,Station,Where,Time],remove,[Where,FireClass,Time,Station]).
ccm(rem1038,2,2,[ff_progress,Station1,Where,Time],800,
[fight_fire,Station,Where],remove,[Station,Where]).
95
%% REM1040: "fire out" hypothesis removes "fire out" report
ccm(rem1040,1,2,[fire,Where,FireClass,out,Time1],800,
[fire_out,Station,Where,Time],remove,[Where,Time,Station]).
ccm(rem1040,2,2,[fire_out,Station,Where,Time],800,
[fire_out,Station,Where,Time],remove,[Where,Time,Station]).
ccm(rem1056,1,2,[report_mrzs],800,
[mrzs,Station,Time],remove,[Time,Station]).
ccm(rem1056,2,2,[mrzs,Station,Time],800,
[mrzs,Station,Time],remove,[Time,Station]).
ccm(rem1058,1,2,[report_mrzs],800,
[mrzp,Station,Time],remove,[Time,Station]).
ccm(rem1058,2,2,[mrzp,Station,Time],800,
[mrzp,Station,Time],remove,[Time,Station]).
96
fire,out
0
r103
fire_out
r1030
fire,fought
22
r10 fight_fire
ff_progress
0
04
r1
0
04
r1
r1022
50
1
r1050
r10
r102
20
r10
permission_to_fl fire,discovered
ood_granted
2
01
2
r1
0
05
01
r1
Legend
r1
forward and
datum backward edge
97
start_fp 70
r10
70
report_mrzp report_mrzs r10 granted_sta
fm_low_pres rt_pump
~ sure_alarm
r1062
request_start_fp
r1060
60
r10
62
r10
request_mrz mrzs
close_valve(zebra)
64
64 64
r10
4
r106 r1064
r10
r10
4
r106
4
64 64 06
r10 r10 r1
0
08
r1
mrsz,r2 mrsz,r3 mrsz,r5 mrsz,aftbds mrsz,fwdbds mrsz,bridge mrsz,eng mrsz,dcco mrsz,csmc
Legend
hypothesis action datum source edge forward and forward edge
backward edge
98
:- dynamic rule_fired/3.
:- dynamic finding/2.
:- dynamic ordered/2.
:- dynamic hypothesis/2.
always_expand(process_finding(X)).
mr(pf1,process_finding(F),applyrule_backward(Rule,Hyp)) :-
finding(F,_),
redflag(F),
ccb(Rule,N,M,F,CF,Hyp,CFC),
satisfied(F,CF).
mr(pf2,process_finding(F),applyrule_forward(Rule,Hyp)) :-
finding(F,_),
redflag(F),
ccf(Rule,N,M,F,CF,Hyp,CFC,UL),
satisfied(F,CF).
always_expand(process_hypothesis(X)).
mr(prh1,process_hypothesis(H),applyrule_backward(Rule,H1)) :-
hypothesis(H,_),
redflag(H),
ccb(Rule,N,M,H,CF,H1,CFC),
satisfied(H,CF).
mr(prh2,process_hypothesis(H),applyrule_forward(Rule,H1)) :-
hypothesis(H,_),
redflag(H),
ccf(Rule,N,M,H,CF,H1,CFC,UL),
satisfied(H,CF).
99
%% ----------------------- EXPLORE HYPOTHESIS --------------------
always_expand(explore_hypothesis(H)).
mr(eh1,explore_hypothesis(Hyp),pursue_hypothesis(Hyp)) :-
focus_differential(Hyp),
value(Hyp,unknown).
mr(ab1,applyrule_backward(Rule,Hyp),findout(Finding)) :-
ccb(Rule,_,_,Finding,_,Hyp,_),
\+ concluded(Finding).
mr(ab2,applyrule_backward(Rule,Hyp),applyrule_forward(Rule,Hyp)) :-
ccf(Rule,N1,M1,F,CF,Hyp,CFC,UL),
\+ rule_applied(Rule,Hyp).
mr(af1,applyrule_forward(Rule,Hyp),conclude(rule_fired(Rule,Hyp,CFC))) :-
satisfied_rp(Rule,Hyp,CFC),
is_hypothesis(Hyp),
\+ rule_applied(Rule,Hyp).
%% AF2: Post an action if the rule implies it and all the premises are met
mr(af2,applyrule_forward(Rule,Action),perform(Action,CFC)) :-
satisfied_rp(Rule,Action,CFC),
is_action(Action),
\+ ordered(Action,_).
always_expand(remove_datum(R,D)).
mr(rd1,remove_datum(Rule,Datum),remove(Datum)) :-
finding(Datum,_),
satisfied_rp_rem(Rule,Datum,remove).
100
mr(rd2,remove_datum(Rule,Datum),remove(Datum)) :-
hypothesis(Datum,_),
satisfied_rp_rem(Rule,Datum,remove).
adjust_cf(Hyp,Delta) :-
hypothesis(Hyp,Old),!,
New is Old + Delta,
retractall(hypothesis(Hyp,_)),
assert(hypothesis(Hyp,New)).
adjust_cf(Hyp,Delta) :-
assert(hypothesis(Hyp,Delta)).
rule_applied(Rule,Hyp) :-
rule_fired(Rule,Hyp,_).
mr(fo1,findout(H),test_hypothesis(H)) :-
is_hypothesis(H),
value(H,unknown).
mr(fo2,findout(F1),perform(A,800)) :-
is_finding(F1),
source(F1,A),!,
\+ ordered(A,_).
mr(fo3,findout(Param),lookup(Param)) :-
is_finding(Param),
\+ source(Param,A),!,
fstatus(Param,_,unknown).
101
mr(ph1,pursue_hypothesis(Hyp),test_hypothesis(Hyp)).
mr(th1,test_hypothesis(Hyp),applyrule_backward(Rule,Hyp)) :-
ccb(Rule,N,M,F,CF,Hyp,CFC),
value(Hyp,unknown),
\+ rule_applied(Rule,Hyp).
---------------------------------------------------------
satisfied(Param,CF) :-
number(CF),
hypothesis(Param,CF1),
CF1 >= CF.
satisfied(Param,CF) :-
number(CF),
finding(Param,CF1),
CF1 >= CF.
satisfied(Param,no) :-
\+ hypothesis(Param,_).
satisfied(Param,no) :-
hypothesis(Param,CF),
CF =< -800.
satisfied(Param,no) :-
\+ finding(Param,_).
satisfied(Param,no) :-
finding(Param,CF),
CF =< -800.
102
%% Single clause rules (N=M=1) could have UnifList=[]
:- dynamic ub/1.
satisfied_rp(Rule,C,CFC) :-
ccf(Rule,_,_,_,_,C,CFC,UnifList),
retractall(ub(_)),
assert(ub(UnifList)),
forall(
ccf(Rule,_,_,Finding,CF,C,CFC,UnifList),
(
satisfied(Finding,CF),
ub(UnifList),
retract(ub(_)),
assert(ub(UnifList))
)
),
ub(UnifList),
ccf(Rule,_,_,F,CF,C,CFC,UnifList), %% Those two lines are added
satisfied(F,CF), %% solely to support empty
%% Unifiying List for a single clause rule
retract(ub(_)).
satisfied_rp_rem(Rule,C,CFC) :-
ccm(Rule,_,_,_,_,C,CFC,UnifList),
retractall(ub(_)),
assert(ub(UnifList)),
forall(
ccm(Rule,_,_,Finding,CF,C,CFC,UnifList),
(
satisfied(Finding,CF),
ub(UnifList),
retract(ub(_)),
assert(ub(UnifList))
)
),
ub(UnifList),
ccm(Rule,_,_,F,CF,C,CFC,UnifList), %% Those two lines are added
satisfied(F,CF), %% solely to support empty
%% Unifiying List for a single clause rule
retract(ub(_)).
103
differential(Hyp) :-
hypothesis(Hyp,CF),
CF >= 200 .
focus_differential(Hyp) :-
hypothesis(Hyp,CF),
CF >= 500 .
concluded(X) :-
finding(X,CF).
concluded(X) :-
hypothesis(X,CF).
value(X,yes) :-
hypothesis(X,CF),
CF >= 800.
value(X,no) :-
hypothesis(X,CF),
CF =< -800.
value(X,unknown) :-
\+ hypothesis(X,_).
value(X,unknown) :-
hypothesis(X,CF),
CF < 800,
CF > -800.
fstatus(F,A,known) :-
finding(F,CF).
fstatus(F,A,unknown) :-
\+ fstatus(F,A,known).
fstatus(F,A,expected) :-
ordered(A),
source(F,A),
\+ fstatus(F,A1,known).
104
B.3 Extended Petri Nets Predictor
Our Prolog EPN predictor code is given below.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%epn.pl
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Some definitions:
%
%PLACE:
%place(SubnetID,PlaceID,WordDescribtion)
%
%MARKING:
%marking(SubnetID,PlaceID,ListOfTokens)
%
%TOKEN:
%Token is a list of the form: [TimeB,TimeE,[[LabelType1,
% Label1],...]]
%
%TRANSITION:
%transition(SubnetID,TransitionID,TimeMin,TimeMax,
% WordDescription,EnablingPlacesList,
% PropagationPlacesList)
%
%where:
% 'EnablingPlacesList' is defined as:
% [[TokenLabelTypeToMatch1, [EdgeType1,PlaceID1],...],
% [TokenLabelTypeToMatch2,..]]
%
%and 'PropagationPlacesList' is just:
% [[EdgeType1,PlaceID1],...]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%initializes any constants
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
epn_initialize :-
% spy(edge_spread_fire/2),
%vital spaces
retractall(vital_spaces_marking(_)),
assert(vital_spaces_marking([])),
105
forall(
vital_space(Space),
(
vital_spaces_marking(List),
retractall(vital_spaces_marking(_)),
append([[0,0,[[space,Space]]]],List,New_List),
assert(vital_spaces_marking(New_List))
)
),
%explosive compartments
retractall(explosive_comp_marking(_)),
assert(explosive_comp_marking([])),
forall(
flammable(Space),
(
explosive_comp_marking(List),
retractall(explosive_comp_marking(_)),
append([[0,0,[[space,Space]]]],List,New_List),
assert(explosive_comp_marking(New_List))
)
),
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% FOR DEBUGGING PURPOSES ONLY:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
test_prediction(Time) :-
clauses(marking(_,_,_),Initial_markings),
nl,write('INITIAL MARKINGS:'),nl,
print_list(Initial_markings),
predict(Time),
clauses(marking(_,_,_),Resulting_markings),
nl,write('RESULTING MARKINGS:'),nl,
print_list(Resulting_markings),
!.
106
print_list([Element|[]]) :-
write(Element),nl,!.
print_list([Element|More]) :-
write(Element),nl,
print_list(More).
%%%%%%%%%%%%%%%%%%%%%%%
% Step by Step testing
%%%%%%%%%%%%%%%%%%%%%%%
test_fire_transition(Time) :-
transition(Sub,ID,TimeMin,TimeMax,_,EnablingPlacesList,
PropagationPlacesList),
clauses(marking(_,_,_),Initial_markings),
enable_transition(EnablingPlacesList,0,100000000,MaxB,
MinE,Labels,Time - TimeMin),
NewTimeB is TimeMin + MaxB,
NewTimeE is TimeMax + MinE,
propagate(PropagationPlacesList,[[NewTimeB,NewTimeE,
Labels]]),
nl,write('INITIAL MARKINGS:'),nl,
print_list(Initial_markings),
nl,write('FIRING TRANSITION '''),write(ID),write(''''),nl,
write('Enabling places list: '),
write(EnablingPlacesList),nl,
write('Resulting labels: '),write(Labels),nl,
write('Propagating places list: '),
write(PropagationPlacesList),nl,
clauses(marking(_,_,_),Resulting_markings),
nl,write('RESULTING MARKINGS:'),nl,
print_list(Resulting_markings),!.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%The top level EPN routine
%%%%%%%%%%%%%%%%%%%%%%%%%%%
predict(Time) :-
retractall(spread(_)),
repeat,
\+ fire_transition(Time), !.
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Fires a single transition
107
%%%%%%%%%%%%%%%%%%%%%%%%%%%
fire_transition(Time) :-
transition(_,N,TimeMin,TimeMax,_,EnablingPlacesList,
PropagationPlacesList),
% nl,write('Transition '),write(N),
([[_,PropPlace1]|_] = PropagationPlacesList,
marking(_,PropPlace1,Tokens) -> true;Tokens = []),
enable_transition(EnablingPlacesList,Tokens,0,
100000000,MaxB,MinE,Labels,Time - TimeMin),
NewTimeB is TimeMin + MaxB,
NewTimeE is TimeMax + MinE,
propagate(PropagationPlacesList,[[NewTimeB,NewTimeE,
Labels]]).
% write(': success!'),nl.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% checks if transition is allowed to proceed, than creates
% a new label list and
% gets the min and max values for all tokens' time stamps
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
enable_transition([],_,B,E,B,E,[],Time) :-
!,
(B < Time ->
true;
% write(' skipping transition; MaxB = '),
write(B),write(' > Time = '),write(Time),nl,
false),!.
enable_transition([EnablingGroup1|MoreGroups],PropTokens,B,E,
MaxB,MinE,Labels,Time) :-
verify_markings(EnablingGroup1,_,_,CurrMaxBr,CurrMaxEr,
CurrMinBn,CurrMaxEn,Tokens),!,
NewB is max(CurrMaxBr,B),
NewE is min(min(CurrMaxEr,CurrMinBn),E),
(NewE < NewB -> fail;
enable_transition(MoreGroups,PropTokens,
NewB,NewE,MaxB,MinE,MoreLabels,Time),
extract_labels(Tokens,MoreLabels,Labels),
(member([_,_,Labels],PropTokens) ->
% write(' breaking loop...'),
fail
;
get_tokens(EnablingGroup1,Tokens))
).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%verifies that the given list of places matches the specified
108
%label type
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
verify_markings([MatchingType,[Edge,PlaceID]|MorePlaces],
Tokens,Label,MaxBr,MaxEr,MinBn,MaxEn,
[MatchedToken|MoreTokens]) :-
Edge(MatchingType,PlaceID,Tokens,MatchedTokens),
verify_markings([MatchingType|MorePlaces],MatchedTokens,
Label,PrevMaxBr,PrevMaxEr,PrevMinBn,
PrevMaxEn,MoreTokens),
verify_markings([_|[]],_,_,0,0,1000000000,0,[]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%verifies that a given marking contains the specified label
% type
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
match_token(_,[],_,_,_) :- fail,!.
match_token(MatchingType,[[TimeB,TimeE,Labels]|MoreTokens],
MaxB,MinE,MatchedToken,
Label) :-
member([MatchingType,Label],Labels) ->
(MatchedToken = [TimeB,TimeE,Labels],
MaxB is TimeB,
MinE is TimeE);
match_token(MatchingType,MoreTokens,MaxB,MinE,
MatchedToken,Label).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
109
%gets all tokens that will be propagated
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
get_tokens(_,[]) :- !.
get_tokens([MatchingType,[Edge,PlaceID]|MorePlaces],
[Token|MoreTokens]) :-
Edge(PlaceID,Token),
get_tokens([MatchingType|MorePlaces],MoreTokens),!.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%extracts all labels from a list of tokens and
% removes any repetitions
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
extract_labels([],Tokens,Tokens) :- !.
extract_labels([[_,_,Labels]|MoreTokens],Tokens,Result) :-
extract_labels(MoreTokens,Tokens,NewList),
((Labels == [[not_a_token]]) -> Result = NewList;
add_labels(Labels,NewList,Result)).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%concatenates labels to a list, if they are not
% already there
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
add_labels([],List,List) :- !.
add_labels([Label|MoreLabels],List,Result) :-
add_labels(MoreLabels,List,NewResult),
(member(Label,NewResult) -> Result = NewResult;
Result = [Label|NewResult]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Propagates the new token to all propagation places
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
propagate([],_) :- !.
propagate([[_,PlaceID]|MorePlaces],NewTokens) :-
marking(Subnet,PlaceID,Tokens) ->
(retract(marking(Subnet,PlaceID,Tokens)),
append(NewTokens,Tokens,NewList),
assert(marking(Subnet,PlaceID,NewList)),
propagate(MorePlaces,NewTokens));
place(Subnet,PlaceID,_),
assert(marking(Subnet,PlaceID,NewTokens)),
propagate(MorePlaces,NewTokens).
110
get_intersection(MatchingType,[Token|MoreTokens],
AvailableTokens,MatchedTokens) :-
get_intersection(MatchingType,MoreTokens,
AvailableTokens,OtherMatchedTokens),
(match_token(MatchingType,[Token],_,_,_,Label),
match_token(MatchingType,AvailableTokens,_,_,
MatchedToken,Label) ->
append([MatchedToken],OtherMatchedTokens,
MatchedTokens);
MatchedTokens = OtherMatchedTokens).
get_intersection(_,[],_,[]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Below are definitions of all types of edges.
% Add new, if needed, but they must be
%in two versions:
%
% 1. Transition verification (checks if transition is
% allowed to proceed):
%
% edge_direct(MatchingType,PlaceID,MaxB,MinE,MatchedToken,Label)
%
% 2. Transition effects on enabling place (removes
% token on regular transition):
%
% edge_Type(PlaceID,Token).
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
edge_direct(MatchingType,PlaceID,Tokens,MatchedTokens) :-
marking(_,PlaceID,AvailableTokens),
(var(Tokens) ->
MatchedTokens = AvailableTokens
;
get_intersection(MatchingType,Tokens,AvailableTokens,
MatchedTokens),
(MatchedTokens = [] -> fail;true)).
edge_direct(PlaceID,Token) :-
marking(Subnet,PlaceID,[Token|[]]) ->
retract(marking(Subnet,PlaceID,[Token|[]]));
marking(Subnet,PlaceID,Tokens),
retract(marking(Subnet,PlaceID,Tokens)),
remove(Token,Tokens,NewTokens),
assert(marking(Subnet,PlaceID,NewTokens)),!.
111
edge_double(MatchingType,PlaceID,Tokens,MatchedTokens) :-
marking(_,PlaceID,AvailableTokens),
(var(Tokens) ->
MatchedTokens = AvailableTokens
;
get_intersection(MatchingType,Tokens,
AvailableTokens,MatchedTokens),
(MatchedTokens = [] -> fail;true)).
edge_double(_,_) :- !.
edge_negate(MatchingType,PlaceID,Tokens,MatchedTokens) :-
var(Tokens) ->
(nl,
write('EPN ERROR: ''edge_negate'' cannot
be first in an enabling places list'),
abort)
;
MatchedTokens = Tokens.
% marking(_,PlaceID,AvailableTokens),
% get_intersection(MatchingType,Tokens,AvailableTokens,MatchedTokens),
% (MatchedTokens = [] -> fail;true).
edge_negate(_,_) :- !.
edge_spread_fire(MatchingType,PlaceID,Tokens,MatchedTokens) :-
marking(_,PlaceID,AvailableTokens),
(var(Tokens) ->
MatchedTokens = AvailableTokens
;
get_intersection(MatchingType,Tokens,
AvailableTokens,MatchedTokens),
(MatchedTokens = [] -> fail;true)).
% match_token(MatchingType,Tokens,MaxB,MinE,MatchedToken,Label),!,
% repeat,
% neighbors(Label,Neighbor,_),
% (member([_,_,[[space,Neighbor]]],Tokens) -> false;true).
edge_spread_fire(_,[TimeB,TimeE,[[_,Space]]]) :-
transition(Subnet,fire_spread,Tmin,Tmax,_,_,_),
NewTB is TimeB + Tmin,
112
NewTE is TimeE + Tmax,
(spread(Space) -> fail;
assert(spread(Space)),
forall(neighbors(Space,Neighbor,_),
(
(marking(_,fire,Tokens) ->
(member([_,_,[[space,Neighbor]]],Tokens) ->
true
;
retractall(marking(_,fire,Tokens)),
append([[NewTB,NewTE,[[space,
Neighbor]]]],Tokens,Token_list),
assert(marking(Subnet,fire,Token_list))
)
;
assert(marking(Subnet,fire,[[NewTB,NewTE,
[[space,Neighbor]]]]))
)
))
).
We have used EPNs presented in gures B.3, p.116, B.4, p.117. Their Prolog encoding
is given below:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%epn.pl
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Some definitions:
%
%PLACE:
%place(SubnetID,PlaceID,WordDescribtion)
%%
%TRANSITION:
%transition(SubnetID,TransitionID,TimeMin,TimeMax,
%WordDescription,
% EnablingPlacesList,
% PropagationPlacesList)
%
%where:
% 'EnablingPlacesList' is defined as:
% [[TokenLabelTypeToMatch1, [EdgeType1,PlaceID1],...],
%[TokenLabelTypeToMatch2,..]]
%
%and 'PropagationPlacesList' is just:
% [[EdgeType1,PlaceID1],...]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
113
%fire
%transition(fire,ignition,0,60,"ignition",
% [ [space,[edge_direct,ht_alarm],[edge_negate,fire]] ],
% [ [edge_direct,fire] ]).
transition(fire,start_ff,120,300,"start firefighting",
[ [station,[edge_direct,pers_avail],[edge_direct,fight_fire]] ],
[ [edge_direct,ff_in_progress],[edge_direct,pers_occup] ]).
transition(fire,extinguishing,600,1200,"extinguishing",
[ [space,[edge_direct,fire],[edge_direct,ff_in_progress],
[edge_negate,low_pressure]] ],
[ [edge_direct,fire_out] ]).
transition(fire,flooding,120,420,"flooding",
[ [space,[edge_direct,granted_flood],[edge_direct,flood]] ],
[ [edge_direct,flooded] ]).
transition(fire,time_to_sfb,180,300,"time to set fire boundaries",
[ [station,[edge_direct,pers_avail],[edge_direct,sfb]] ],
[ [edge_direct,fbs],[edge_direct,pers_occup] ]).
transition(fire,walls_heat_up,300,600,"walls heat up",
[ [space,[edge_direct,fire]] ],
[ [edge_direct,engulfed] ]).
transition(fire,fire_spread,150,300,"fire spreads",
[ [space,[edge_spread_fire,engulfed],[edge_negate,fbs]] ],
[ ]).
transition(fire,destruction,1200,1800,"destruction",
[ [space,[edge_double,fire],[edge_negate,granted_flood],
[edge_negate,ff_in_progress],[edge_negate,explosive_comp]] ],
114
[ [edge_direct,destroyed] ]).
transition(fire,explosion,120,420,"explosion",
[ [space,[edge_double,fire],[edge_negate,granted_flood],
[edge_negate,ff_in_progress],[edge_double,explosive_comp]] ],
[ [edge_direct,destroyed],[edge_direct,exploded] ]).
transition(fire,investigation,180,420,"investigation",
[ [station,[edge_direct,invest_f],[edge_direct,pers_avail]] ],
[ [edge_direct,invest_complete],[edge_direct,pers_occup] ]).
transition(fire,flooding_fire,0,0,"flooding fire",
[ [space,[edge_double,flooded],[edge_direct,fire]] ],
[ [edge_direct,fire_out] ]).
transition(fire,loosing_vital_space,0,0,"loosing vital space",
[ [space,[edge_double,destroyed],[edge_double,vital_comp]] ],
[ [edge_direct,vital_space_lost] ]).
transition(fire,ttr_after_invest,120,300,"time to report after
investigation",
[ [station,[edge_double,invest_complete],
[edge_direct,pers_occup]] ],
[ [edge_direct,pers_avail] ]).
transition(fire,ttr_after_fbs,120,300,"time to report after fbs recall",
[ [space,[edge_direct,fbs],[edge_double,fire_out]],
[station,[edge_direct,fbs],[edge_direct,pers_occup]] ],
[ [edge_direct,pers_avail] ]).
transition(fire,ttr_after_ff,120,300,"time to report after ff",
[ [station,[edge_double,fire_out],[edge_direct,pers_occup]] ],
[ [edge_direct,pers_avail] ]).
%firemain
place(firemain,low_pressure,"Low pressure").
place(firemain,granted_start_fp,"Permission granted
to start the pump").
place(firemain,start_fp,"Start fire pump").
place(firemain,fp_running,"Fire pump running").
place(firemain,high_pressure,"High pressure").
place(firemain,fp_lost,"Fire pump lost").
place(firemain,rupture,"Rupture").
115
High Granted FF in Available
Fire FBS FIRE
Temp permission progress personnel
Alarm to flood
Exploding
compartments ACTIONS:
FINDINGS:
Investigate
Low
pressure
~
Firemain
~
~
~
~ ~ Fight
fire
space position space space space space station investigation
engulfing extinguishing flooding destruction explosion [3,7]
[5,10] [10,20] [2,7] [20,30] [2,7]
Engulfed
Vital
compartments
fire
spread
SFB
space
116
fire
spread
[3,5] space time to
loosing vital station set FB
space
[3,5]
[0,0]
Request
space permission
self to Flood
extinguishing
space [0,0]
flooding
fire
RESULTS: [0,1] space
waiting for
permission to
Investigation Fire Vital space Occupied flood
Flooded Destroyed Exploded [0,2]
complete out lost personnel
external input
connecting
nodes:
time to time to time to
station report after space station report after station report after
belongs to
investigation FBS recall FF this subnet
[2,5] [2.5] [2,5]
Fire belongs to
main other subnet
~
pump ~
start fp Request
[0,1]
start fire
~
Fire pump
pump
running pump
waiting for
permission to
Close
start fp stern
[0,2]
zebra
valve
pressure position
buildup
[1,2]
space closing
fp failing stern
[0,3]
position zebra Close
valve bow zebra
[0,1]
valve
117
closing
position bow zebra
valve
[0,1]
High water
pressure
ESULTS:
external input
connecting belongs to
nodes: this subnet
Fire belongs to
main other subnet
1. A kill-point is a point of scenario where a fatal event occurs causing the scenario to terminate.
Examples: explosion in a missile magazine, torpedo hit, missile hit, loss of all radars, etc.
2. It is possible to normalize the time till a kill-point and have the score within certain range.
Example: given ship state W the score could be s(W ) = tanh(ttkp(W )).
2
Technically there are many ways to map the time interval to the code interval. For example t 2 [0; 1)
0:4
could be mapped to Code 2 [0:1; 0:5) through Code(t) = 0:5 ; 1+ t.
118
Code Status
-0.5 Flooded
0.0 Intact
[0.1,0.5) High-temp alarm that went o [0,1) minutes ago
[0.5,1.0) Fire that was discovered [0,1) minutes ago
1.0 Destroyed
119
expert-level performance in that environment ([20]). During a scenario at every Minerva-
4 cycle (i.e. every 3-10 seconds) the entire state of the ship was time-stamped and stored.
Once a scenario was over, we went back and annotated all the states with their times till
kill-point. If no kill-point occurred or the real value of ttkp(W ) was over an hour, we set
our annotation to 60 minutes.
Having run around 10 scenarios of various crisis levels, we have collected 1353 training
samples. Some of them represented an intact ship (i.e. 8i[ci = 0]) though. We pruned
those o since an intact ship exemplar can precede any crisis situation and thus its ttkp
is not dened. Having done the pruning, we obtained 854 training exemplars whose
sequence we randomly shued. In the experiments below we typically used the rst 60%
of the sequence (512 exemplars) as the training set for the inductive learning algorithms
and the remaining 40% (342 exemplars) as the cross-validation set.
To get a better understanding of inductive learning algorithms performance, we also
conducted additional experiments with the two concepts introduced below.
Denition B.4.3 Allowed deviation (AD) is maximum dierence between ttkp output
by our evaluator and the actual ttkp recorded with the exemplar such that we consider
the evaluator to predict ttkp correctly.
Experimenting with AD gives us some insight on how much o a learned evaluator
typically is. Following sections will present dierent inductive learning methods we have
utilized.
120
B.4.3 Multilayer Perceptrons with Backpropagation Learning
Multilayer perceptron networks with backpropagation learning are one of the most pop-
ular connectionist methods ([22]). They have been also shown to reach high accuracy in
many domains ([25]). We have tested various 2-layer networks (i.e. one hidden and one
output layers). All of them had 479 inputs and 60 outputs. Parameters varied include:
1. number of hidden nodes;
2. cut-o time (COT) [see section B.4.2, p.119];
3. allowed deviation AD [see section B.4.2, p.119];
4. output interpretation scheme (see table B.2, p.122);
5. learning rates.
The results are summarized in the table B.2, p.122.
121
Topology Annout Scheme Data is in Score
479-2-60 " = 0:0; mat = 1 table B.3, p.123, graph B.5, p.124 75.9
479-100-60 " = 0:0; mat = 1 table B.4, p.125, graph B.6, p.126 85.0
479-200-60 " = 0:0; mat = 1 table B.5, p.127, graph B.7, p.128 75.2
479-500-60 " = 0:0; mat = 1 table B.6, p.129, graph B.8, p.130 74.3
479-100-60 " = 0:3; mat = 3 table B.7, p.131, graph B.9, p.132 79.4
479-100-60 " = 0:0; maximum table B.8, p.133, graph B.10, p.134 81.2
Notes:
1. Topology is given in form N ; M ; L where N is the number of inputs, M is the number
of hidden units, and L is the number of outputs.
2. Annout Scheme column species how network outputs were interpreted to compute
cross-validation percentage. Suppose hy1; :::; yL i is the actual output of the network and
ttkpy is our interpretation of time till a kill-point the network predicts. Then two schemes
we used could be described as follows:
(a)
8
>
<no-kill-point if 8i[yi "];
ttkpy = >round(avg(AT )) where AT = fijyi > "g & jAT j mat;
:undened else (i.e. when more than mat outputs are above "):
(b)
(
ttkpy = no-kill-point if 8i[yi "];
max(AT ) where AT = fijyi > "g:
Given this interpretation of ANN outputs the cross-validation percentage could be com-
puted over the set of testing exemplars T EE as:
CV = 100 jfe 2 T EE jttkp(e) = ttkpy (e)gj %:
jT EE j
3. Score is a single number summarizing the network performance over the cross-validation
set. It is dened as:
Score = avg CV (AD; COT ):
AD=0
COT =5;10;15;:::;60
In other words it is averaged cross-validation percentage with allowed deviation of 0 and
cut-o time ranging from 5 to 60 minutes with the step of 5 minutes.
122
100 epochs
Allowed Deviation CutOffTime ANN lp_out lp_hidden CV %
0 5 479-2-60 0.2 0.4 94.2
0 10 479-2-60 0.2 0.4 87.2
0 15 479-2-60 0.2 0.4 80.2
0 20 479-2-60 0.2 0.4 75.6
0 25 479-2-60 0.2 0.4 74.4
0 30 479-2-60 0.2 0.4 75.6
0 35 479-2-60 0.2 0.4 70.9
0 40 479-2-60 0.2 0.4 69.8
0 45 479-2-60 0.2 0.4 70.9
0 50 479-2-60 0.2 0.4 70.9
0 55 479-2-60 0.2 0.4 70.9
0 60 479-2-60 0.2 0.4 69.8
1 5 479-2-60 0.2 0.4 94.2
1 10 479-2-60 0.2 0.4 87.2
1 15 479-2-60 0.2 0.4 81.4
1 20 479-2-60 0.2 0.4 76.7
1 25 479-2-60 0.2 0.4 74.4
1 30 479-2-60 0.2 0.4 75.6
1 35 479-2-60 0.2 0.4 70.9
1 40 479-2-60 0.2 0.4 69.8
1 45 479-2-60 0.2 0.4 70.9
1 50 479-2-60 0.2 0.4 72.1
1 55 479-2-60 0.2 0.4 72.1
1 60 479-2-60 0.2 0.4 69.8
2 5 479-2-60 0.2 0.4 94.2
2 10 479-2-60 0.2 0.4 87.2
2 15 479-2-60 0.2 0.4 81.4
2 20 479-2-60 0.2 0.4 76.7
2 25 479-2-60 0.2 0.4 74.4
2 30 479-2-60 0.2 0.4 75.6
2 35 479-2-60 0.2 0.4 70.9
2 40 479-2-60 0.2 0.4 69.8
2 45 479-2-60 0.2 0.4 70.9
2 50 479-2-60 0.2 0.4 72.1
2 55 479-2-60 0.2 0.4 72.1
2 60 479-2-60 0.2 0.4 69.8
3 5 479-2-60 0.2 0.4 94.2
3 10 479-2-60 0.2 0.4 87.2
3 15 479-2-60 0.2 0.4 82.6
3 20 479-2-60 0.2 0.4 76.7
3 25 479-2-60 0.2 0.4 74.4
3 30 479-2-60 0.2 0.4 75.6
3 35 479-2-60 0.2 0.4 70.9
3 40 479-2-60 0.2 0.4 69.8
3 45 479-2-60 0.2 0.4 70.9
3 50 479-2-60 0.2 0.4 72.1
3 55 479-2-60 0.2 0.4 72.1
3 60 479-2-60 0.2 0.4 69.8
123
ANNs
100
95
94.2
90
87.2
CV Accuracy (%)
85
82.6
81.4
80.2
80
76.7
75.6 75.6
75
74.4
72.1 72.1
65
5 10 15 20 25 30 35 40 45 50 55 60
Cut-Off Time (min)
124
1000 epochs
Allowed Deviation CutOffTime ANN lp_out lp_hidden CV %
0 5 479-100-60 0.2 0.4 95.3
0 10 479-100-60 0.2 0.4 90.1
0 15 479-100-60 0.2 0.4 86.3
0 20 479-100-60 0.2 0.4 85.4
0 25 479-100-60 0.2 0.4 84.2
0 30 479-100-60 0.2 0.4 83.9
0 35 479-100-60 0.2 0.4 81.6
0 40 479-100-60 0.2 0.4 81.3
0 45 479-100-60 0.2 0.4 82.7
0 50 479-100-60 0.2 0.4 82.7
0 55 479-100-60 0.2 0.4 82.7
0 60 479-100-60 0.2 0.4 83.9
1 5 479-100-60 0.2 0.4 97.4
1 10 479-100-60 0.2 0.4 97.1
1 15 479-100-60 0.2 0.4 93.6
1 20 479-100-60 0.2 0.4 91.5
1 25 479-100-60 0.2 0.4 92.7
1 30 479-100-60 0.2 0.4 91.5
1 35 479-100-60 0.2 0.4 88.6
1 40 479-100-60 0.2 0.4 90.1
1 45 479-100-60 0.2 0.4 90.9
1 50 479-100-60 0.2 0.4 89.5
1 55 479-100-60 0.2 0.4 89.2
1 60 479-100-60 0.2 0.4 90.1
2 5 479-100-60 0.2 0.4 97.4
2 10 479-100-60 0.2 0.4 97.4
2 15 479-100-60 0.2 0.4 94.2
2 20 479-100-60 0.2 0.4 92.4
2 25 479-100-60 0.2 0.4 93.6
2 30 479-100-60 0.2 0.4 92.7
2 35 479-100-60 0.2 0.4 89.8
2 40 479-100-60 0.2 0.4 91.2
2 45 479-100-60 0.2 0.4 92.4
2 50 479-100-60 0.2 0.4 90.6
2 55 479-100-60 0.2 0.4 90.4
2 60 479-100-60 0.2 0.4 91.5
3 5 479-100-60 0.2 0.4 97.4
3 10 479-100-60 0.2 0.4 97.4
3 15 479-100-60 0.2 0.4 94.2
3 20 479-100-60 0.2 0.4 92.4
3 25 479-100-60 0.2 0.4 93.6
3 30 479-100-60 0.2 0.4 92.7
3 35 479-100-60 0.2 0.4 90.1
3 40 479-100-60 0.2 0.4 91.5
3 45 479-100-60 0.2 0.4 92.7
3 50 479-100-60 0.2 0.4 90.9
3 55 479-100-60 0.2 0.4 90.6
3 60 479-100-60 0.2 0.4 91.8
125
ANNs
100
98
97.4 97.4
97.1
96
95.3
94.2
94
93.6 93.6
88.6
88
86.3
86
85.4
84.2
84 83.9 83.9
82
81.6
81.3
80
5 10 15 20 25 30 35 40 45 50 55 60
Cut-Off Time (min)
126
1000 epochs
Allowed Deviation CutOffTime ANN lp_out lp_hidden CV %
0 5 479-200-60 0.2 0.4 95.3
0 10 479-200-60 0.2 0.4 86.8
0 15 479-200-60 0.2 0.4 78.9
0 20 479-200-60 0.2 0.4 72.2
0 25 479-200-60 0.2 0.4 72.2
0 30 479-200-60 0.2 0.4 72.2
0 35 479-200-60 0.2 0.4 69.6
0 40 479-200-60 0.2 0.4 73.4
0 45 479-200-60 0.2 0.4 69.3
0 50 479-200-60 0.2 0.4 74.0
0 55 479-200-60 0.2 0.4 69.3
0 60 479-200-60 0.2 0.4 69.3
1 5 479-200-60 0.2 0.4 95.3
1 10 479-200-60 0.2 0.4 90.9
1 15 479-200-60 0.2 0.4 84.5
1 20 479-200-60 0.2 0.4 72.2
1 25 479-200-60 0.2 0.4 72.2
1 30 479-200-60 0.2 0.4 72.2
1 35 479-200-60 0.2 0.4 70.5
1 40 479-200-60 0.2 0.4 78.1
1 45 479-200-60 0.2 0.4 69.3
1 50 479-200-60 0.2 0.4 77.8
1 55 479-200-60 0.2 0.4 69.3
1 60 479-200-60 0.2 0.4 69.3
2 5 479-200-60 0.2 0.4 95.3
2 10 479-200-60 0.2 0.4 91.8
2 15 479-200-60 0.2 0.4 87.4
2 20 479-200-60 0.2 0.4 72.2
2 25 479-200-60 0.2 0.4 72.2
2 30 479-200-60 0.2 0.4 72.2
2 35 479-200-60 0.2 0.4 70.8
2 40 479-200-60 0.2 0.4 78.4
2 45 479-200-60 0.2 0.4 69.3
2 50 479-200-60 0.2 0.4 79.5
2 55 479-200-60 0.2 0.4 69.3
2 60 479-200-60 0.2 0.4 69.3
3 5 479-200-60 0.2 0.4 95.3
3 10 479-200-60 0.2 0.4 92.1
3 15 479-200-60 0.2 0.4 87.7
3 20 479-200-60 0.2 0.4 72.2
3 25 479-200-60 0.2 0.4 72.2
3 30 479-200-60 0.2 0.4 72.2
3 35 479-200-60 0.2 0.4 70.8
3 40 479-200-60 0.2 0.4 78.7
3 45 479-200-60 0.2 0.4 69.3
3 50 479-200-60 0.2 0.4 80.1
3 55 479-200-60 0.2 0.4 69.3
3 60 479-200-60 0.2 0.4 69.3
127
ANNs
100
95.3
95
92.1
91.8
90.9
90
87.7
87.4
86.8
CV Accuracy (%)
85
84.5
80 80.1
79.5
78.9 78.7
78.4
78.1
77.8
75
74.0
73.4
70.8
70.5
70
69.6
69.3 69.3 69.3
65
5 10 15 20 25 30 35 40 45 50 55 60
Cut-Off Time (min)
128
1000 epochs
Allowed DeCutOffTimeANN lp_out lp_hidden CV %
0 5 479-500-60 0.2 0.4 95.3
0 10 479-500-60 0.2 0.4 86.0
0 15 479-500-60 0.2 0.4 75.7
0 20 479-500-60 0.2 0.4 72.2
0 25 479-500-60 0.2 0.4 73.1
0 30 479-500-60 0.2 0.4 72.2
0 35 479-500-60 0.2 0.4 69.9
0 40 479-500-60 0.2 0.4 69.3
0 45 479-500-60 0.2 0.4 69.9
0 50 479-500-60 0.2 0.4 69.3
0 55 479-500-60 0.2 0.4 69.3
0 60 479-500-60 0.2 0.4 69.3
1 5 479-500-60 0.2 0.4 95.3
1 10 479-500-60 0.2 0.4 86.5
1 15 479-500-60 0.2 0.4 75.7
1 20 479-500-60 0.2 0.4 72.2
1 25 479-500-60 0.2 0.4 73.1
1 30 479-500-60 0.2 0.4 72.2
1 35 479-500-60 0.2 0.4 70.2
1 40 479-500-60 0.2 0.4 69.3
1 45 479-500-60 0.2 0.4 70.8
1 50 479-500-60 0.2 0.4 69.3
1 55 479-500-60 0.2 0.4 69.3
1 60 479-500-60 0.2 0.4 69.3
2 5 479-500-60 0.2 0.4 95.3
2 10 479-500-60 0.2 0.4 86.5
2 15 479-500-60 0.2 0.4 75.7
2 20 479-500-60 0.2 0.4 72.2
2 25 479-500-60 0.2 0.4 73.1
2 30 479-500-60 0.2 0.4 72.2
2 35 479-500-60 0.2 0.4 70.8
2 40 479-500-60 0.2 0.4 69.3
2 45 479-500-60 0.2 0.4 71.3
2 50 479-500-60 0.2 0.4 69.3
2 55 479-500-60 0.2 0.4 69.3
2 60 479-500-60 0.2 0.4 69.3
3 5 479-500-60 0.2 0.4 95.3
3 10 479-500-60 0.2 0.4 86.5
3 15 479-500-60 0.2 0.4 75.7
3 20 479-500-60 0.2 0.4 72.2
3 25 479-500-60 0.2 0.4 73.1
3 30 479-500-60 0.2 0.4 72.2
3 35 479-500-60 0.2 0.4 71.6
3 40 479-500-60 0.2 0.4 69.3
3 45 479-500-60 0.2 0.4 71.3
3 50 479-500-60 0.2 0.4 69.3
3 55 479-500-60 0.2 0.4 69.3
3 60 479-500-60 0.2 0.4 69.3
129
ANNs
100
95.3
95
90
86.5
86.0
CV Accuracy (%)
85
80
75.7
75
73.1
72.2 72.2
71.6
71.3
70.8 70.8
70.2
70 69.9 69.9
69.3 69.3 69.3 69.3
65
5 10 15 20 25 30 35 40 45 50 55 60
Cut-Off Time (min)
130
1000 epochs
Allowed Deviation CutOffTime ANN lp_out lp_hidden CV %
0 5 479-100-60 0.2 0.4 96.5
0 10 479-100-60 0.2 0.4 86.0
0 15 479-100-60 0.2 0.4 81.3
0 20 479-100-60 0.2 0.4 79.8
0 25 479-100-60 0.2 0.4 75.1
0 30 479-100-60 0.2 0.4 80.1
0 35 479-100-60 0.2 0.4 77.5
0 40 479-100-60 0.2 0.4 76.6
0 45 479-100-60 0.2 0.4 76.9
0 50 479-100-60 0.2 0.4 76.6
0 55 479-100-60 0.2 0.4 70.5
0 60 479-100-60 0.2 0.4 76.9
1 5 479-100-60 0.2 0.4 97.7
1 10 479-100-60 0.2 0.4 87.4
1 15 479-100-60 0.2 0.4 84.2
1 20 479-100-60 0.2 0.4 84.2
1 25 479-100-60 0.2 0.4 75.7
1 30 479-100-60 0.2 0.4 83.6
1 35 479-100-60 0.2 0.4 79.8
1 40 479-100-60 0.2 0.4 80.1
1 45 479-100-60 0.2 0.4 83.6
1 50 479-100-60 0.2 0.4 79.8
1 55 479-100-60 0.2 0.4 71.9
1 60 479-100-60 0.2 0.4 80.7
2 5 479-100-60 0.2 0.4 97.7
2 10 479-100-60 0.2 0.4 88.0
2 15 479-100-60 0.2 0.4 86.5
2 20 479-100-60 0.2 0.4 84.8
2 25 479-100-60 0.2 0.4 76.3
2 30 479-100-60 0.2 0.4 86.5
2 35 479-100-60 0.2 0.4 80.7
2 40 479-100-60 0.2 0.4 81.3
2 45 479-100-60 0.2 0.4 85.4
2 50 479-100-60 0.2 0.4 80.4
2 55 479-100-60 0.2 0.4 73.1
2 60 479-100-60 0.2 0.4 83.3
3 5 479-100-60 0.2 0.4 97.7
3 10 479-100-60 0.2 0.4 88.9
3 15 479-100-60 0.2 0.4 87.4
3 20 479-100-60 0.2 0.4 85.1
3 25 479-100-60 0.2 0.4 76.6
3 30 479-100-60 0.2 0.4 86.8
3 35 479-100-60 0.2 0.4 81.0
3 40 479-100-60 0.2 0.4 81.3
3 45 479-100-60 0.2 0.4 85.7
3 50 479-100-60 0.2 0.4 81.0
3 55 479-100-60 0.2 0.4 73.1
3 60 479-100-60 0.2 0.4 83.6
131
ANNs
100
97.7
96.5
95
90
88.9
88.0
CV Accuracy (%)
87.4 87.4
86.8
86.5 86.5
86.0
85.7
85.4
85 85.1
84.8
84.2 84.2
83.6 83.6 83.6
83.3
81.3 81.3
81.0 81.0
80.7 80.7
80.4
80 80.1 80.1
79.8 79.8 79.8
77.5
76.9 76.9
76.6 76.6 76.6
76.3
75.7
75 75.1
73.1
71.9
70.5
70
5 10 15 20 25 30 35 40 45 50 55 60
Cut-Off Time (min)
132
1000 epochs
Allowed Deviation CutOffTime ANN lp_out lp_hidden CV %
0 5 479-100-60 0.2 0.4 96.8
0 10 479-100-60 0.2 0.4 86.5
0 15 479-100-60 0.2 0.4 82.7
0 20 479-100-60 0.2 0.4 80.7
0 25 479-100-60 0.2 0.4 77.5
0 30 479-100-60 0.2 0.4 81.6
0 35 479-100-60 0.2 0.4 78.7
0 40 479-100-60 0.2 0.4 79.2
0 45 479-100-60 0.2 0.4 78.4
0 50 479-100-60 0.2 0.4 78.9
0 55 479-100-60 0.2 0.4 73.7
0 60 479-100-60 0.2 0.4 79.8
1 5 479-100-60 0.2 0.4 99.1
1 10 479-100-60 0.2 0.4 89.5
1 15 479-100-60 0.2 0.4 90.6
1 20 479-100-60 0.2 0.4 88.6
1 25 479-100-60 0.2 0.4 84.2
1 30 479-100-60 0.2 0.4 88.3
1 35 479-100-60 0.2 0.4 86.0
1 40 479-100-60 0.2 0.4 84.2
1 45 479-100-60 0.2 0.4 85.1
1 50 479-100-60 0.2 0.4 86.8
1 55 479-100-60 0.2 0.4 78.9
1 60 479-100-60 0.2 0.4 86.3
2 5 479-100-60 0.2 0.4 99.1
2 10 479-100-60 0.2 0.4 91.2
2 15 479-100-60 0.2 0.4 92.4
2 20 479-100-60 0.2 0.4 91.5
2 25 479-100-60 0.2 0.4 86.3
2 30 479-100-60 0.2 0.4 90.4
2 35 479-100-60 0.2 0.4 88.3
2 40 479-100-60 0.2 0.4 85.7
2 45 479-100-60 0.2 0.4 88.0
2 50 479-100-60 0.2 0.4 88.6
2 55 479-100-60 0.2 0.4 80.7
2 60 479-100-60 0.2 0.4 88.6
3 5 479-100-60 0.2 0.4 99.1
3 10 479-100-60 0.2 0.4 91.8
3 15 479-100-60 0.2 0.4 93.0
3 20 479-100-60 0.2 0.4 92.1
3 25 479-100-60 0.2 0.4 86.5
3 30 479-100-60 0.2 0.4 90.4
3 35 479-100-60 0.2 0.4 88.6
3 40 479-100-60 0.2 0.4 86.3
3 45 479-100-60 0.2 0.4 88.3
3 50 479-100-60 0.2 0.4 88.9
3 55 479-100-60 0.2 0.4 81.3
3 60 479-100-60 0.2 0.4 90.1
133
ANNs
100
99.1
96.8
95
93.0
92.4
92.1
91.8
91.5
91.2
90.6 90.4
90 90.1
89.5
88.9
88.6 88.6 88.6 88.6
88.3 88.3 88.3
88.0
CV Accuracy (%)
86.8
86.5 86.5
86.3 86.3 86.3
86.0
85.7
85 85.1
84.2 84.2
82.7
81.6
81.3
80.7 80.7
80 79.8
79.2
78.7 78.9 78.9
78.4
77.5
75
73.7
70
5 10 15 20 25 30 35 40 45 50 55 60
Cut-Off Time (min)
134
4. number of LVQ epochs;
5. pull-in and push-away coecients for the LVQ stage.
The results are presented in table B.9, p.136 and gure B.11, p.137. The scores are
given under each table.
Options:
File stem <dcfull\eval60>
Convert trees to rules
Decision tree:
135
Before LVQ After LVQ
Cut-off Time LS Train. Ep. LVQ Ep. Pull-in Push-away Training % CV % Training % CV % Map Quality
5 3 5 3 0.05 0.0001 89.4 72.4 89.4 72.4 8.130
10 3 5 3 0.05 0.0001 80.2 64.9 80.2 64.9 7.329
15 3 5 3 0.05 0.0001 70.6 57.6 70.6 57.6 6.518
20 3 5 3 0.05 0.0001 68.2 55.6 68.2 55.6 6.266
25 3 5 3 0.05 0.0001 68.2 55.6 68.2 55.6 6.266
30 3 5 3 0.05 0.0001 68.0 55.4 68.0 55.4 6.247
35 3 5 3 0.05 0.0001 66.6 54.1 67.8 54.1 6.109
40 3 5 3 0.05 0.0001 66.6 54.1 67.8 54.1 6.109
45 3 5 3 0.05 0.0001 66.6 54.1 67.8 54.1 6.109
50 3 5 3 0.05 0.0001 66.6 54.1 67.8 54.1 6.109
55 3 5 3 0.05 0.0001 66.6 54.1 67.8 54.1 6.109
60 3 5 3 0.05 0.0001 66.6 54.1 67.8 54.1 6.109
57.2 57.2
136
5
15
25
CutOffTime (min)
35
45
55
137
K-map 3x3 (before LVQ)
K-maps (3D)
K-map
70
75
CV Accuracy (%)
C5.0
98
97.1
96.9
96
94.2
94 93.9
92.4
CV Accuracy (%)
92
91.5
90
89.8 89.8 89.8
89.2
89.1
88.6 88.7
88.6 88.6
87.5 87.5
87.1 87.1 87.1 87.1 87.1 87.1
86.7
86.5
86.3 86.3
86
85.5
84
5 10 15 20 25 30 35 40 45 50 55 60
CutOffTime (min)
138
C5.0 full
c339 > 0:
:...c339 > 0.8: 32 (5.0/2.0)
: c339 <= 0.8:
: :...c341 <= 0.6: 34 (9.0)
: c341 > 0.6: 33 (5.0/2.0)
c339 <= 0:
:...c175 > 0:
:...c080 <= 0.2: 2 (4.0/1.0)
: c080 > 0.2: 1 (4.0)
c175 <= 0:
:...c380 > 0:
:...c380 <= 0.6: 4 (4.0)
: c380 > 0.6:
: :...c380 <= 0.7: 3 (5.0)
: c380 > 0.7: 2 (2.0)
c380 <= 0:
:...c291 > 0:
:...c411 <= 0.8:
: :...c291 <= 0.8: 7 (3.0/1.0)
: : c291 > 0.8: 4 (4.0)
: c411 > 0.8:
: :...c291 <= 0.8: 6 (6.0)
: c291 > 0.8: 5 (8.0/2.0)
c291 <= 0:
:...c381 > 0:
:...c431 <= 0.7: 3 (2.0/1.0)
139
: c431 > 0.7: 4 (3.0)
c381 <= 0:
:...c382 > 0:
:...c382 <= 0.1: 7 (3.0)
: c382 > 0.1: 6 (4.0/1.0)
c382 <= 0:
:...c100 > 0:
:...c212 <= 0.8: 7 (4.0/1.0)
: c212 > 0.8:
: :...c045 <= 0: 6 (2.0)
: c045 > 0: 5 (3.0/1.0)
c100 <= 0:
:...c214 > 0:
:...c106 <= 0.8: 17 (9.0)
: c106 > 0.8:
: :...c103 <= 0:
: :...c099 <= 0.8: 16 (10.0)
: : c099 > 0.8: 15 (9.0/3.0)
: c103 > 0:
: :...c219 <= 0: 13 (2.0)
: c219 > 0: 12 (3.0)
c214 <= 0:
:...c387 > 0: 1 (3.0)
c387 <= 0:
:...c467 > 0:
:...c434 > 0: 14 (3.0)
: c434 <= 0:
: :...c436 <= 0: 16 (4.0)
: c436 > 0: 15 (3.0)
c467 <= 0:
:...c350 > 0:
:...c292 > 0:
: :...c207 <= 0: 13 (3.0)
: : c207 > 0: 12 (2.0)
: c292 <= 0:
: :...c351 > 0.6: 14 (3.0)
: c351 <= 0.6:
: :...c295 <= 0: 16 (2.0)
: c295 > 0: 15 (3.0)
c350 <= 0:
:...c435 > 0:
:...c434 <= 0.7: 12 (5.0/2.0)
: c434 > 0.7: 11 (2.0)
c435 <= 0:
:...c213 > 0: 11 (4.0/1.0)
c213 <= 0:
:...c353 > 0:
:...c207 <= 0.7: 11 (2.0)
: c207 > 0.7: 10 (4.0/1.0)
c353 <= 0:
:...c103 > 0:
:...c103 <= 0.8: 10 (2.0)
140
: c103 > 0.8: 9 (5.0/1.0)
c103 <= 0:
:...c080 > 0: 2 (2.0/1.0)
c080 <= 0:[S1]
SubTree [S1]
Extracted rules:
Rule 1: (cover 4)
c080 > 0.2
-> class 1 [0.833]
Rule 2: (cover 3)
c387 > 0
-> class 1 [0.800]
Rule 3: (cover 2)
c380 > 0.7
-> class 2 [0.750]
Rule 4: (cover 4)
c080 <= 0.2
c175 > 0
-> class 2 [0.667]
Rule 5: (cover 2)
c080 > 0
c175 <= 0
-> class 2 [0.500]
Rule 6: (cover 5)
c380 > 0.6
c380 <= 0.7
-> class 3 [0.857]
Rule 7: (cover 2)
c381 > 0
c431 <= 0.7
141
-> class 3 [0.500]
Rule 8: (cover 4)
c291 > 0.8
c411 <= 0.8
-> class 4 [0.833]
Rule 9: (cover 4)
c380 > 0
c380 <= 0.6
-> class 4 [0.833]
142
c291 > 0
c291 <= 0.8
c411 <= 0.8
-> class 7 [0.600]
143
Rule 28: (cover 2)
c207 <= 0.7
c350 <= 0
c353 > 0
-> class 11 [0.750]
144
Rule 38: (cover 3)
c295 > 0
c350 > 0
c351 <= 0.6
-> class 15 [0.800]
145
Rule 48: (cover 328)
c080 <= 0
c103 <= 0
c156 <= 0
c214 <= 0
c291 <= 0
c318 <= 0
c339 <= 0
c350 <= 0
c353 <= 0
c380 <= 0
c382 <= 0
c387 <= 0
c411 <= 0
c413 <= 0
c435 <= 0
c467 <= 0
-> class 60 [0.994]
Default class: 60
146
ANN vs. K-map vs. C5.0
100
97.1
95.3
95
94.2
91.5
86.3
85.4
85
84.2 83.9 83.9
82.7 82.7 82.7
81.6 81.3
80
CV Accuracy (%)
75
71.1
70.4
70
66.7
66.0 65.8 66.0
65.6 65.3
65 64.5 64.2
63.8
62.0
60
55
50
5 10 15 20 25 30 35 40 45 50 55 60
CutOffTime (min)
147
tainly to be practical, such a mode would require a short learning time. In our
experiments ANNs were the slowest (around 1.5 hours per one training session of
1000 epochs3) while C5.0 was very quick (4 seconds per session). K-maps were
slightly faster than ANNs but nowhere close to C5.0. Slowness of backpropagation
has been reported in other works as well ([25]).
Problem-Solving Time. Problem-solving time (the time of computing time till kill-
point ttkp(W ) given a state of the ship W ) is crucial if the board evaluator is to be
called many times during schedule stage. For each proposed action, we need up to
four board evaluations. Given a vast number of actions Minerva typically produces
at every cycle, we sometimes need 100 or more state evaluations per second. Current
implementation of ANNs in Prolog has board evaluation time of over 1.2 seconds
while the C++ implementation brings this time down to 0.006 seconds. Decision
trees are the quickest with the problem-solving time under 0.003 seconds (within
C5.0 itself) and 0.125 seconds for our Prolog implementation.
Explanation Convenience. While the rules produced by C5.0 are generally human-
readable and allow for relatively easy explanation facility, board evaluators pro-
duced by backpropagation or K-maps are much more obscure and harder to ex-
plain. It seems to us that it would be nearly impossible to generate comprehensive
explanations for those two types especially in real-time.
Overall among the three approaches tested decision trees/rules seems to be most
promising for the task of board evaluation in our domain.
3
We used our own MS Visual C++ 5.0 code on a Pentium-II 300MHz under MS Windows NT 4.0.
148
%% sconcludes/2 is of form
%% sconcludes(SRuleID,ScoreDelta)
sconcludes(sr1000,1500).
sconcludes(sr1010,400).
sconcludes(sr1012,700).
sconcludes(sr1020,-100).
sconcludes(sr1022,2000).
sconcludes(sr1030,2000).
sconcludes(sr1040,500).
%% scondition/4 is of form
%% scondition(SRuleID,Action,TopGoal,TheFirstEdge)
scondition(sr1000,_,process_hypothesis(_),_).
scondition(sr1010,_,explore_hypothesis(_),_).
scondition(sr1012,_,explore_hypothesis(_),eh1).
scondition(sr1020,perform([invest_f,_,_]),_,_).
scondition(sr1022,perform([invest_f,_,Space]),_,_) :- vital_space(Space).
scondition(sr1030,perform([flood,_,_]),_,_).
scondition(sr1040,perform([fight_fire,_,_]),_,_).
:- dynamic ba/2.
best(BAction) :-
setof(A,A^(on_agenda(A), A = perform(_)),Actions),
retractall(ba(_,_)),
%% tell('tracefile.tra'),
forall(
member(Action,Actions),
(
compute_rating(Action,R),
dump_rating(Action,R),
adjust_ba(Action,R)
)
),
ba(BAction,_),
149
%% tell(user),
retractall(ba(_,_)).
adjust_ba(Action,R) :-
ba(_,RO),
RO < R,
retractall(ba(_,_)),
assert(ba(Action,R)),!.
adjust_ba(Action,R) :-
ba(_,RO),!.
adjust_ba(Action,R) :-
assert(ba(Action,R)),!.
dump_rating(Action,R) :-
cycle(C),
current_time(Time),
%% write('(cycle-rating '), write(C), write(' '),
%% write(Action), write(' '), write(R), write(')'), nl,!.
d_write_chain(C, R, Action, '', 'cycle-on-agenda', '', Time).
compute_rating(Action,R) :-
findall(SR,(sconcludes(SR,_),ssatisfied(SR,Action)),SRules),
adjust_rat(0,R,SRules),!.
adjust_rat(R,R,[]).
adjust_rat(Old,New,[SRule|Rest]) :-
sconcludes(SRule,Delta),
Tmp is Old + Delta,
adjust_rat(Tmp,New,Rest).
ssatisfied(SRule,Action) :-
forall(
scondition(SRule,A,Top,Edge),
(A = Action, compute_goal_edge(Action,Top,Edge))
).
150
%% Returns the top level goal TG and the first edge E for given Action
compute_goal_edge(Action,TG,E) :-
top_level(TG),
led_by(Action,TG,E).
led_by(Action,Goal,E) :-
aaction(Action,E,Goal).
led_by(Action,Goal,E) :-
aaction(Action,_,SubGoal),
led_by(SubGoal,Goal,E).
where nmessages is the interface's trac (number of messages per minute) at time t.
151
Type of a; a0 Value of c(a; a0)
Fight re by level +1 if the arguments match perfectly otherwise -1
E/M compartment isolation +1 if the arguments match perfectly otherwise -1
Repair equipment in space +1 if the arguments match perfectly otherwise -1
Patch and plug rupture +1 if the arguments match perfectly otherwise -1
Dewater a space +1 if the arguments match perfectly otherwise -1
Set deck and overhead +1 if the arguments match perfectly otherwise -1
boundaries
Adjust remain/chillwater +1 if the arguments match perfectly otherwise -1
valves
Flood a magazine +1 if the arguments match perfectly otherwise -1
Start or stop re pumps +1 if the arguments match perfectly otherwise -1
Request permission to switch +1 if the arguments match perfectly otherwise -1
re pumps on/o
Request permission to
ood a +1 if the arguments match perfectly otherwise -1
magazine
Report ship's general status +1 if the arguments match perfectly otherwise -1
Query repair party readiness +1 if the arguments match perfectly otherwise -1
Report MR&Z achieved +1 if the arguments match perfectly otherwise -1
Query MR&Z status 0
View readiness chart 0
Query repair status progress 0
Fight re by space 1 ; 0:05 abs(dframe ) where dframe is the dierence in argu-
ments (in frames)
1;0:05 abs(dframe )
Set bulkhead boundaries 6
where dframe is the dierence in arguments
(in frames)
Investigate space
(
1 if fbsecfore tinvest fbsecaft
1 ; 0:2 abs(dframe ) otherwise:
Here tinvest is the compartment to investigate, fbsecfore is
the correct secondary forward reboundaries (frame number),
and fbsecaft is the correct secondary aft reboundaries (frame
number).
152
Appendix C
Minerva Graphical User Interfaces
(GUIs)
C.1 Explanatory GUI
Explanatory GUI allows a user to look into Minerva-5 reasoning. The information is
displayed in several ways as follows (gure C.1, p.154):
Finding window lists all the ndings in Minerva format sorted chronologically;
Hypothesis window lists all the hypotheses in Minerva format sorted chronologically;
Action window lists all the external domain-level actions in Minerva format sorted
chronologically;
Strategy chain graphical display shows strategy network of a selected cycle. Actions
selected for execution are shown in boxes with a shadow. External actions are also
tagged with their total utility ratings.
Natural language (NL) explanation window that articulates Minerva's reasoning
for a particular chain in English.
153
Toolbar: allows to
navigate the graphs Strategy chain
and control different graphical Finding
Finding
options display window:
window:
lists
lists all
all the
the
findings
findings
chronologically
chronologically
Hypothesis
Hypothesis
window:
window:
lists
lists all
all the
the
hypotheses
hypotheses
chronologically
chronologically
Action
Action window:
window:
154
lists
lists all
all the
the
actions
actions
chronologically
chronologically
NL
NL explanation
explanation
window:
window:
Provides
Provides aa NL
NL
output
output for
for aa
strategy
strategy chain
chain
155
are dynamically updated as the information changes and an explanation of a particular
action could be obtained by clicking on the action. Such an explanation would consist
of the reasoning behind the action (the explanatory GUI (section C.1, p.153) will be
invoked to present it) and the reasoning behind the action's rank. The latter includes
prognosed ship states (obtained from the EPN predictor) and their rankings (computed
by the state evaluator). NL generation is facilitated.
156
Toolbar: allows to
navigate the graphs Strategy chain
and control different graphical Finding
Finding
options display window:
window:
lists
lists all
all the
the
findings
findings
chronologically
chronologically
Hypothesis
Hypothesis
window:
window:
lists
lists all
all the
the
hypotheses
hypotheses
chronologically
chronologically
157
DO
DO list:
list:
Recommended: recommended
recommended
R3: set FB 370,338,300,254,4,2 on 3-319-0 actions
actions
R3: investigate 01-300-2
R3: fight fire 2-335-2
DON’T
DON’T list:
list:
Not Recommended: not
not recommended
recommended
DCCO: shut firemain valve 1-49-1 actions
actions
R5: investigate 3-300-0
NL
NL explanation
explanation
window:
window:
Provides
Provides aa NL
NL
output
output for
for aa
strategy
strategy chain
chain
Action
Action
window:
window:
lists
lists all
all the
the
student’s
student’s
chronologically
chronologically
158
Errors
Errors of
of Errors
Errors of
of
Commission
Commission List
List Omission
Omission List
List
159
D.1.1 Minerva-3
Tables D.1, p.161 and D.2, p.162 show blackboard statistics collected on 110 diagnosis
runs.
D.1.2 Minerva-4
Table D.3, p.163 presents us with corresponding Minerva-4 blackboard statistics collected
from 15 damage control scenarios.
D.1.3 Minerva-5
Minerva-5 has the same domain and strategy knowledge as Minerva-4 and therefore has
blackboard statistics somewhat similar to Minerva-4's.
160
Average Maximum
Filename Cycles Nodes Top-level Edges On-agenda Nodes Top-level Edges On-agenda
p1040.tra 68 78.514709 5.455883 110.897057 16.514706 180 9 237 37
p1042.tra 30 25.566668 3.6 24.066668 9.766666 50 6 49 18
p1043.tra 21 19.619047 2.238095 17.952381 8.142858 37 3 36 16
p1044.tra 43 48 3.395349 68.069771 11.767442 143 5 215 30
p1045.tra 17 16.941177 2.117647 16.117647 7.352941 31 3 34 14
p1046.tra 19 17.473684 2.473684 16.526316 7.31579 31 4 34 14
p1047.tra 37 51.486488 3.513514 74.918922 11.810811 143 6 215 30
p1048.tra 21 19.619047 2.238095 17.952381 8.142858 37 3 36 16
p1050.tra 61 83.016396 4.606557 119.049179 17.147541 179 7 236 37
p1051.tra 33 25.939394 4.121212 24.363636 9.484848 52 7 51 18
p1052.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
p1053.tra 15 17.266666 2.066667 16.6 7.6 31 3 34 14
p1054.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
p1055.tra 60 59.266666 3.216667 80.01667 14.65 143 8 193 34
p1056.tra 67 60.761192 3.880597 82.343285 14.477612 143 9 193 34
p1057.tra 15 13 1.933333 11.533334 5.533333 20 4 18 9
p1058.tra 58 45.982758 3.603448 61.258621 11.534483 143 7 215 30
p1059.tra 11 11.818182 1.636364 10.454545 5.090909 20 3 18 9
p1061.tra 61 59.786884 3.213115 81.491806 14.606558 143 7 193 34
p1063.tra 22 20.90909 2.772727 19.272728 8.545455 40 4 39 17
p1065.tra 67 78.149254 4.701492 111.253731 16.64179 179 8 236 37
p1066.tra 10 11.5 1.5 10.1 5 20 2 18 9
p1067.tra 18 16.5 2.111111 15.611111 7.111111 31 3 34 14
p1068.tra 11 11.818182 1.636364 10.454545 5.090909 20 3 18 9
p1069.tra 11 12 1.636364 10.454545 5.090909 20 3 18 9
p1070.tra 27 21.777779 2.592592 21.518518 8.888889 39 4 43 16
p1071.tra 70 80.242859 5.771429 111.542854 16.985714 182 9 239 38
p1072.tra 10 11.5 1.5 10.1 5 20 2 18 9
p1073.tra 21 20.571428 2.476191 20.095238 8.142858 39 4 43 16
p1074.tra 27 21.037037 2.407408 19.851852 8.888889 37 3 36 16
p1075.tra 37 51.513512 3.45946 74.702705 11.810811 143 5 215 30
p1076.tra 21 19.619047 2.238095 17.952381 8.142858 37 3 36 16
p1077.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
p1078.tra 37 51.567566 3.45946 74.810814 11.810811 143 5 215 30
p1079.tra 9 11.444445 1.444444 10 5 20 2 18 9
p1080.tra 9 11.444445 1.444444 10 5 20 2 18 9
p1081.tra 32 21.21875 2.59375 20.59375 8.71875 39 4 43 16
p1083.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
p1084.tra 21 19.619047 2.238095 17.952381 8.142858 37 3 36 16
p1086.tra 20 17.4 2.55 16.299999 7.25 31 4 34 14
p1087.tra 17 16.941177 2.117647 16.117647 7.352941 31 3 34 14
p1088.tra 27 23.222221 2.777778 22.25926 9.148149 43 4 43 16
p1089.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
p1090.tra 18 17.111111 2.5 16.222221 7.111111 31 4 34 14
p1091.tra 27 22.518518 2.703704 21.555555 8.925926 43 4 43 16
p1092.tra 11 12 1.636364 10.454545 5.090909 20 3 18 9
p1093.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
p1094.tra 21 20.571428 2.476191 20.095238 8.142858 39 4 43 16
p1095.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
p1096.tra 30 23.733334 3.366667 22.633333 8.9 45 5 45 16
p1097.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
p1099.tra 17 16.470589 2.058824 15.705882 7.176471 31 3 34 14
p1100.tra 18 17.666666 2.444444 16.722221 7.444445 31 4 34 14
161
p1101.tra 10 11.5 1.5 10.1 5 20 2 18 9
p1102.tra 21 21.523809 2.619048 20.142857 8.190476 43 4 43 16
p1103.tra 27 22.518518 2.703704 21.555555 8.925926 43 4 43 16
p1104.tra 63 56.761906 3 72.412697 14.984127 143 5 181 34
p1105.tra 23 17.826086 2.521739 16.52174 7.521739 31 3 34 14
p1106.tra 20 18 2.45 16.85 7.65 31 3 34 14
p1107.tra 20 18 2.45 16.85 7.65 31 3 34 14
p1108.tra 22 22.318182 2.681818 20.90909 8.5 43 4 43 16
p1109.tra 12 11.75 1.666667 10.166667 4.916667 20 3 18 9
p1110.tra 43 44.255814 3.418605 62.255814 11.255814 116 5 186 22
p1111.tra 10 11.5 1.5 10.1 5 20 2 18 9
p1112.tra 37 51.513512 3.45946 74.702705 11.810811 143 5 215 30
p1113.tra 21 17 2.523809 15.857142 7.047619 31 4 34 14
p1114.tra 21 20.571428 2.476191 20.095238 8.142858 39 4 43 16
p1115.tra 9 11.444445 1.444444 10 5 20 2 18 9
p1116.tra 9 11.444445 1.444444 10 5 20 2 18 9
p1117.tra 18 16.5 2.111111 15.611111 7.111111 31 3 34 14
p1118.tra 17 16.941177 2.117647 16.117647 7.352941 31 3 34 14
p1119.tra 15 17.266666 2.066667 16.6 7.6 31 3 34 14
p1120.tra 44 50.159092 3.431818 71.409088 12.181818 143 5 215 30
p1122.tra 71 84.887321 6.647887 124.718307 17.507042 199 11 282 39
p1123.tra 37 51.513512 3.45946 74.702705 11.810811 143 5 215 30
p1124.tra 27 22.518518 2.703704 21.555555 8.925926 43 4 43 16
p1125.tra 11 11.272727 1.545455 9.818182 4.818182 20 2 18 9
p1126.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
p1127.tra 15 16.533333 2.066667 15.866667 7.2 31 3 34 14
p1128.tra 21 17.380953 2.619048 16.285715 7.190476 31 4 34 14
p1129.tra 65 50.323078 3.384615 63.246155 12.846154 143 5 215 30
p1130.tra 15 17.266666 2.066667 16.6 7.6 31 3 34 14
p1131.tra 11 12 1.636364 10.454545 5.090909 20 3 18 9
p1132.tra 17 16.941177 2.117647 16.117647 7.352941 31 3 34 14
p1133.tra 11 11.818182 1.636364 10.454545 5.090909 20 3 18 9
p1134.tra 68 71.264709 5.602941 100.117645 15.632353 146 10 198 35
p1136.tra 9 11.444445 1.444444 10 5 20 2 18 9
p1137.tra 9 11.444445 1.444444 10 5 20 2 18 9
p1138.tra 17 16.941177 2.117647 16.117647 7.352941 31 3 34 14
p1139.tra 20 17.049999 2.45 16.049999 7.1 31 4 34 14
p1140.tra 74 62.513512 4.972973 83.810814 15.054054 146 10 192 35
p1141.tra 28 21.714285 2.464286 20.535715 9.178572 40 4 39 17
p1142.tra 28 22 2.821429 20.821428 9.178572 40 4 39 17
p1143.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
p1144.tra 29 22.448277 3.206897 22.034483 8.655172 41 5 45 16
p1145.tra 30 23.733334 3.366667 22.633333 8.9 45 5 45 16
p1146.tra 27 22.518518 2.703704 21.555555 8.925926 43 4 43 16
p1147.tra 27 23.222221 2.777778 22.25926 9.148149 43 4 43 16
p1148.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
p1149.tra 28 23.107143 2.75 22.107143 9.142858 43 4 43 16
Avg/Max 27.68 27.18957628 2.69769532 31.37244242 8.8661007 199 11 282 39
162
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
121 5.702479 2.206612 3.702479 2.768595 28 14 15 15 2032
24 5.75 2.291667 3.666667 2.916667 36 18 18 19 2879
24 5.5 2.166667 3.541667 2.791667 32 16 16 17 2433
25 5.28 2.08 3.4 2.68 32 16 16 17 2330
48 5.5 2.166667 3.541667 2.791667 32 16 16 17 2173
17 5.705883 2.235294 3.705882 2.941176 30 15 15 16 2392
19 6 2.315789 3.947368 3.105263 28 14 14 15 2598
22 6 2.363636 3.863636 3.045455 32 16 16 17 2056
95 11.936842 4.747368 7.6 5.8 56 20 38 24 2625
94 43.787235 18.74468 26.180851 20.531916 347 152 204 158 3031
74 13.405405 5.337838 8.459459 6.405406 64 24 40 29 2293
40 6.95 2.525 4.75 3.275 34 17 17 18 2094
41 5.634146 2.170732 3.682927 2.780488 30 15 15 16 2620
49.538 9.781 3.950 6.157 4.756 60.077 27.154 33.846 29.077 2427.385
Columns:
C1. number of pertinent cycles
C2. average number of nodes per cycle
C3. average number of top-level nodes per cycle
C4. average number of edges per cycle
C5. on-agenda nodes per cycle (average)
C6. nodes per cycle (max)
C7. top-level nodes per cycle (max)
C8. edges per cycle (max)
C9. on-agenda nodes per cycle (max)
C10. number of actual cycles performed by Minerva
163
(a) "dead" if a kill-point was reached within the rst 25 minutes of the scenario;
(b) "survived" if no kill-point was reached but some res didn't get extinguished
within the rst 25 minutes of the scenario;
(c) "victory" if all the res were extinguished and no kill-point was reached within
the rst 25 minutes.
3. Average cycle time was recorded for Minerva-4 and Minerva-5 as the time spent
per cycle averaged over all cycles starting from the rst damage report and ending
at the last damage-related message.
164
Compartment Blast parameters Time 1st cyc # 1st cyc time Last cyc # Last cyc time Avg cyc time Status
4-220-0-E S 0 20 8 7 6100 06:53.0 6251 11:50.0 1.967 Survived
4-110-0-E S 0 20 8 6 5173 04:47.0 5648 10:12.0 0.684 Survived
4-174-0-E S 0 20 8 6 6226 05:55.0 6628 11:44.0 0.868 Survived
2-161-1-T S 1 23 10 6 6228 08:11.0 6521 14:49.0 1.358 Survived
2-18-0-Q S 1 21 7 4 5812 04:34.0 6252 19:24.0 2.023 Survived
2-18-0-Q S 1 14 4 5 5777 07:14.0 6194 21:24.0 2.038 Survived
2-161-1-T S 0 13 5 6 5911 07:24.0 5963 09:08.0 2.000 Survived
3-310-2-L S 0 12 6 2 4728 03:24.0 5993 06:49.0 0.162 Survived
2-161-1-T S 1 18 7 6 6194 07:34.0 6503 14:48.0 1.405 Survived
2-18-0-Q S 0 16 6 7 6258 10:05.0 6588 21:23.0 2.055 Survived
2-338-2-L S 0 15 5 7 6255 10:09.0 6324 12:25.0 1.971 Survived
2-161-1-T S 1 11 4 7 6046 09:11.0 6102 11:02.0 1.982 Survived
1-18-0-Q S 1 25 11 6 6179 09:02.0 6405 16:43.0 2.040 Survived
4-126-0-E S 0 36 13 4 5797 04:12.0 6999 25:00.0 1.038 Survived
2-238-1-A S 0 32 13 3 5595 04:12.0 6156 08:05.0 0.415 Survived
3-370-0-E S 0 37 14 5 6022 05:21.0 6166 14:55.0 3.986 Survived
2-300-100-L S062 7 6116 09:17.0 6209 12:21.0 1.978 Survived
4-174-0-E S082 6 5898 06:08.0 6074 11:17.0 1.756 Survived
4-174-0-E S 0 12 5 6 6011 06:09.0 6594 25:00.0 1.940 Survived
3-220-100-A S 0 18 7 5 6063 08:18.0 6122 10:14.0 1.966 Survived
4-174-0-E S 0 11 3 4 6054 04:16.0 6631 09:12.0 0.513 Survived
4-426-0-A S044 5 5922 06:53.0 5998 09:22.0 1.961 Survived
3-410-0-K S058 0 281 00:10.0 816 00:45.0 0.065 Dead
165
3-370-0-E:3-78-0-M S 0 14 6:S 0 7 4 5 14 5732 05:14.0 5901 16:24.0 3.964 Dead
4-126-0-E:4-300-0-E S 0 11 6:S 0 17 5 5 12 5745 05:18.0 6072 22:31.0 3.159 Dead
2-238-1-A S 0 10 5 0 2256 01:35.0 5379 04:55.0 0.064 Dead
4-126-0-E S 0 24 10 6 6366 05:43.0 6719 24:29.0 3.190 Dead
2-238-1-A:3-338-0-E:-3-142-0-C S 0 24 10:S 0 50 18:S 3 100 40 7 15 17 4865 06:01.0 5216 21:04.0 2.573 Dead
3-370-0-E S 0 17 8 3 4871 03:18.0 5801 07:10.0 0.249 Dead
4-126-0-E S 0 15 7 7 5841 04:52.0 6055 18:14.0 3.748 Dead
2-238-1-A S 0 12 7 1 3761 02:25.0 6085 04:53.0 0.064 Dead
4-126-0-E:4-300-0-E S 0 15 7:S 0 12 6 5 14 6118 05:20.0 6494 19:54.0 2.324 Dead
2-238-1-A S 0 20 7 6 6114 06:13.0 6203 09:08.0 1.966 Dead
4-254-0-E S 0 19 5 0 320 00:11.0 5031 07:59.0 0.099 Dead
3-370-0-E:3-78-0-M S 0 15 7:S 0 7 3 4 11 5277 04:14.0 5875 10:14.0 0.602 Dead
4-126-0-E S 0 15 7 3 4656 03:15.0 5789 16:38.0 0.709 Dead
4-254-0-E:1-289-2-Q S 0 20 8:S 0 14 6 66 5927 05:14.0 6205 14:25.0 1.982 Dead
4-126-0-E S 0 16 6 5 6038 05:14.0 6094 08:43.0 3.732 Dead
3-370-0-E:3-78-0-M S 0 13 7:S 0 7 3 5 13 5920 05:15.0 6142 23:08.0 4.833 Dead
2-238-1-A S074 5 6451 07:21.0 6539 10:12.0 1.943 Dead
3-370-0-E S 0 13 5 3 5860 04:08.0 6226 07:02.0 0.475 Dead
4-126-0-E:4-300-0-E S 0 16 7:S 0 12 5 5 15 6027 05:12.0 6280 25:02.0 4.704 Dead
2-238-1-A S 0 11 6 6 6197 08:28.0 6258 10:28.0 1.967 Dead
166
4-174-0-E S 0 20 8 9 6280 05:12.0 6459 10:30.0 1.777 Victory
4-110-0-E (d) S 0 20 8 6 6269 05:13.0 6433 10:10.0 1.811 Victory
2-18-0-Q S195 10 6191 06:46.0 6579 19:59.0 2.044 Victory
2-161-1-T S 1 16 6 7 6253 08:15.0 6538 14:20.0 1.281 Victory
2-338-2-L S 0 14 5 0 1689 01:24.0 5205 04:44.0 0.057 Victory
2-18-0-Q S 1 13 5 6 6284 06:20.0 6707 19:58.0 1.934 Victory
2-338-2-L (a) S 0 14 5 0 2159 01:31.0 5199 04:26.0 0.058 Victory
2-18-0-Q S 1 24 6 0 1180 01:00.0 4997 11:10.0 0.160 Victory
2-18-0-Q S 1 11 5 3 6155 05:26.0 6588 19:59.0 2.016 Victory
2-161-1-T S173 0 2089 01:24.0 6572 24:07.0 0.304 Victory
2-338-2-L S 0 14 8 7 6309 07:57.0 6380 10:16.0 1.958 Victory
2-18-0-Q S 1 13 4 7 5958 06:25.0 6146 12:33.0 1.957 Victory
2-161-1-T S 1 11 5 5 6209 07:52.0 6473 13:26.0 1.265 Victory
2-18-0-Q S 1 17 5 4 6014 05:50.0 6390 18:11.0 1.971 Victory
2-161-1-T S 1 14 6 4 6306 04:40.0 6645 12:36.0 1.404 Victory
2-338-2-L S 0 14 3 5 6345 07:06.0 6438 10:08.0 1.957 Victory
2-338-2-L S 0 15 10 0 2184 01:36.0 5696 04:57.0 0.057 Victory
2-18-0-Q S176 0 2677 01:41.0 5640 11:25.0 0.197 Victory
2-161-1-T S 0 10 4 0 1856 01:17.0 5747 22:40.0 0.330 Victory
2-18-0-Q S 1 13 4 0 1448 01:05.0 5250 15:44.0 0.231 Victory
167
4-110-0-E S 0 20 8 9 6165 05:10.0 6379 11:38.0 1.814 Victory
4-110-0-E S 0 20 8 0 1065 00:36.0 5565 04:57.0 0.058 Victory
4-110-0-E S000 0 1060 00:36.0 6414 05:41.0 0.057 Victory
4-174-0-E S 0 20 8 0 650 00:21.0 6068 24:52.0 0.272 Victory
4-174-0-E S 0 20 8 7 6396 05:11.0 7066 14:27.0 0.830 Victory
4-220-0-E S 1 20 8 7 6098 05:12.0 6179 07:50.0 1.951 Victory
4-220-0-E S 0 20 8 11 6028 05:11.0 6173 09:51.0 1.931 Victory
4-220-0-E (a) S 0 20 8 11 6144 05:12.0 6266 09:15.0 1.992 Victory
4-110-0-E S 0 20 8 8 6399 05:12.0 6542 09:27.0 1.783 Victory
4-220-0-E S 0 20 8 9 5867 05:12.0 5997 09:29.0 1.977 Victory
4-110-0-E (e) S 0 20 8 6 5993 05:12.0 6188 11:05.0 1.810 Victory
4-110-0-E (f) S 0 20 8 6 6139 05:18.0 6578 10:17.0 0.681 Victory
4-220-0-E © S 0 20 8 6 6024 05:09.0 6638 21:53.0 1.635 Victory
4-174-0-E (a) S 0 20 8 9 6317 05:16.0 6669 10:06.0 0.824 Victory
4-174-0-E (b) S 0 20 8 9 6439 06:06.0 6639 11:58.0 1.760 Victory
4-110-0-E S 0 20 8 7 5879 05:17.0 6021 09:33.0 1.803 Victory
4-110-0-E (g) S 0 20 8 6 6045 05:16.0 6184 09:24.0 1.784 Victory
4-220-0-E (d) S 0 20 8 6 6008 05:09.0 6162 10:09.0 1.948 Victory
4-174-0-E © S 0 20 8 9 6196 05:13.0 6379 10:31.0 1.738 Victory
4-174-0 S 0 20 8 10 6022 05:17.0 6230 11:30.0 1.793 Victory
168
3-370-0-E:3-78-0-M S 0 21 8:S 0 11 6 4 17 5810 04:16.0 6446 11:49.0 0.712 Victory
4-126-0-E S 0 17 8 6 6210 05:13.0 6448 24:00.0 4.745 Victory
2-238-1-A S 0 19 8 5 6218 06:49.0 6303 09:34.0 1.941 Victory
3-370-0-E:2-238-1-A S 0 17 9:S 0 17 9 5 15 6340 05:23.0 6642 25:02.0 3.904 Victory
4-126-0-E S 0 20 8 5 5928 05:18.0 6300 25:01.0 3.180 Victory
3-370-0-E:3-78-0-M S 0 23 8:S 0 13 4 12 19 6449 05:18.0 6600 15:14.0 3.947 Victory
4-126-0-E S 0 21 11 6 6274 05:17.0 6620 23:45.0 3.202 Victory
2-238-1-A S 0 10 4 6 6019 07:19.0 6094 09:43.0 1.920 Victory
3-370-0-E:3-78-0-M S 0 23 8:S 0 7 5 8 17 6030 05:14.0 6182 15:04.0 3.882 Victory
2-238-1-A S 0 16 7 5 6304 07:28.0 6357 09:13.0 1.981 Victory
2-238-1-A S087 3 5782 05:26.0 5834 07:08.0 1.962 Victory
4-126-0-E S 0 15 7 6 6032 06:15.0 6264 25:01.0 4.853 Victory
3-370-0-E:3-78-0-M S 0 15 6:S 0 7 2 5 13 6328 05:21.0 6487 13:25.0 3.044 Victory
169
3-410-0-K S058 0 1360 0:55 1436 1:30 0.461 Dead
3-370-0-E:3-78-0-M S 0 14 6:S 0 7 4 5 14 6124 5:44 6249 19:08 6.432 Dead
4-126-0-E:4-300-0-E S 0 11 6:S 0 17 5 5 12 6387 4:41 6619 12:56 2.134 Dead
2-238-1-A S 0 10 5 0 1995 1:31 5834 5:09 0.057 Dead
4-126-0-E S 0 24 10 6 6112 5:47 6307 23:30 5.451 Dead
2-238-1-A:3-338-0-E:-3-142-0-C S 0 24 10:S 0 50 18:S 3 100 40 7 15 17 6563 8:30 6649 13:05 3.198 Dead
3-370-0-E S 0 17 8 3 4853 2:55 6330 6:38 0.151 Dead
4-126-0-E S 0 15 7 7 5805 4:13 IGNORE IGNORE IGNORE Dead
2-238-1-A S 0 12 7 1 6492 8:16 6535 10:35 3.233 Dead
4-126-0-E:4-300-0-E S 0 15 7:S 0 12 6 5 14 6349 5:24 6448 24:50:00 11.778 Dead
2-238-1-A S 0 20 7 6 6588 8:09 6645 11:14 3.246 Dead
4-254-0-E S 0 19 5 0 1356 0:51 5065 5:22 0.073 Dead
3-370-0-E:3-78-0-M S 0 15 7:S 0 7 3 4 11 5446 4:46 5617 19:29 5.164 Dead
4-126-0-E S 0 15 7 3 4915 3:06 6149 24:02:00 1.018 Dead
4-254-0-E:1-289-2-Q S 0 20 8:S 0 14 6 66 6630 4:57 6775 13:05 3.366 Dead
4-126-0-E S 0 16 6 5 5664 4:53 5767 22:36 10.320 Dead
3-370-0-E:3-78-0-M S 0 13 7:S 0 7 3 5 13 5830 4:51 5911 13:21 6.296 Dead
2-238-1-A S074 5 5978 5:27 6031 8:16 3.189 Dead
3-370-0-E S 0 13 5 3 5487 4:23 5567 14:08 7.313 Dead
4-126-0-E:4-300-0-E S 0 16 7:S 0 12 5 5 15 6352 5:50 6605 12:50.0 1.660 Dead
170
4-110-0-E (c) S 0 20 8 6 6814 5:20 6946 11:48 2.939 Victory
4-220-0-E (b) S 0 20 8 6 6605 5:16 6772 14:04 3.162 Victory
4-174-0-E S 0 20 8 9 6409 5:19 6517 10:28 2.861 Victory
4-110-0-E (d) S 0 20 8 6 6170 5:16 6470 10:21 1.017 Victory
2-18-0-Q S195 10 6854 5:20 7170 20:03 2.794 Victory
2-161-1-T S 1 16 6 7 6642 7:39 6813 13:55 2.199 Victory
2-338-2-L S 0 14 5 0 839 :49 5072 4:37 0.054 Victory
2-18-0-Q S 1 13 5 6 6367 6:52 6610 19:56 3.226 Victory
2-338-2-L (a) S 0 14 5 0 2956 1:55 6211 4:58 0.056 Victory
2-18-0-Q S 1 24 6 0 1439 1:08 5200 15:19 0.226 Victory
2-18-0-Q S 1 11 5 3 6394 4:57 6652 19:08 3.298 Victory
2-161-1-T S173 0 1077 :53 5255 16:13 0.220 Victory
2-338-2-L S 0 14 8 7 6472 7:52 6534 11:08 3.161 Victory
2-18-0-Q S 1 13 4 7 6667 6:16 6960 22:18 3.283 Victory
2-161-1-T S 1 11 5 5 5535 6:38 5701 12:28 2.108 Victory
2-18-0-Q S 1 17 5 4 3992 5:45 4081 10:38 3.292 Victory
2-161-1-T S 1 14 6 4 6003 5:48 6168 11:26 2.048 Victory
2-338-2-L S 0 14 3 5 6344 5:29 6399 8:25 3.200 Victory
2-338-2-L S 0 15 10 0 1961 1:22 5016 4:31 0.061 Victory
2-18-0-Q S176 0 3021 2:00 6114 21:23 0.376 Victory
171
4-220-0-E S 0 12 7 7 6026 5:50 6086 9:33 3.717 Victory
4-126-0-E S 0 15 6 6 5692 7:40 5851 18:47 4.195 Victory
4-220-0-E S 0 11 3 7 6242 7:23 6307 10:50 3.185 Victory
4-110-0-E S 0 20 8 9 5720 10:03 5820 14:58 2.950 Victory
4-110-0-E S 0 20 8 0 1975 1:22 5796 4:59 0.057 Victory
4-110-0-E S000 0 1753 1:14 5493 4:37 0.054 Victory
4-174-0-E S 0 20 8 0 1470 1:05 4681 6:02 0.092 Victory
4-174-0-E S 0 20 8 7 6107 7:00 6371 12:46 1.311 Victory
4-220-0-E S 1 20 8 7 5622 8:21 5844 17:17 2.414 Victory
4-220-0-E S 0 20 8 11 6123 11:34 6221 16:42 3.143 Victory
4-220-0-E (a) S 0 20 8 11 5860 10:53 5934 14:49 3.189 Victory
4-110-0-E S 0 20 8 8 6043 8:46 6380 14:24 1.003 Victory
4-220-0-E S 0 20 8 9 6076 5:23 6153 9:33 3.247 Victory
4-110-0-E (e) S 0 20 8 6 6244 6:38 6349 11:45 2.924 Victory
4-110-0-E (f) S 0 20 8 6 6082 5:27 6176 9:54 2.840 Victory
4-220-0-E (c) S 0 20 8 6 6177 6:07 6264 10:40 3.138 Victory
4-174-0-E (a) S 0 20 8 9 6755 9:16 6844 13:24 2.787 Victory
4-174-0-E (b) S 0 20 8 9 6818 14:54 6951 21:05 2.789 Victory
4-110-0-E S 0 20 8 7 6069 6:40 6171 11:39 2.931 Victory
4-110-0-E (g) S 0 20 8 6 6257 5:57 6379 11:55 2.934 Victory
172
2-238-1-A S 0 17 7 5 6899 7:54 6948 10:26 3.102 Victory
3-370-0-E:3-78-0-M S 0 21 8:S 0 11 6 4 17 6165 4:59 6255 15:59 7.333 Victory
4-126-0-E S 0 17 8 6 6440 6:17 6540 25:00:00 11.130 Victory
2-238-1-A S 0 19 8 5 6375 7:07 6433 10:11 3.172 Victory
3-370-0-E:2-238-1-A S 0 17 9:S 0 17 9 5 15 6441 5:21 6834 25:15:00 3.038 Victory
4-126-0-E S 0 20 8 5 5978 5:12 6015 8:56 6.054 Victory
3-370-0-E:3-78-0-M S 0 23 8:S 0 13 4 12 19 6599 5:23 6704 16:30 6.352 Victory
4-126-0-E S 0 21 11 6 6444 5:19 6640 22:28 5.250 Victory
2-238-1-A S 0 10 4 6 6161 8:15 6218 11:15 3.158 Victory
3-370-0-E:3-78-0-M S 0 23 8:S 0 7 5 8 17 6623 5:22 6713 15:35 6.811 Victory
2-238-1-A S 0 16 7 5 6118 7:20 6190 11:07 3.153 Victory
2-238-1-A S087 3 6797 4:39 6849 7:27 3.231 Victory
4-126-0-E S 0 15 7 6 6416 5:19 6519 22:09 9.806 Victory
3-370-0-E:3-78-0-M S 0 15 6:S 0 7 2 5 13 6654 5:22 6855 22:04 4.985 Victory
173
bak864061471.mdb 4-174-0,S 0 12 5,6 alive at 25 Non-victory
bak864065034.mdb 3-220-100,S 0 18 7,5 alive at 25 Non-victory
bak864067299.mdb 4-174-0,S 0 11 3,4 alive at 25 Non-victory
bak864069077.mdb 4-426-0,S 0 4 4,5 dead at 25 Non-victory
bak864070868.mdb 3-410-0,S 0 5 8,0 dead at 25 Non-victory
bak864072427.mdb 4-174-0,S 0 2 2,5 alive at 25 Victory
bak864073307.mdb 4-220-0,S 0 18 7,2 alive at 25 Victory
bak864130614.mdb 4-174-0,S 0 11 4,5 alive at 25 Non-victory
bak864133499.mdb 3-319-0,S 0 4 8,19 alive at 25 Non-victory
bak864135218.mdb 4-220-0,S 0 12 10,6 alive at 25 Victory
bak864137154.mdb 4-220-0,S 0 11 4,6 alive at 25 Non-victory
bak864139521.mdb 2-126-1,S 0 10 5,8 alive at 25 Non-victory
bak864143333.mdb 3-97-200,S 0 13 7,6 alive at 25 Non-victory
bak864145612.mdb 2-238-1,S 0 21 7,9 alive at 25 Non-victory
bak864146805.mdb 1-126-0,S 0 16 6,4 alive at 25 Non-victory
bak864147559.mdb 4-220-0,S 0 12 7,7 alive at 25 Victory
bak864150998.mdb 4-126-0,S 0 15 6,6 alive at 25 Non-victory
bak864152650.mdb 4-220-0,S 0 11 3,7 alive at 25 Non-victory
bak864154021.mdb 4-110-0,S 0 20 8,9 alive at 25 Non-victory
bak864154199.mdb 4-110-0,S 0 20 8,-1 alive at 25 Non-victory
bak864156190.mdb 4-174-0,S 0 20 8,7 dead at 25 Non-victory
bak864158375.mdb 4-220-0,S 0 20 8,11 alive at 25 Non-victory
bak864216349.mdb 4-110-0,S 0 20 8,8 alive at 25 Non-victory
bak864218550.mdb 4-220-0,S 0 20 8,9 alive at 25 Non-victory
bak864224172.mdb 4-110-0,S 0 20 8,6 alive at 25 Non-victory
bak864226002.mdb 4-220-0,S 0 20 8,6 alive at 25 Non-victory
bak864232255.mdb 4-174-0,S 0 20 8,9 dead at 25 Non-victory
bak864233985.mdb 4-174-0,S 0 20 8,9 dead at 25 Non-victory
bak864235825.mdb 4-110-0,S 0 20 8,7 alive at 25 Non-victory
bak864240162.mdb 4-110-0,S 0 20 8,6 alive at 25 Non-victory
bak864241974.mdb 4-220-0,S 0 20 8,6 alive at 25 Non-victory
bak864243418.mdb 4-174-0,S 0 20 8,9 dead at 25 Non-victory
bak864245011.mdb 4-174-0,S 0 20 8,10 dead at 25 Non-victory
bak864302407.mdb 4-220-0,S 0 20 8,6 dead at 25 Non-victory
bak864304937.mdb 4-110-0,S 0 20 8,6 alive at 25 Non-victory
bak864159995.mdb 4-220-0,S 0 20 8,8:4-220-4,S 0 20 8,9:-1-158-0,S 0 20 8,12:-1-118-1dead at 25 Non-victory
bak864046256.mdb 2-166-2,S 1 20 9,5 alive at 25 Non-victory
bak864047368.mdb 3-164-2,S 1 20 8,10 dead at 25 Non-victory
bak864048177.mdb 1-300-0,S 1 20 8,7 dead at 25 Non-victory
bak864052611.mdb 2-200-2,S 1 20 8,6 alive at 25 Non-victory
bak864055679.mdb 4-10016-0,S 1 24 7,6 alive at 25 Non-victory
bak864058294.mdb 2-430-1,S 1 16 0,12:2-414-0,S 1 12 7,15:3-370-0,S 0 11 7,20 alive at 25 Non-victory
bak864060789.mdb 3-370-0,S 0 12 4,6;3-78-0,S 0 11 5,16 alive at 25 Non-victory
bak864062875.mdb 4-126-0,S 0 11 5,5 alive at 25 Victory
bak864063482.mdb 2-238-1,S 0 10 4,-2 alive at 25 Non-victory
bak864064731.mdb 2-238-1,S 0 10 5,6 alive at 25 Non-victory
bak864069356.mdb 4-126-0,S 0 12 6,5 alive at 25 Non-victory
bak864070334.mdb 2-238-1,S 0 16 6,1 alive at 25 Victory
bak864071545.mdb 3-370-0,S 0 14 6,5:3-78-0,S 0 7 4,14 dead at 25 Victory
bak864075466.mdb 2-238-1,S 0 17 7,1 alive at 25 Victory
bak864133839.mdb 3-370-0,S 0 18 6,2:3-78-0,S 0 16 7,9 dead at 25 Non-victory
bak864135633.mdb 3-370-0,S 0 13 7,6:3-78-0,S 0 10 6,17 alive at 25 Victory
174
bak864138705.mdb 2-238-1,S 0 17 7,5 alive at 25 Non-victory
bak864139851.mdb 3-370-0,S 0 21 8,4:3-78-0,S 0 11 6,17 dead at 25 Victory
bak864141432.mdb 4-126-0,S 0 17 8,6 alive at 25 Non-victory
bak864150180.mdb 2-238-1,S 0 19 8,5 alive at 25 Non-victory
bak864154486.mdb 3-370-0,S 0 17 9,5:2-238-1,S 0 17 9,15 alive at 25 Victory
bak864155914.mdb 4-126-0,S 0 20 8,5 alive at 25 Non-victory
bak864157447.mdb 3-370-0,S 0 23 8,12:3-78-0,S 0 13 4,19 dead at 25 Victory
bak864159709.mdb 4-126-0,S 0 21 11,6 alive at 25 Victory
bak864161657.mdb 2-238-1,S 0 10 4,6 alive at 25 Non-victory
bak864219191.mdb 3-370-0,S 0 23 8,8:3-78-0,S 0 7 5,17 dead at 25 Victory
bak864222962.mdb 2-238-1,S 0 16 7,5 alive at 25 Non-victory
bak864229658.mdb 4-126-0,S 0 15 7,6 alive at 25 Non-victory
bak864237528.mdb 4-126-0,S 0 11 6,5:4-300-0,S 0 17 5,12 alive at 25 Victory
bak864240796.mdb 2-238-1,S 0 10 5,0 alive at 25 Victory
bak864241964.mdb 4-126-0,S 0 32 12,6 alive at 25 Victory
bak864246405.mdb 2-238-1,S 0 24 10,7:3-338-0,S 0 50 18,15:-3-142-0,S 3 100 40,17 dead at 25 Non-victory
bak864247571.mdb 3-370-0,S 0 17 8,3 dead at 25 Non-victory
bak864249116.mdb 4-126-0,S 0 15 7,7 alive at 25 Non-victory
bak864306364.mdb 2-238-1,S 0 12 7,1 alive at 25 Victory
bak864307962.mdb 3-370-0,S 0 15 6,5:3-78-0,S 0 7 2,13 alive at 25 Victory
bak864309904.mdb 4-126-0,S 0 15 7,5:4-300-0,S 0 12 6,14 alive at 25 Non-victory
bak864312598.mdb 2-238-1,S 0 20 7,6 alive at 25 Non-victory
bak864313387.mdb 3-370-0,S 0 15 7,4:3-78-0,S 0 7 3,11 dead at 25 Non-victory
bak864316650.mdb 4-254-0,S 0 19 5,-2 alive at 25 Non-victory
bak864322076.mdb 4-254-0,S 0 20 8,6:1-289-2,S 0 14 6,6 alive at 25 Non-victory
bak864322551.mdb 4-126-0,S 0 15 7,3 alive at 25 Non-victory
bak864324268.mdb 4-126-0,S 0 16 6,5 alive at 25 Non-victory
bak864325188.mdb 3-370-0,S 0 13 7,5:3-78-0,S 0 7 3,13 dead at 25 Non-victory
bak864331991.mdb 2-238-1,S 0 7 4,5 alive at 25 Non-victory
bak864333532.mdb 3-370-0,S 0 13 5,3 alive at 25 Non-victory
bak864335119.mdb 4-126-0,S 0 16 7,5:4-300-0,S 0 12 5,15 alive at 25 Non-victory
bak865447643.mdb 2-238-1,S 0 11 6,6 alive at 25 Non-victory
bak863838148.mdb 4-174-0,S 1 40 16,1 alive at 25 Non-victory
bak863838468.mdb 4-174-0,S 1 10 8,-1 alive at 25 Non-victory
bak863838968.mdb 3-370-0,S 1 12 8,-1 alive at 25 Non-victory
bak863839796.mdb 3-370-0,S 3 85 16,-1 alive at 25 Non-victory
bak863847098.mdb 3-370-0,S 3 100 40,1 alive at 25 Non-victory
bak863862392.mdb 4-126-0,S 1 26 12,-2 alive at 25 Non-victory
bak863866243.mdb 4-254-0,S 1 20 40,2 alive at 25 Non-victory
bak863867645.mdb 4-254-0,S 1 20 40,2:1-220-3,S 3 100 40,7 dead at 25 Non-victory
bak863926517.mdb 4-174-0,S 3 100 40,3:3-370-0,S 3 98 40,9 dead at 25 Non-victory
bak863933648.mdb 4-174-0,S 3 100 40,-1 alive at 25 Non-victory
bak863934960.mdb 4-254-0,S 3 99 39,4 dead at 25 Non-victory
bak863936496.mdb 4-254-0,S 3 100 40,-2 dead at 25 Non-victory
bak863990232.mdb 4-254-0,S 3 100 40,2:4-174-0,S 3 100 40,4 dead at 25 Non-victory
bak863996906.mdb 2-200-2,S 0 32 7,2 alive at 25 Non-victory
bak863998797.mdb 1-206-3,S 0 28 13,-3 alive at 25 Non-victory
bak864164285.mdb -1-149-2,S 0 40 16,-1 alive at 25 Non-victory
175
Bibliography
[1] J.E.Hopcroft, J.D.Ullman. Introduction to Automata Theory, Languages, and Com-
putation, Addison-Wesley, 1979.
[2] Naval Ships' Technical Manual. S9086-S3-STM-010. Chapter 555 "Shipboard Fire-
ghting". 1988.
[3] USS John Paul Jones (DDG 53) Instruction 3541.1B. Repair Party Manual and
Main Space Fireghting Doctrine. 1994.
[4] H. Rogers, Jr. Theory of Recursive Functions and Eective Computability. McGrow-
Hill, B.C., 1967.
[5] J.L.Peterson. Petri Net Theory and the Modeling of Systems. Prentice-Hall, Inc.,
1981.
[6] P.H.Winston. Articial Intelligence. Addison-Wesley Publishing Company., 1984.
[7] Z.H.Najem. A Hierarchical Representation of Control Knowledge For A Heuristic
Classication Shell. Ph.D. Thesis. UIUC. 1993.
[8] D.L.Tate. Development of a Tactical Decision Aid for Shipboard Damage Control.
NRL/FR/5580-96-9837.
[9] The Damage Con-
trol Automation for Reduced Manning (DC-ARM) Program. Call for proposals at
http://chemdiv-www.nrl.navy.mil/6180/6180ext/dcarm.html-ssi.
176
[10] Y.T.Park, S.Donoho, D.C.Wilkins. Recursive Heuristic Classication. International
Journal of Expert Systems. 1993.
[11] Y.T.Park, K.W.Tan, D.C.Wilkins. Minerva 3.0: A Knowledge- based Expert System
Shell with Declarative Representation and Flexible Control. UIUC, Department of
Computer Science. 1991.
[12] D.C.Wilkins, J.A.Sniezek. Multimedia Scenario Generation and Critiquing: The
Damage Control Domain. ONR Proposal. 1995.
[13] B.G.Buchanan, E.H.Shortlie (eds.). Rule-Based Expert Systems: The MYCIN Ex-
periments of the Stanford Heuristic Programming Project. Addison-Wesley. 1984.
[14] W.J.Clancey, R.Letsinger. NEOMYCIN: Reconguring a rule-based expert system
for application to teaching. In W.J.Clancey, E.H.Shortlie (eds.) Readings in Medical
Articial Intelligence: The First Decade, pp. 361-381. Addison-Wesley. 1984.
[15] Guardian Project at
http://www-ksl.stanford.edu/projects/guardian/index.html.
177
[20] V.Bulitko, D.C.Wilkins. Minerva: A Blackboard Expert System For Real-Time
Problem-Solving and Critiquing. KBS Technical Report UIUC-BI-KBS-98-003, U-
niversity of Illinois at Urbana-Champaign, 1998.
[21] A.Barr, P.R.Cohen, E.A.Feigenbaum (eds.). The Handbook of Articial Intelligence.
Volume IV, Chapter XVI by H.P.Nii. Addison-Wesley. 1989.
[22] S.Haykin. Neural Networks: A Comprehensive Foundation. Macmillan College Pub-
lishing Company., 1994.
[23] E.A.Feigenbaum. The Art of Articial Intelligence: I. Themes and Case Studies of
Knowledge Engineering. Proceedings of the Fifth International Joint Conference on
Articial Intelligence, 1014-1029. Cambridge, MA. 1977.
[24] S.Ramachandran. Temporal Structures in Expert Critiquing Systems, Tech. Report,
UIUC-BI-KBS-96-008, University of Illinois at Urbana-Champaign, 1996.
[25] J.W.Shalvik, R.J.Mooney, G.G.Towell. Symbolic and Neural Learning Algorithms:
An Experimental Comparison. In B.G.Buchanan, D.C.Wilkins (eds.) Readings in
Knowledge Acquisition and Learning, Morgan Kaufmann,1993.
[26] J.R.Quinlan. Induction of Decision Trees. In B.G.Buchanan, D.C.Wilkins (eds.)
Readings in Knowledge Acquisition and Learning, Morgan Kaufmann,1993.
[27] T.G.Dietterich. Limitations on Inductive Learning. In B.G.Buchanan, D.C.Wilkins
(eds.) Readings in Knowledge Acquisition and Learning, Morgan Kaufmann,1993.
[28] D.C.Wilkins, J.A.Sniezek. Intelligent Scenario Generation and Critiquing for Crisis
Decision Making: The Damage Control Domain. A 2-year renewal proposal for ONR
grant. KBS. University of Illinois at Urbana-Champaign. 1997.
[29] See5: An Informal Tutorial. http://www.rulequest.com/see5-win.htm. 1998.
[30] W.F.Clocksin, C.S.Mellish. Programming in Prolog. 3rd ed. Springer-Verlag. 1987.
178
[31] D.C.Wilkins, J.A.Sniezek. An Approach to Automated Situation Awareness for Ship
Damage Control. KBS Technical Report UIUC-BI-KBS-97-012. University of Illinois
at Urbana-Champaign, 1997.
[32] D.C.Wilkins, J.A.Sniezek. Automated Situation Awareness for Ship Damage Control.
NRL Program Review. KBS. University of Illinois at Urbana-Champaign. 1997.
[33] O.J.Mengshoel, D.C.Wilkins. Recognition and Critiquing of Erroneous Agent Action-
s. In M.Tambe and P.Gmytrasiewicz (eds.), AAAI-96 Workshop on Agent Modeling,
p.61-68, AAAI Press, Portland, OR, 1996.
[34] T.H.Cormen, C.E.Leiserson, R.L.Rivest. Introduction to Algorithms. The MIT Press.
1990.
[35] R.Lindsay, B.G.Buchanan, E.A.Feigenbaum, J.Lederberg. Applications of articial
intelligence for organic chemistry: The DENDRAL project, New York: McGraw-
Hill, 1980.
[36] L.D.Erman, F.Hayes-Roth, V.R.Lesser, D.R.Reddy. The HEARSAY-II speech un-
derstanding system: Integrating knowledge to resolve uncertainty. ACM Computing
Survey 12:213-253, 1980.
[37] E.Grois, W.H.Hsu, M.Voloshin, D.C.Wilkins. Bayesian Network Models for Gener-
ation of Crisis Management Training Scenarios. (in press). 1998.
179
Vita
Vadim V. Bulitko was born on October 6, 1974 in Odessa, Ukraine. He had attended
Odessa State University for four years and received a Bachelor of Science degree in
Mathematics with highest honors in July 1995. His minors were Computer Science and
Psychology. Vadim has done some internship work at Automated Vision Systems, Inc.
in 1994.
In fall 1995 he came to the University of Illinois as an exchange student in Computer
Science. A semester later Vadim joined the Knowledge Based Systems Group at Beckman
Institute. In fall 1996 he began his graduate studies in Articial Intelligence with Dr.
David C. Wilkins being his research advisor. Vadim's research has focused on using
blackboard architectures for real-time control and critiquing and is presented in this
thesis.
Vadim received his Master of Science degree in Computer Science in May 1998. His
further endeavors are unknown.
180