summaryrefslogtreecommitdiff
path: root/modeling/productions_math.py
diff options
context:
space:
mode:
Diffstat (limited to 'modeling/productions_math.py')
-rw-r--r--modeling/productions_math.py144
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)