Abstract i
Acknowledgements ii
1. Project
Introduction
1.1 Project Background 1
1.2 How the work was carried out 1
1.3 Problem Statement 2
1.4 Aims, Objectives and the Methods of
approach 4
2. Literature Review
2.1 Introduction 6
2.2 AI Techniques for Engineering Design 7
2.3 GE Fanuc Sizer 7
2.4 What is knowledge Representation?
2.4.1 Introduction 7
2.4.2 A Surrogate 8
2.4.3 A set of Ontological Commitments 9
2.4.4 A theory of reasoning 11
2.4.4.1 What is intelligent reasoning? 11
2.4.4.2 What inferences are made? 13
2.4.5 A medium of efficient computation 13
2.4.6 A medium of human expression 14
2.4.7 Conclusion 14
2.5 NEMA Code 14
3. The Engineering Assistant
3.1 Purpose of the expert system 16
3.2 Selection of an environment
3.2.1
The nature of the environment required 16
3.2.2
Selection of a Representation Scheme 20
3.2.3
Survey of Software Tools and Selection 22
3.3 Design and its Rationale
3.3.1
Introduction 25
3.3.2
How the system works 25
3.3.3
Outputs of the system 28
3.3.4
A classification of Motors 29
3.3.5 Knowledge Representation Issues
3.3.5.1
Granularity of Representation 30
3.3.5.2
Ontological Commitment 32
3.3.5.3
Forward Versus Backward Reasoning 33
3.3.6 Object Oriented Design
3.3.6.1
Introduction 35
3.3.6.2 The mapping of OO concepts to Logic Programming
35
concepts
3.3.6.3 Hierarchical Reasoning 40
3.3.7 Translating NEMA rules to Logic Predicates 44
3.4 Handling of Uncertainty 45
3.5 Windows Programming and Logic Programming 45
3.6 Drawbacks of the Visual Prolog Language 48
4. The OI-KSL language
4.1 The need for such a Language 49
4.2 The Features of the Language 49
4.3 How the Program is Designed
4.3.1 Introduction 50
4.3.2 Object Module 50
4.3.3 Question Module 51
4.3.4 How it works 52
4.4 The Language selection 54
4.5 Compiler Theory
4.5.1 Introduction 54
4.5.2 Stages of a Compiler
4.5.2.1 Introduction 55
4.5.2.2 Lexical Analysis 55
4.5.2.3 Syntax Analysis 57
4.5.2.4 Semantic Analysis 58
4.6 Architecture and Functionality of the Compiler
4.6.1 Introduction 58
4.6.2 Intermediate Structures used
4.6.2.1 Introduction 59
4.6.2.2 Terminal Table 59
4.6.2.3 Object Table 59
4.6.2.4 Attributes Table 60
4.6.2.5 Rules Table 60
4.6.2.6 Methods Table 61
4.6.2.7 Question Table 61
4.6.2.8 Uniform Symbol Table 61
4.6.2.9 Difference Table 61
4.6.3 Stages of a Compiler
4.6.3.1 Introduction 62
4.6.3.2 Lexical Analysis 62
4.6.3.3 Syntax Analysis 63
4.6.3.4 Semantic Analysis 63
4.6.3.5 The Inference Process 64
4.6.4 Reconciling OOP and Backtracking 65
4.6.5 Search, Conflict Resolution and Rule Selection 66
4.6.6 Error Routines 67
4.6.7 Knowledge Base 67
4.7 Comparison of Visual Prolog and OI-KSL 67
4.8 The contribution of OI-KSL 71
5. A Fuzzy Logic Implementation
5.1 Introduction 72
5.2 Probability Theory & Fuzzy Logic 73
5.3 The case of the Electric bulb 73
5.4 The Fuzzy Logic Methodology
5.4.1 Identification of Linguistic Variables 73
5.4.2 Defining Linguistic Terms 74
5.4.3 Defining the Fuzzy Knowledge Base 74
5.4.4 Defining the Fuzzy sets for the Linguistic Terms 74
5.4.5 Fuzzy Inference
5.4.5.1 Introduction 75
5.4.5.2 Fuzzification 75
5.4.5.3 Fuzzy Inference 77
5.4.5.4 Defuzzification 78
5.5 A Brief note on the use of weighted average
method for De-Fuzzification 78
6. Conclusions
6.1 Problems Encountered
6.1.1 Literature Survey 79
6.1.2 Knowledge Acquisition 79
6.2 Critical Appraisal 80
6.3 Contributions 81
6.4 Future Work 82
References 83
Appendix I - The syntax for the OI-KSL language 86
Appendix II - The Prolog Fuzzy Logic Implementation 88
Appendix III – An OI-KSL Program 92