Main Page   Files   Productions   Problem Spaces   Operators   Goal Hierarchy   Groups   Prod. By Type   All  


note-relevant-feature.soar

note-relevant-feature.soar [src]

Go to the documentation for this file...

00001 echo "\n note-relevant-feature.soar "
00002 
00003 ##! 
00004 # @file note-relevant-feature.soar
00005 # @operator note-relevant-feature
00006 
00007 ##!
00008 # @operator note-relevant-feature
00009 #
00010 # @brief Notice potential relevant features for prediction
00011 # @problem-space predict
00012 #
00013 # If you've previously noted an attribute with a
00014 # "relevant-feature" then make it the worst abstraction operator.  In
00015 # other words, this rule hypothesizes that the attribute is the most relevant
00016 # feature and should be abstracted last.
00017 
00018 ##! 
00019 # @type selection
00020 #
00021 # Make the abstraction operator that matches the relevant feature
00022 # the worst operator (abstract it last).
00023 sp {predict*abstract-relevant-feature*worse
00024   (state <s> ^problem-space <p> ^operator <o> +)
00025   (<p> ^name predict)
00026   (<s> ^object <obj> ^relevant-feature <att>)
00027   (<o> ^name abstract ^attribute <att>)
00028   -->
00029   (write (crlf) |relevant-attribute: | <att> | is worst |)
00030   (<s> ^operator <o> <)}
00031 
00032 ##!
00033 # If an incorrect, top-state prediction operator is proposed for
00034 # the last abstraction and there's not currently a relevant-feature
00035 # noted on the top-state, then propose the operator and make it best.
00036 # @type proposal
00037 sp {predict*note-relevant-feature*propose
00038   (state <s> ^problem-space <p> ^operator <o> +)
00039   (<p> ^name predict)
00040   (<s> ^object <obj> -^subgoal)
00041   (<obj> ^correct-prediction <cat> ^last-abstraction <l>)
00042   (<o> ^name prediction ^category <> <cat>)
00043   (<l> ^<att> <value>)
00044   -(<s> ^relevant-feature <att>)
00045   -->
00046   (<s> ^operator <o1> + >)
00047   (<o1> ^name note-relevant-feature ^attribute <att>)
00048   (write (crlf) |Proposing relevant feature | <att> )
00049 }
00050   
00051 
00052 ##!
00053 # @type selection
00054 #
00055 # If the relevant-feature isn't part of the current object
00056 # desciption and the note-relevant-feature operator is proposed, then
00057 # reject it.  What this does is ensure that the relevant-feature
00058 # attribute hasn't already been abstracted when changing the
00059 # relevant-feature from one thing to (presumably) another.
00060 sp {predict*note-relevant-feature*reject
00061   (state <s> ^problem-space <p> ^operator <o> +)
00062   (<p> ^name predict)
00063   (<s> ^object <obj> ^relevant-feature <att>)
00064   (<obj> ^description <l>)
00065   (<l> -^<att>)
00066   (<o> ^name note-relevant-feature)
00067   -->
00068   (<s> ^operator <o> -)
00069   (write (crlf) | This instance does not have a | <att> | attribute to abstract last |)
00070 }
00071 
00072 ##!
00073 # Record relevant feature on the state  
00074 # @type application
00075 sp {predict*note-relevant-feature*apply
00076   (state <s> ^problem-space <p> ^operator <o>)
00077   (<p> ^name predict)
00078   (<s> ^object <obj>)
00079   (<o> ^name note-relevant-feature ^attribute <att>)
00080   -->
00081   (<s> ^relevant-feature <att>)}
00082 
00083 ##!
00084 # When changing the relevant feature, delete the old one.
00085 # @type application
00086 sp {predict*note-relevant-feature*apply-reject-previous
00087   (state <s> ^problem-space <p> ^operator <o>)
00088   (<p> ^name predict)
00089   (<s> ^object <obj> ^relevant-feature <old-att>)
00090   (<o> ^name note-relevant-feature ^attribute { <> <old-att> <att> } )
00091   -->
00092   (<s> ^relevant-feature <old-att> - )
00093   (write (crlf) | Changing relevant feature from | <old-att> | to | <att> )
00094 }

Generated with SoarDoc on Fri Apr 25 18:21:39 2003 by wray