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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#!/usr/bin/env python3
import pyactr as actr
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 general_prod(Model):
Model.productionstring(
name="continue_with_next_op",
string="""
=g>
isa math_goal
op done
nextop ~None
nextop =nextop
==>
=g>
isa math_goal
op =nextop
nextop None
""",
)
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="hello"))
def start():
while True:
# op, arg1, arg2 = wait_input()
Model, DM, goal, imaginal, env = init()
# add_goal(goal, op, arg1, arg2)
add_proc(goal, "proc1")
envs = model_env.get_env()
general_prod(Model)
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)
# for prod in multi_prods:
# print(prod)
# print("\n")
print("goal: ", goal)
# print("imaginal: ", imaginal)
sim = Model.simulation(
gui=False,
environment_process=env.environment_process,
stimuli=envs,
triggers="space",
)
i = 1
userinput = ""
while True:
sim.step()
if sim.current_event.time >= 20:
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 == "KEY PRESSED: SPACE":
i += 1
print(userinput)
print("NEW PROC")
goal.add(
actr.makechunk("", "math_goal", proc=f"proc{i}", ones_carry="hello")
)
# sim.run(max_time=25)
print(userinput)
print("Simulation time: ", sim.show_time())
print("goal: ", goal)
# print(list(env))
# print("imaginal: ", imaginal)
# imaginal.show("hundreds_ans")
# imaginal.show("tens_ans")
# imaginal.show("ones_ans")
# result_ones = str(getattr(imaginal._data.copy().pop(), "ones_ans"))
# result_tens = str(getattr(imaginal._data.copy().pop(), "tens_ans"))
# result_huns = str(getattr(imaginal._data.copy().pop(), "hundreds_ans"))
# result_num = result_huns + result_tens + result_ones
# print(result_num)
# print(list(DM))
# numbers = [
# x for x in list(DM) if x.typename != "number" and x.typename != "math_op"
# ]
# numbers = [
# x for x in list(DM) if x.typename != "number" and x.typename == "math_op"
# ]
# print(numbers)
math_goals = [sim for sim in list(DM) if sim.typename == "procedure"]
print(math_goals)
if __name__ == "__main__":
start()
|