A central issue in knowledge representation is to effectively describe the ways in which complex systems behave, so that software agents can use these descriptions for flexible problem solving without a programmer spending time to explicitly code sequences of problem-specific decisions. Model-Based Reasoning is based on the idea of a knowledge base (the “model’) that describes a particular problem area in terms of the behaviour of its smaller building blocks (e.g., pumps and valves in hydraulic systems, switches in electrical systems, or gates in digital circuits). A general problem-solving engine then experiments with different ways in which these components can interact to find solutions to problems such as “why doesn’t this device work?” (diagnosis) or “how can I put these parts together to get a functioning system” (configuration and design).
Research in model-based diagnosis searches for representations and algorithms for identifying faults in technical devices ranging from car engines to space probes. Once designed, a diagnosis tool can use a given model for multiple systems from that problem domain, identify complex fault combinations, distinguish between different kinds of faults, make repair suggestions, and generate fault trees for training and documentation purposes, using a set of domain independent reasoning mechanisms.