COMP 4200 - Expert Systems Assignment 1B – Practical Part Dating Agency “We-Harmony” Summer is gone, Winter days are coming and people start to feel cold and lonely. This is the right time for a new business, an online Dating Agency: We-Harmony. You will develop a rule-based system to be used by the online Dating Agency. The core system consists of a client fact base, and a rule or set of rules specifying heuristic matching constraints. The system will run in an interactive mode, with input from the client/user. The user will be asked queries to set up a profile, and then the system will suggest the best possible matching partners. Dating Agency Programming Guideline Based on our favourite template, the person template, you develop a database storing information about singles seeking suitable company. You use 12 features to describe clients of the Dating Agency. These features include: nick-name (for privacy reasons, we keep the real name in a separate database) age gender (restricted set of possible values here) hair (hair-colour, restricted to the values: blond, brown, black, and red) eyes (eye-colour, restricted to the values: brown, black, blue and green) occupation (choose set of possible values) hobbies (choose set of possible values) personality type (e.g. relaxed, calm, boring, hyper, ...) income (use quantified qualitative values, like 1=student, 2=poor, 3=getting by, 4=doing okay, 5=rich, 6=really rich and 10=Bill Gates) 3 more – your choice Choose suitable types and constraints for the slots. Tip: You can add slots to the template to describe other features or to store information related to the matching and partner-finding process, for example a “matching-score”. The features will also be used to set up a client-profile. You collect information about the client’s features in an input-dialog with the client. You do not have to ask all features in this dialogue, and you can also allow the client not to answer questions. Specify in your solution what value you use for unknown features (default). In addition, you ask the client about his/her preferences for features of a partner. You allow the client to specify some criteria for his/her partner choice, e.g. gender, hair-colour, hobby. The client has also the option to answer “I don’t care”, if s/he does not want to specify a constraint. Tip: When testing your program, you can read this input from a file. Define one or more rules, which take into account the user’s preferences and in addition specify heuristics to match partners (e.g. you may want to match a poor person with a rich one, or a calm person with a hyper person etc.). User preferences should have a higher priority than the heuristics in the matching process. Hand-In You will hand in your complete, documented CLIPS-code, with added documentation explaining your rules and reasoning briefly (separate document). Describe any additions or modifications you made in your solution compared to the task description above. The CLIPS-code contains at least the following constructs. Template Use a person-template as described above. [4] Facts Create people, a factlist with 20 or more persons. [2] Warming Up Rules Write a Simple-Search rule first, for finding women with blonde hair, and men who are at least really rich. For each match, print the nick-name, and the requested attribute value(s). [2] Write a Gender rule for finding possible partners of the opposite sex. Generate a printout of all found possible couples. [2] Client Input You write one rule, the Client-Input rule, which collects the client data. [6] If you also used input from a file, please add this rule as alternative File-Input rule. [1 Bonus] Matching Heuristics [2] For the Match-Making process, you define first a set of matching-criteria or constraints (on paper), in order to describe who fits with whom. For example, you can use the basic criterion that only a male and a female client match. Please describe these Matching-Heuristics explicitly in your added documentation - the actual implementation as CLIPS rule(s) can be different since several heuristic constraints can be integrated into one Matching-Rule. Matching-Rule [10] Write a complex Matching-Rule integrating: definite constraints, e.g. that only a partner of the gender specified by the client matches (e.g. if a client has preference for a female partner, the system should not suggest a male partner – unless the client stated in the Input-Dialog “I don’t care”). other client preferences, i.e. test the compatibility of potential partners with the client’s desired attributes (e.g. select for a man, who likes “Blondes”, preferably but not necessarily exclusively women with blonde hair). heuristic rules, like a rule about income relations (e.g. women match better with men who have a higher income than they do, or, alternatively, possible partners should have the same income). Output [6] The output consists of suggestions of matching partners with the best matches first, and a “justification” for the suggestion through printing out the fulfilled matching criteria. Tip: Use the matching score calculated for each possible partner and rank matches accordingly. Please send a zipped folder with your CLIPS code plus a short documentation by e-mail to the instructor. Due Date: 18 October 2007, 10:00 am