Suppose that you have been hired to build a decision-support system (DSS) for a large corporation that does business throughout the world. This corporation must often make decisions about new wholesaler distributors for its products in another country.
Sometimes the corporation would like to acquire an existing distributor and the decision is, "Do we buy distributor X?"
Sometimes it intends to initiate a joint venture with an existing distributor and the decision is, "Do we work with distributor X?"
The company employs a number of financial analysts who make recommendations on these decisions. Why might the corporation need a DSS?
Financial analysts embody knowledge.
Financial analysts are a scarce commodity.
Hence, the need for a decision-support system.
All wholesale distributor decisions depend on a number of factors:
These are the parameters of the decision.
The system will examine the data of the target corporation and return an answer of "yes", "no", or maybe a less certain answer such as "probably yes", "probably no", or "not sure".
These are the possible decisions.
This is a recognition task. The system must determine if a particular label applies to a given situation. People have to make recognition decisions in all domains, in all sorts of contexts.
We could implement a DSS for this problem as a search agent, a logical inference agent, a learning agent, a planner--or using a slew of other AI techniques. Each technique will introduce some thorny implementation decisions...
Do we want to build solutions from scratch each time, re-learning the implementation lessons that other pro-grammers have learned?
Write a rule base that associates patterns of parameter values with particular decisions:
IF competence = high and size of workforce = (> 50,000) and intensity = low and complementary products = none and ... THEN decision = yes (or no, or ...)
Each rule associates one pattern with one choice. Making the decision involves finding the rule whose pattern (best) matches the input data and returning its choice.
Such a rule is called a simple matcher. A system made of such rules does simple matching.
Simple matching is a technique that is straightforward to implement as a logical inference agent, as long as the logic allows simple variables. Many logical inference programs evolve into a set of simple matchers.
Simple matchers have a number of significant drawbacks:
... as time permits.