Artificial Intellegence Patterns

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

-- Emotion Patterns

C++ Implementation




AIPatterns.Org is a collection of information about artificial intelligence patterns.

Anyone that would like to comment, criticize, challenge, question, correct, or make contributions is urged to contact Brian Marshall at

Definition of AI Patterns

An AI pattern is a design for a relatively simple, independent technique or object that can be used in software to add an aspect of intelligence to decision-making, projection/estimation, pattern recognition or problem-solving.

General AI Patterns

In its general form, pandemonium consists of an object that owns a a set of shrieking demons and uses the information being shrieked to make decisions. Each demon monitors its input for certain conditions. If the conditions are observed, the demon shrieks. The volume of a shriek is based on the degree to which the input matches the conditions and/or the importance the demon attaches to the conditions. Pandemonium can be used to...

  • monitor a situation and trigger an action when required; delegate the requirement to watch for a condition.
  • implement abstraction - ex. to turn sensations into perceptions or to turn perceptions into conceptions.
  • make decisions, solve easy problems, explore the solution space of hard problems.
  • project the state of a system into the future; generate multiple possible projections of system state.

An emotion object maintains a goodness-value that, possibly in conjunction with other emotions, is used to make a decision. The goodness-value of an emotion changes as a result of evaluations of events that have occurred. An emotion can also be used to evaluate hypothetically how good/bad and event would be (without having major effect on the stored goodness-value). Emotions can be used to...

  • make decisions where the number of considerations would make hard-wiring the logic difficult. For example, it is easier to hard-wire the reasons a deer should be afraid, and to run away when the fear is great enough, than it is to hard-wire when a deer should run away.
  • perturb the process of repeatedly attempting to find a solution to a problem so that, in different attempts, different possible solutions will be tried.
  • perturb the process of repeatedly projecting the future state of a system so that different possibilities are projected. This could be useful in conjunction with Monte Carlo methods.