Artificial Intellegence Patterns

-- Architecture
-- Original
-- for Abstraction
-- for Problems

-- Emotion Patterns

C++ Implementation



Pandemonium Abstraction Patterns

Pandemonium may be used to implement abstraction - to turn input information into a (usually) smaller amount of higher-value output information.

On this page:

Simple Abstraction Patterns

An individual demon might implement one or more of the patterns described below.

Output is an accumulation of the input.

Output is the input organized in a different way.

Output is a subset of input.

Output describes objects composed of components in the input.

Output describes specifics are deduced from input that describes a specific instance of a more general class. (ex. "That dog sees me. Dogs that see me may attack. Therefore that dog may attack.")

Output describes generalizations observed in the input. (ex. None of the dogs that have seen me have attacked. Therefore, being attacked by a dog (around here, doing what I am doing) is not a big risk.)

Output is a goodness resulting from an evaluation of (some aspect of) the input.

Output describes objects derived from what is described in the input. This is a general class - all types of abstraction are special cases of derivation.

Partial Abstraction
Output is a subset of the input plus information that is an abstraction of the remainder of the input.

Special Abstraction Patterns

A decision is a special case of conception where the output concept is a decision to take some action - usually, a choice made from a set of options. Using pandemonium for decision-making and problem-solving is described here.

An emotion is a special case of evaluation, in which the resulting goodness variable persists over time and is affected over time by factors particular to the type of emotion. (ex. If something potentially bad is observed fear goes up, but if nothing bad develops for a while, the fear slowly goes down.)

Complex Abstraction Patterns

Input data may be complex - it may be from multiple sources or the data from a single source may have multiple parallel components, such as an array of pixels. Pits or layers of demons may be used to abstract more useful information from complex input.

Raw input data (ex. from an eye or camera) is accumulated and organized into a useful form, the results being sensations. If only one demon is used, the process might be called buffering. If the output is to be an array of pixels, there could be one demon for each pixel or one demon that returns an array of pixels.

Sensations (ex. a set of dark pixels in a row) are recognized as being components of a composite object (ex. a line). This process might be referred to as 'pattern-matching'. An individual demon might watch for one or more patterns. An individual demon might watch a subset of the input (ex. a particular range of pixels).

A combination of perceptions (ex. 3 lines) may be recognized, on the basis of having certain characteristics and relationships (ex. each line sharing an endpoint with only one other), as being an instance of a more general thing - a concept (ex. a triangle). A concept (ex. that animal over there) may also be recognized as an instance of a general concept (ex. an animal that might eat me). Concepts may be created from perceptions or from other concepts.