All Downloads are FREE. Search and download functionalities are using the official Maven repository.

APT.all-test.Algebra.algebra._chunking-issues.soar Maven / Gradle / Ivy

#
# This file contains a list of changes I've made to the algebra system to make chunking work.
# 
# 1. Negation not included in chunk
# Problem:  A negated condition that tests a structure in the subgoal that then is linked 
#           to a superstate structure, then the negation is not included in the chunk.
#           Example: -( ^top-state.point 

) # Reason: Soar can't tell that a superstate structure is being tested that should be included. # Solution: Make sure that everything that is negated is in the superstate: # Example: ( ^top-state ) # -( ^point

) # # 2. Double print-out from a subgoal # Problem: In a subgoal, something is printed out to the user (or any output command). # Reason: The check that the printing had already completed was on the subgoal state. # Solution: Move the test to the top-state # # 3. Double learning # Problem: Learns a specific rule with a constant (nil) and then learns a more general # one with a variable. One with variable will fire in duplicate when constant # is encountered - in this case nil for the end of a linked list. # # #sp {convert-input-to-clause-form*apply*process-value*post-operation # (state ^operator.name process-value # ^top-state.problem

) # (

^parse-clause # ^current-input-value ) # ( ^parse-status post-operation) # ( ^value { <> x <> |x| } # ^next ) #--> # (

^current-input-value - # ) # ( ^right-side ) # ( ^type number # ^value (int )) #} #sp {chunk-174*d254*opnochange*1 # :chunk # (state ^top-state ^operator ^problem ^io # -^processed ) # ( ^name accept-input) # ( ^current-input-value ^parse-clause ) # ( -^value { << |+| * |-| |/| |[| |]| |=| >> } ^value |3| # ^next ) # ( ^parse-status post-operation) # ( ^input-link ) # ( ^text ) # --> # ( ^current-input-value - ^current-input-value +) # ( ^right-side +) # ( ^type number + ^value 3 +) #} #p chunk-167*d194*opnochange*1 #sp {chunk-167*d194*opnochange*1 # :chunk # (state ^top-state ^operator ^problem ^io # -^processed ) # ( ^name accept-input) # ( ^current-input-value ^parse-clause ) # ( -^value { << |+| * |-| |/| |[| |]| |=| >> } ^value |3| # ^next.value nil) # ( ^parse-status post-operation) # ( ^input-link ) # ( ^text ) # --> # ( ^current-input-value - ^current-input-value nil +) # ( ^right-side +) # ( ^type number + ^value 3 +) #}