diff options
Diffstat (limited to 'modeling/productions_math.py')
-rw-r--r-- | modeling/productions_math.py | 144 |
1 files changed, 4 insertions, 140 deletions
diff --git a/modeling/productions_math.py b/modeling/productions_math.py index ca7d95a..42c08da 100644 --- a/modeling/productions_math.py +++ b/modeling/productions_math.py @@ -1,6 +1,8 @@ #!/usr/bin/env python3 import pyactr as actr + +from model_init import init import prod_addition import prod_comp import prod_multi @@ -11,144 +13,6 @@ import prod_vis import model_env -# https://stackoverflow.com/a/39644726 -def get_digit(number, n): - return number // 10**n % 10 - - -def init(): - env = actr.Environment() - Model = actr.ACTRModel(environment=env) - - DM = Model.decmem - Model.visualBuffer("visual", "visual_location", DM, finst=4) - goal = Model.goal - imaginal = Model.set_goal(name="imaginal", delay=0.2) - - actr.chunktype("number", ("number", "next", "ones", "tens", "hundreds")) - actr.chunktype( - "procedure", - ( - "proc", - "op1", - "arg1_1", - "arg1_1_idx" - "arg1_2", - "arg1_2_idx" - "op2", - "arg2_1", - "arg2_1_idx" - "arg2_2", - "arg2_2_idx" - ), - ) - actr.chunktype( - "math_goal", - ( - "task", - "result1", - "result2", - "op", - "nextop", - "arg1", - "arg1_idx" - "arg2", - "arg2_idx" - "result", - "expand_slot", - "hundreds1", - "tens1", - "ones1", - "hundreds2", - "tens2", - "ones2", - "hundreds_ans", - "tens_ans", - "ones_ans", - "mul_counter", - "mem_arg1", - "mem_arg2", - "ones_carry", - "tens_carry", - "vis_counter", - ), - ) - actr.chunktype( - "math_op", - ( - "op", - "arg1", - "arg2", - "result", - ), - ) - - # Add procedures - DM.add( - actr.makechunk( - "procedure1", - "procedure", - proc="proc1", - op1="add", - arg1_1="Gifte", - arg1_1_idx=4, - arg1_2="Sandstein", - arg1_2_idx=4, - op2="mul", - arg2_1="result1", - arg2_1_idx=0, - arg2_2="Gifte", - arg2_2_idx=3, - ) - ) - - # Add numbers 0-999 to decmem - for i in range(0, 1000): - DM.add( - actr.makechunk( - f"number{str(i)}", - "number", - number=i, - next=i + 1, - ones=get_digit(i, 0), - tens=get_digit(i, 1), - hundreds=get_digit(i, 2), - ) - ) - - # Add comparison relations to single digit numbers - for i in range(0, 11): - for j in range(0, 11): - DM.add( - actr.makechunk( - f"greater{i}{j}", - "math_op", - op="greater", - arg1=i, - arg2=j, - result=max(i, j), - ) - ) - # DM.add( - # actr.makechunk( - # f"lesser{i}{j}", - # "math_op", - # op="lesser", - # arg1=i, - # arg2=j, - # result=min(i, j), - # ) - # ) - for i in range(0, 21): - for j in range(0, 21): - DM.add( - actr.makechunk( - f"plus{i}{j}", "math_op", op="add", arg1=i, arg2=j, result=i + j - ) - ) - return Model, DM, goal, imaginal, env - - def add_goal(goal, op, arg1, arg2): goal.add(actr.makechunk("", "math_goal", op=op, task=op, arg1=arg1, arg2=arg2)) @@ -190,7 +54,7 @@ def start(): # op, arg1, arg2 = wait_input() Model, DM, goal, imaginal, env = init() # add_goal(goal, op, arg1, arg2) - add_proc(goal, "proc1") + add_proc(goal, "proc6") envs = model_env.get_env() general_prod(Model) @@ -198,7 +62,7 @@ def start(): number_prods = prod_numbers.number(Model) add_prods = prod_addition.addition(Model) greater_prods = prod_comp.greater_than(Model) - less_prods = prod_comp.less_than(Model) + less_prods = prod_comp.lesser_than(Model) multi_prods = prod_multi.multiplication(Model) motor_prods = prod_motor.procedures(Model) visual_prods = prod_vis.procedures(Model) |