W.A.N.G.™, or

Wardrobe Assistant for the Normal Guy™

by Richard Arter and Pedro Rodriguez


Domain Description

    Getting dressed in the morning can be a difficult and complicated task, especially if you are a guy with very little fashion sense.  Imagine: you have a certain number of pants, a larger number of shirts, a smaller number of shoes, and you want to venture out into the world without embarrassing yourself too badly by dressing like a clown, and yet all you know is "It's cold out, maybe I oughta wear a coat."  How can you be expected to pick out an acceptable combination of clothes if you don't even know the first thing about what colors go together.  Well, that is where W.A.N.G.™ comes in.  W.A.N.G.™ can help you to choose your clothes for the day based on what items you actually have in your wardrobe and what the weather is supposed to be.

    For example, the user, still groggy from having just awoken from sleep, asks the agent, W.A.N.G.™, what he should wear today.  The agent would use the rules that have been defined (our rules of fashion)  to go through its list of of clothing items (the user's wardrobe) and return the acceptable, or fashionable, combinations of shirt, pants, and shoes.  The user, having become more coherent as time passes and more agitated as his caffeine starved cells begin to ache in anticipation of walking to Starbucks, fully and fashionably dressed, recognizes that he would like to wear his comfy, khaki pants.  The user would ask the agent for all of the possible combinations of acceptable outfits to wear with khaki pants.  W.A.N.G.™ would respond with the fashionable combinations of shirts and shoes with khaki pants.  The user might then ask what the appropriate color belt is to wear with a particular combination.  "Brown, of course," W.A.N.G.™ replies.  The user might then remember another fact that he wishes the agent to take into account; he enters the fact that the weather is going to be cold and rainy.  Now, in addition to the previous combination, the agent also tells you to "kindly grab a coat and don't forget your umbrella, sir."


Illustrative Example

    Suppose you want to ask a query of W.A.N.G.™  Our current version of W.A.N.G.™  supports only one query; what_to_wear(...).  It must be asked in this form: what_to_wear(Top, Bottom, Footwear, Weather), where Top is some type of shirt or sweater, Bottom is either pants or shorts, Footwear is either shoes or sneakers, and Weather is hot, cold, rain, etc....  Each item in the wardrobe has some color.  (See the actual code for all the options.)  

    If you are at the point where you are ready to ask a query of W.A.N.G.™, then you must already have told W.A.N.G.™ what items are in your wardrobe.  Unfortunately, since this initial version of W.A.N.G.™ was developed rapidly, our current, unsophisticated version does not support the W.A.N.G.™ Wardrobe Sensor Module™.  Look to future releases for further developments along this line.

    Without further ado, the query:  

what_to_wear(shirt(blue, long_sleeved), B, F, rain).

    This query asks: given that I want to wear a blue, long-sleeved shirt and that it is raining,  what Bottoms and Footwear would complement it?

    W.A.N.G.™ would respond with those combinations of Bottoms and Footwear which comply with our rules of fashion.  Again, due to time constraints, we were unable to make W.A.N.G.™ interface with the W.A.N.G.™ Wardrobe Effector Module™, which would eliminate the need for the user to actually go and select the clothes and dress himself.  Look to future releases for further developments along this line. 


How Our Program Works

    Our program starts out by defining the basic rules of fashion which we decided upon. These rules include what Tops go with what Bottoms, as well as which Footwear matches the the Top and Bottom. This actually was the hardest part of our project, given that fashion is very subjective. Trying to instill W.A.N.G.™ with a certain sense of practical fashion was very challenging. Next we have the agent's knowledge base, which tells the agent what articles of clothing are actually owned by the user. Then, we had to invent rules for the agent to be able to tell what kind of clothing is appropriate for a given set of weather conditions.  For example, we don't want W.A.N.G.™ to say that we should wear shorts if the weather is cold.  With all of these elements in place, we are able to ask the agent what to wear, given a certain set of conditions specified by the user.


Conclusions

    There is plenty of room to improve upon this version of W.A.N.G.™.  Our rules of fashion could be expanded to handle a more diverse array of clothing apparel.  For instance, we currently have rules for some basic colors like red, yellow, blue, brown, etc.... But what about olive green?  Beyond that, there should be a set of rules to take care of plaid patterns.  What about wearing white after Labor Day?  The scope of this program is limited only by time constraints and the programmer's fashion sense.