Next: Program Modules Up: Rob's Thesis Previous: Tower Building Objects

List of Rules

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.
;**********************************************************************


rdouglas@stsci.edu