diff options
Diffstat (limited to 'modeling/productions_math.py')
-rw-r--r-- | modeling/productions_math.py | 159 |
1 files changed, 110 insertions, 49 deletions
diff --git a/modeling/productions_math.py b/modeling/productions_math.py index 475ed59..4088546 100644 --- a/modeling/productions_math.py +++ b/modeling/productions_math.py @@ -5,7 +5,7 @@ import pyactr as actr Model = actr.ACTRModel() DM = Model.decmem -g = Model.goal +goal = Model.goal imaginal = Model.set_goal(name="imaginal", delay=0.2) actr.chunktype("number", ("number", "next", "ones", "tens", "hundreds")) @@ -30,12 +30,12 @@ actr.chunktype( ), ) -g.add(actr.makechunk("", "math_goal", op="greater", task="calc")) +goal.add(actr.makechunk("", "math_goal", op="greater", task="calc")) imaginal.add( actr.makechunk( "", "math_op", - op="greater", + op="add", arg1=5, arg2=2, ones1=5, @@ -119,9 +119,10 @@ def unwind_prod(): name="terminate_op", string=""" =g> - isa math_op + isa math_goal task finished_op =imaginal> + isa math_op result =answer ==> ~g>""", @@ -164,7 +165,7 @@ def greater_than_prod(): =imaginal> op greater =retrieval> - isa mat_op + isa math_op op greater result =ans ==> @@ -177,86 +178,90 @@ def greater_than_prod(): def addition(): - Model.productionstring( + start_add = Model.productionstring( name="start_add", string=""" - =goal> + =goal> isa math_goal - =imaginal> + =imaginal> + isa math_op op add ones1 =num1 - ones2 =num2 - one_ans None - ==> - =imaginal> + ones2 =num2 + ones_ans None + ==> + =imaginal> isa math_op - one-ans busy - +retrieval> + ones_ans busy + +retrieval> isa math_op op add arg1 =num1 arg2 =num2 """, ) + print(start_add) - Model.productionstring( + add_ones = Model.productionstring( name="add_ones", string=""" - =goal> + =goal> isa math_goal - =imaginal> + =imaginal> isa math_op op add - one-ans busy + ones_ans busy ones1 =num1 ones2 =num2 - =retrieval> + =retrieval> isa math_op arg1 =num1 arg2 =num2 result =result - ==> - =goal> + ==> + =goal> isa math_goal - =imaginal> + =imaginal> + isa math_op ones_ans =result carry busy - +retrieval> + +retrieval> isa math_op op add arg1 10 result =result """, ) + print(add_ones) Model.productionstring( name="process_carry", string=""" - =goal> + =goal> isa math_goal - =imaginal> + =imaginal> isa math_op op add tens1 =num1 tens2 =num2 carry busy ones_ans =ones - =retrieval> + =retrieval> isa math_op op add arg1 10 result =ones arg2 =remainder - ==> - =goal> + ==> + =goal> isa math_goal - =imaginal> + =imaginal> isa math_op op add carry 1 tens_ans busy - one_ans =remainder - +retrieval> + ones_ans =remainder + +retrieval> isa math_op op add arg1 =num1 @@ -265,35 +270,91 @@ def addition(): ) Model.productionstring( - name="increment-sum", + name="no_carry", string=""" - =goal> - ISA add - sum =sum - count =count - - arg2 =count - =retrieval> - ISA number - number =sum - next =newsum - ==> - =goal> - ISA add - sum =newsum - +retrieval> - ISA number - number =count + =goal> + isa math_goal + =imaginal> + isa math_op + op add + tens1 =num1 + tens2 =num2 + ones_ans =ones + carry busy + ?retrieval> + buffer failure + ==> + =goal> + isa math_goal + =imaginal> + isa math_op + carry None + tens_ans busy + +retrieval> + isa math_op + arg1 =num1 + arg2 =num2 """, ) + Model.productionstring( + name="add_tens_done", + string=""" + =goal> + isa math_goal + =imaginal> + isa math_op + op add + tens_ans busy + carry None + =retrieval> + isa math_op + op add + result =sum + ==> + =imaginal> + isa math_op + tens_ans =sum + """, + ) + + add_tens_carry = Model.productionstring( + name="add_tens_carry", + string=""" + =goal> + isa math_goal + =imaginal> + isa math_op + op add + tens_ans busy + carry 1 + =retrieval> + isa math_op + op add + result =sum + ==> + =imaginal> + isa math_op + carry None + +retrieval> + isa math_op + op add + arg1 1 + arg2 =sum + """, + ) + + print("add_tens_carry: ", add_tens_carry) + # print(DM) # unwind_prod() +addition() greater_than_prod() # Model.goal.add(actr.makechunk("goal", "math_op", op="greater", arg1=5, arg2=9)) -print("g: ", g) +print("goal: ", goal) print("imaginal: ", imaginal) x = Model.simulation() x.run() |