jtappero@pacbell.net
Lab Assignment: 1 - Rule Based Architecture
Wine Tasting Advisor
Wine and Cheese Pairing - Algorithm
The following diagram depicts the decision making algorithm used in assisting a user to select wine based on a preferred cheese, or alternatively, select a cheese based upon wine preferences. The algorithm uses comparatively simple classification methods, based upon user selections. Arguably un-interesting for this project assignment, but added for completness of the overall Wine Advisor program's functionality.

Sample Run 1 - Wine and Cheese Pairing

Description - Run 1 - By Cheese
The "Wine and Cheese Pairing" option is run by selecting option [3] from the main menu options. The program then prompts to see if you would like to continue based upon cheese or wine. In this run, option [1] - cheese was taken, which causes the program to generate a list of cheese based upon information contained in the knowledgebase. The chees options are then displayed and the use may select a desired cheese. From there, the program will display one or more wine selections that go with the selected cheese.
So What is the Program Doing?
The "Wine and Cheese Pairing" mode is more of a "database lookup" program than an expert system, but it does demonstrate some of the lowest level functionality of a rules-based application. For example, the wine and cheese lists are generated by rules rather than hard-coded association lists. In its current form, the program performs a basic database "query" against the knowledgebase of cheeses.
Sample Run 2 - Wine and Cheese Pairing

Description - Run 2 - By Wine
In this example run, because the selection is based upon wine, both the color and taste preferences are requested from the user (using backward-chaining as described earlier). Once the preferences have been entered, the program builds a set of candidate recommendations for which cheeses go well with the indicated preferences.
Usefulness and Limitations
As mentioned in the intro above, this aspect of the Wine Advisor doesn't exercise the expert system engine to any great extent, but it does help to fill out the functionality of the overall Wine Advisor's features. The primary usefulness is to assist the user in selecting cheeses for a particular wine, or wines to go with a selected cheese. The primary limititations are obviously the completeness and accuracy of the cheese-to-wine knowledgebase. Possibly adding user-defined preferences for certain types of cheeses, and/or use of a "favorites" heuristic would help to make the program more useful.