Kiro Ivanovski's AI Project
B.A.R. : Bartending Assistant Robot

Contents
Domain
Illustration
Methods
Conclusions

Domain

B.A.R - Bartending Assistant Robot - is the bartender of the future. It contains a database of known drinks and likewise a database of available ingredients. Both of these can be modified by the agent. B.A.R first asks for a drink name, if the name is not found in its knowledgebase it will ask you whether you have spelled the drink correctly. If the spelling is incorrect it will go back and ask for a drink name again. If the spelling is correct it asks you weather you would like to teach this new drink to it. At this point you have two options. An answer of yes will take you through the drink learning process and an answer of no will take you to the drink suggestion process. To suggest a drink B.A.R will ask you for your favorite alcohol and search its knowledgebase for a drink with that ingredient, and respond with the first one found. This is very primitive, and I hope to have the suggestion process be a little more complex in the future. If you choose the drink it suggested it will make it for you. The drink learning process is also still under construction. It will learn all the ingredients needed and then attempt to create a process for making the drink. One the drink is learned, you can request B.A.R. to make it for you. 

 


Illustration

 
Base Case:

| ?- make .
Enter the name of a drink|: screw_driver.
Making drink.........
pickup_glass(glass(medium))
pour(ice,glass(medium))
mix(vodka,oj,glass(medium))
stir(glass(medium))
yes

Spelling Error:

| ?- make .
Enter the name of a drink|: lmon_vodka.
Drink lmon_vodka not found!
Did you spell it right? [yes or no]
|: no.
Enter the name of a drink|: lemon_vodka.
Making drink.........
pickup_glass(glass(medium))
mix(vodka,lemon_juice,glass(medium))
pour(lemon,glass(medium))
stir(glass(medium))
yes

Suggestion:

| ?- make .
Enter the name of a drink|: something.
Drink something not found!
Did you spell it right? [yes or no]
|: yes.
Would you like to teach me this new drink? [yes or on]|: no.
Would you like some suggestions on available drinks? [yes or on]|: yes.
What type of alcohol do you prefer?
vodka, gin, scotch|: gin.
try a gin_coco ok? [yes or no]
|: yes.
Making drink.........
pickup_glass(glass(small))
pour(ice,glass(small))
mix(gin,coconut,glass(small))
stir(glass(small))
yes

Learning:

| ?- make .
Enter the name of a drink|: scotch_rocks.
Drink scotch_rocks not found!
Did you spell it right? [yes or no]
|: yes.
Would you like to teach me this new drink? [yes or on]|: yes.
Enter the ingredient [enter done to end!]|: scotch.
Enter the ingredient [enter done to end!]|: ice.
Enter the ingredient [enter done to end!]|: done.
What glass should I use? [large, medium, small]|: medium.
Drink learned!
Enter the name of a drink|: scotch_rocks.
Making drink.........
pickup_glass(glass(medium))
pour(ice,glass(medium))
pour(scotch,glass(medium))
yes

 



Methods

B.A.R searches through knowledge base for the_drink(name, I,G,P) where I is the list of ingredients of the drink, G is the glass used for the drink, and P is the list of steps used for making the drink. 

The rest of the program works on manipulating the lists of ingredients and processes and also adding and removing items from the knowledgebase.

You can also replenish the supply of ingredients in the knowledgebase using 'stock' but this is currently unnecessary, because as of yet I haven't found the right way to "use up" the ingredients.

 


Conclusions

It would certainly be self-rewarding to get this program to run the way I originally envisioned it. I hope to gather a stronger grasp for Prolog that will enable me to add more features to B.A.R. Overall, I'm glad that this project has started me on a road to explore the interesting field of AI. Through it I hope to broaden my study of cognitive science and psychology.