Appendix - List of Rules
~ ~ The following is a list of all of the rules included in SNEAKERS. They are separated alphabetically by aspect, then agent type. The name of each rule is given in all capitals, with a description of the rule following that.
;********************************************************************** ; ASSEMBLY_ANALYST.CLP ;********************************************************************** ;********************************************************************** ; CALC-ASSEMBLY-TIME - Calculates the total time to assemble the tower. ;********************************************************************** ;********************************************************************** ; GET-ASSEMTIME-WHEN-DONE - If design is finished, then calculate ; assembly time, and inform the user. ;********************************************************************** ;********************************************************************** ; FIND-ASSEMBLY-COST - Calculate total assembly cost. ;********************************************************************** ;********************************************************************** ; ASSEMBLY-COST-NEEDED - If cost information needed, then calculate ; assembly cost and inform the user. ;********************************************************************** ;********************************************************************** ; ASSEMBLY_CRITIC.CLP ;********************************************************************** ;********************************************************************** ; ASSEMBLY-WATCH-HEIGHT - If tower height is greater than 10 feet, ; then inform the user that the tower is too high for assembly. ;********************************************************************** ;********************************************************************** ; FIND-CONNECTOR-TYPE - If a connector is added, then look up the type ; of the connector. ;********************************************************************** ;********************************************************************** ; DONT-USE-WELD - If the connector is a weld, then inform the user not ; to use welds because of their very long assembly times. ;********************************************************************** ;********************************************************************** ; DONT-USE-BOLT - If the connector is a bolt, then inform the user not ; to use bolts because of their long assembly times. ;********************************************************************** ;********************************************************************** ; ASSEMBLY_SUGGESTOR.CLP ;********************************************************************** ;********************************************************************** ; ASSEMBLY-LOWER-TOWER - If the tower is too high for assembly, ; then suggest that the tower be lowered to less than 10 feet. ;********************************************************************** ;********************************************************************** ; USE-SNAP - If a connector type was found unsatisfactory for assembly ; reasons, suggest the user use a snap. ;********************************************************************** ;********************************************************************** ; COST_ANALYST.CLP ;********************************************************************** ;********************************************************************** ; FIND-COSTS - If the design is finished, then ask for cost ; information. ;********************************************************************** ;********************************************************************** ; COUNT-COSTS - If all cost information is received, then add the ; costs and inform the user. ;********************************************************************** ;********************************************************************** ; COST_CRITIC.CLP ;********************************************************************** ;********************************************************************** ; WATCH-COSTS-NORMAL - If the tower cost ratio is greater than 4 and ; the importance of minimizing costs is high or extreme, then ; inform the user that he has chosen an expensive tower style. ;********************************************************************** ;********************************************************************** ; WATCH-COSTS-EXTREME - If the tower cost ratio is greater than 6 and ; the importance of minimizing costs is average then inform the ; user that the chosen tower style is expensive. ;********************************************************************** ;********************************************************************** ; TOWER-COST - If the tower has been created, then look up its cost ; ratio. ;********************************************************************** ;********************************************************************** ; COST_EVALUATOR.CLP ;********************************************************************** ;********************************************************************** ; MAXIMUM-COST-VALUE1 - If the importance of minimizing cost is none, ; then set the maximum cost rating to 100. ;********************************************************************** ;********************************************************************** ; MAXIMUM-COST-VALUE2 - If the importance of minimizing cost is low, ; then set the maximum cost rating to 90. ;********************************************************************** ;********************************************************************** ; MAXIMUM-COST-VALUE3 - If the importance of minimizing cost is ; average, then set the maximum cost rating to 80. ;********************************************************************** ;********************************************************************** ; MAXIMUM-COST-VALUE4 - If the importance of minimizing cost is high, ; then set the maximum cost rating to 65. ;********************************************************************** ;********************************************************************** ; MAXIMUM-COST-VALUE5 - If the importance of minimizing cost is ; extreme, then set the maximum cost rating to 50. ;********************************************************************** ;********************************************************************** ; MEETS-MAX-COST - If the total cost rating is less than or equal to ; the maximum cost rating, then inform user that the tower meets ; the cost constraints. ;********************************************************************** ;********************************************************************** ; FAILS-MAX-COST - If the total cost rating greater than the maximum ; cost rating, then inform user that the tower fails to meet the ; cost constraints. ;********************************************************************** ;********************************************************************** ; COST_SUGGESTOR.CLP ;********************************************************************** ;********************************************************************** ; CUT-COSTS - If the chosen tower style is expensive, then suggest ; changing to an I style tower. ;********************************************************************** ;********************************************************************** ; DESIGN_ADVISOR.CLP ;********************************************************************** ;********************************************************************** ; UNDO-FACTS - If an undo command is given, remove all facts that were ; associated with the last user action prior to the undo. ;********************************************************************** ;********************************************************************** ; STARTUP-RULE - If the system is started, inform the user to start a ; new design session. ;********************************************************************** ;********************************************************************** ; NEW-DESIGN-STARTED - If a value is given for required weight, then a ; new design has been started. ;********************************************************************** ;********************************************************************** ; HEAVY-LOAD - If the required weight is greater than 5000 lbs, then ; advise the user to use and A or X style tower. ;********************************************************************** ;********************************************************************** ; WATCH-ACID-RAIN - If the tower dimensions are set and there is acid ; rain, then advise the user to use wood for the supports. ;********************************************************************** ;********************************************************************** ; TOO-MUCH-RAIN-FOR-WOOD - If the tower dimensions are set, there is no ; acid rain, and the rainfall is greater than or equal to 48 ; inches/year, then advise the user not to use wood. ;********************************************************************** ;********************************************************************** ; GET-OVER-THE-SMOG - If the tower has been created and there is smog, ; then advise the user to make a tower over 15 feet high. ;********************************************************************** ;********************************************************************** ; DESIGN_ANALYST.CLP ;********************************************************************** ;********************************************************************** ; TIME-TO-CONSTRUCT - Add assembly time and manufacturing time. ;********************************************************************** ;********************************************************************** ; FIND-STRENGTH - determine the strength ratio of the tower from the ; strengths of the pieces and the type of tower. ;********************************************************************** ;********************************************************************** ; BUCKLE-LOAD - Calculate the maximum weight that can be supported by ; the tower without buckling. ;********************************************************************** ;********************************************************************** ; CHECK-BUCKLING - If the design is complete, then inform the user of ; the maximum weight that can be supported by the tower without ; buckling. ;********************************************************************** ;********************************************************************** ; WIND-LOAD - Convert wind load to wind speed. ;********************************************************************** ;********************************************************************** ; FIND-MAX-WIND - Calculate the maximum wind speed that can be ; withstood by the tower without toppling. ;********************************************************************** ;********************************************************************** ; CHECK-TOPPLING - If the design is complete, then inform the user of ; the maximum wind speed that can be withstood by the tower ; without toppling. ;********************************************************************** ;********************************************************************** ; DESIGN_CRITIC.CLP ;********************************************************************** ;********************************************************************** ; SQRDISTANCE - Determine the square of the distance between two ; points. ;********************************************************************** ;********************************************************************** ; LEG-DONE - Calculate whether or not a support completes a leg. ;********************************************************************** ;********************************************************************** ; OLD-LEG - Determine whether or not the leg being worked on is the ; last one that was not completed. ;********************************************************************** ;********************************************************************** ; LAST-ADDED-SUPPORT - If a support is added, then mark it as the ; newest support in the design. ;********************************************************************** ;********************************************************************** ; FINISH-A-LEG - If a new support is added and it is not part of the ; last incomplete leg, then inform user not to start a new leg ; until the other is finished. ;********************************************************************** ;********************************************************************** ; RETRACT-SUPPORT-FACT - If there is a newest support, retract that ; fact after all other rules have fired. ;********************************************************************** ;********************************************************************** ; DESIGN_EVALUATOR.CLP ;********************************************************************** ;********************************************************************** ; ENOUGH-TIME - If the time to construct is less than or equal to ; the required time, then inform that the user the tower can be ; constructed on time. ;********************************************************************** ;********************************************************************** ; NOT-ENOUGH-TIME - If the time to construct is greater than the ; required time, then inform the user that the tower cannot be ; constructed on time. ;********************************************************************** ;********************************************************************** ; TOO-MUCH-WEIGHT - If the maximum load is less than the required load, ; then inform the user that the tower will buckle. ;********************************************************************** ;********************************************************************** ; NO-WEIGHT-PROBLEM - If the maximum load is greater than or equal to ; the required load, then inform the user that the tower will not ; buckle. ;********************************************************************** ;********************************************************************** ; TOO-MUCH-WIND - If the maximum wind speed is less than the required ; wind speed, then inform the user that the tower will topple. ;********************************************************************** ;********************************************************************** ; NO-WIND-PROBLEM - If the maximum wind speed is greater than or equal ; to the required wind speed , then inform the user that the tower ; will not topple. ;********************************************************************** ;********************************************************************** ; DESIGN_SUGGESTOR.CLP ;********************************************************************** ;********************************************************************** ; CONTINUE-FIRST-LEG - If a leg was started with another unfinished, ; then suggest that the user back up and finish the other leg. ;********************************************************************** ;********************************************************************** ; DISPOSAL_ADVISOR.CLP ;********************************************************************** ;********************************************************************** ; BEST-MATERIAL - If tower dimensions are set, then suggest the tower ; be made out of wood because that is the best material for ; disposal. ;********************************************************************** ;********************************************************************** ; DISPOSAL_ANALYST.CLP ;********************************************************************** ;********************************************************************** ; FIND-DISPOSAL-COST - Calculates the cost of disposal of all the ; parts of the tower. ;********************************************************************** ;********************************************************************** ; DISPOSAL-COST-NEEDED - If cost information is needed, then ; calculate the disposal cost and inform the user. ;********************************************************************** ;********************************************************************** ; DISPOSAL_CRITIC.CLP ;********************************************************************** ;********************************************************************** ; NOT-ONLY-MATERIAL - Determine if there are any rods of different ; material than the one passed to the function. ;********************************************************************** ;********************************************************************** ; SAME-MATERIAL - If support added and it is not of the same material ; as the other supports, then there is more than 1 material. ;********************************************************************** ;********************************************************************** ; NO-MULTI-MATERIALS - If there is more than 1 material, then inform ; the user that the last material choice was bad, because it was ; different from the other materials. ;********************************************************************** ;********************************************************************** ; CANT-DISPOSE-WELDS - If the connector chosen is a weld, then inform ; the user that welds are a bad choice because they are hard to ; dispose of. ;********************************************************************** ;********************************************************************** ; DISPOSAL_SUGGESTOR.CLP ;********************************************************************** ;********************************************************************** ; USE-ONE-MATERIAL - If the last material added was a bad choice, then ; suggest that the user use only 1 material in the design. ;********************************************************************** ;********************************************************************** ; USE-SNAP-OR-BOLT-IN-DISPOSAL - If a weld was used in the design, then ; suggest that the user change to a snap or bolt. ;********************************************************************** ;********************************************************************** ; MANUFACTURING_ANALYST.CLP ;********************************************************************** ;********************************************************************** ; CALC-MANUFACT-TIME - Calculate the time to manufacture the components ; of the tower design. ;********************************************************************** ;********************************************************************** ; GET-TIME-WHEN-DONE - If tower design finished, then calculate the ; manufacturing time and inform the user. ;********************************************************************** ;********************************************************************** ; FIND-MANUFACT-COST - Calculate the cost of manufacturing. ;********************************************************************** ;********************************************************************** ; MANUFACT-COST-NEEDED - If cost information is needed, then find ; the manufacturing cost and inform the user. ;********************************************************************** ;********************************************************************** ; MANUFACTURING_CRITIC.CLP ;********************************************************************** ;********************************************************************** ; INFORM-ILLEGAL-CONNECTOR - Inform the user if a connector is illegal ; for the support it connects. ;********************************************************************** ;********************************************************************** ; NO-ILLEGAL-CONNECTORS - If connector added, then inform the user ; if the connector is illegal for the support it connects. ;********************************************************************** ;********************************************************************** ; INFORM-ILLEGAL-SUPPORT1 - Inform the user if a support is illegal ; for the connector to which it attaches its start point. ;********************************************************************** ;********************************************************************** ; INFORM-ILLEGAL-SUPPORT2 - Inform the user if a support is illegal ; for the connector to which it attaches its end point. ;********************************************************************** ;********************************************************************** ; NO-ILLEGAL-SUPPORTS - If support added, then inform the user if the ; support is illegal for the connector to which it attaches. ;********************************************************************** ;********************************************************************** ; MANUFACTURING_SUGGESTOR.CLP ;********************************************************************** ;********************************************************************** ; REMOVE-ILLEGAL-CONNECTOR - If an illegal connector is added, then ; suggest that it be removed. ;********************************************************************** ;********************************************************************** ; REMOVE-ILLEGAL-SUPPORT - If an illegal support is added, then ; suggest that it be removed. ;********************************************************************** ;********************************************************************** ; MARKETING_ADVISOR.CLP ;********************************************************************** ;********************************************************************** ; SLEEK-TOWER - If design session started, then advise the user to ; use an X or I style tower. ;********************************************************************** ;********************************************************************** ; PACKAGING_CRITIC.CLP ;********************************************************************** ;********************************************************************** ; DONT-PACK-WELDS - If a weld is used, then inform the user not to use ; welds. ;********************************************************************** ;********************************************************************** ; PACKAGING_SUGGESTOR.CLP ;********************************************************************** ;********************************************************************** ; PACK-SNAP-OR-BOLT - If a weld is used, then suggest that the user ; switch to snaps or bolts. ;********************************************************************** ;********************************************************************** ; SAFETY_ANALYST.CLP ;********************************************************************** ;********************************************************************** ; SAFETY-VALUE - Determine the safety value of the tower. ;********************************************************************** ;********************************************************************** ; SAFETY-ANALYSIS - If tower design is finished, then determine the ; safety value and inform the user. ;********************************************************************** ;********************************************************************** ; SAFETY_CRITIC.CLP ;********************************************************************** ;********************************************************************** ; TOWER-HEIGHT - If tower dimensions are set, then look up the tower ; height. ;********************************************************************** ;********************************************************************** ; TOWER-PLATFORM-WIDTH - If tower dimensions are set, then look up the ; tower platform size.. ;********************************************************************** ;********************************************************************** ; WATCH-HEIGHT1 - If tower height is greater than or equal to 12 feet ; and the platform is less than or equal to 3 feet, then inform ; the user that the tower is too high for the platform size. ;********************************************************************** ;********************************************************************** ; WATCH-HEIGHT2 - If tower height is greater than 15 feet, then inform ; the user that the tower is much too high. ;********************************************************************** ;********************************************************************** ; SAFETY_EVALUATOR.CLP ;********************************************************************** ;********************************************************************** ; SAFETY-EVALUATION1 - If safety rating is less than 0, then inform the ; user that the tower is unsafe. ;********************************************************************** ;********************************************************************** ; SAFETY-EVALUATION2 - If safety rating is greater than or equal to 0, ; then inform the user that the tower is safe. ;********************************************************************** ;********************************************************************** ; SAFETY_SUGGESTOR.CLP ;********************************************************************** ;********************************************************************** ; LOWER-TOWER - If the tower is much too high then suggest that the ; user lower the tower to under 16 feet. ;********************************************************************** ;********************************************************************** ; INCREASE-OR-LOWER - If the tower is too high for the platform size, ; then suggest that the user either increase the platform to ; more than 3 feet, or decrease the tower height to less than 12 ; feet. ;********************************************************************** ;********************************************************************** ; USER_RULES.CLP - rules which are directly affected by user ; action and contain no domain knowledge ;********************************************************************** ;********************************************************************** ; INFORM-ACTION - If the user does something, then echo the action to ; the screen. ;********************************************************************** ;********************************************************************** ; PRINT-REPORT - Prints out a prts list and assembly sequence to the ; file "sneakers.rpt". ;********************************************************************** ;********************************************************************** ; GENERATE-REPORT - If design session is finished, then print report. ;********************************************************************** ;********************************************************************** ; PRINT-NEXT-ASSEMBLED - Print the object that gets assembled at the ; given time. ;********************************************************************** ;********************************************************************** ; PRINT-ASSEMBLY - Rule which loops, printing the assembly sequence. ;********************************************************************** ;********************************************************************** ; END-PRINT-ASSEMBLY - If finished printing, close file. ;**********************************************************************