summaryrefslogtreecommitdiff
path: root/modeling/productions_math.py
blob: f824466f97a54236359243d8b3a51fc05d3d56df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/usr/bin/env python3

import pyactr as actr
from pprint import pprint

from model_init import init
import prod_addition
import prod_subtraction
import prod_comp
import prod_multi
import prod_numbers
import prod_procedure
import prod_motor
import prod_vis
import model_env


def add_goal(goal, op, arg1, arg2):

    goal.add(actr.makechunk("", "math_goal", op=op, task=op, arg1=arg1, arg2=arg2))




def wait_input():
    op = input("op\n")
    arg1 = input("arg1\n")
    arg2 = input("arg2\n")
    return op, int(arg1), int(arg2)


def add_proc(goal, proc):
    # input()
    goal.add(actr.makechunk("", "math_goal", proc=proc, ones_carry=""))


def start():
    condition = "fixed"

    # op, arg1, arg2 = wait_input()
    Model, DM, goal, imaginal, env = init()
    # add_goal(goal, op, arg1, arg2)
    add_proc(goal, "proc1")
    envs = model_env.generate_environments()

    prod_procedure.procedures(Model)
    number_prods = prod_numbers.number(Model)
    add_prods = prod_addition.addition(Model)
    sub_prods = prod_subtraction.subtraction(Model)
    greater_prods = prod_comp.greater_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)

    print("goal: ", goal)
    # print("imaginal: ", imaginal)
    sim = Model.simulation(
        gui=False,
        environment_process=env.environment_process,
        stimuli=envs,
        # triggers="space",
        triggers="b",
    )
    i = 1
    userinput = ""
    while True:
        sim.step()
        if sim.current_event.time >= 50:
            print(sim.current_event)
            break
        if "KEY PRESSED" in sim.current_event.action:
            userinput = userinput + sim.current_event.action.split(":")[1]
        # if sim.current_event.action == "NO RULE FOUND":
        #     print(goal)
        if sim.current_event.action == "KEY PRESSED: SPACE":
            sim._Simulation__env.stimulus["Answer5"]["text"] = "99"
            i += 1
            print(userinput)
            print("NEW PROC")
            if i <= 6:
                goal.add(
                    actr.makechunk(
                        "", "math_goal", proc=f"proc{i}", ones_carry="hello"
                    )
                )
            elif i == 7:
                goal.add(
                    actr.makechunk(
                        "", "math_goal", proc="proc_overall", ones_carry="hello"
                    )
                )
            elif i > 7:
                print("DONE")
                break

    # sim.run(max_time=25)
    print(userinput)
    print("Simulation time: ", sim.show_time())
    print("goal: ", goal)
    print(sim.current_event)
    pprint(vars(sim))
    pprint(vars(sim._Simulation__env))
    # print(sim.__env)
    # sim.__printenv__()
    # print(envs.stimulus)
    # print("imaginal: ", imaginal)
    math_goals = [sim for sim in list(DM) if sim.typename == "procedure"]
    # print(math_goals)


if __name__ == "__main__":
    start()