71 lines
1.3 KiB
Python
71 lines
1.3 KiB
Python
# import libraries
|
|
from decimal import Decimal
|
|
import numpy as np
|
|
from datetime import timedelta
|
|
from cadCAD.configuration import append_configs
|
|
from cadCAD.configuration.utils import bound_norm_random, ep_time_step, config_sim
|
|
|
|
seeds = {
|
|
}
|
|
|
|
sim_config = config_sim({
|
|
'T': range(10),
|
|
'N': 1
|
|
})
|
|
|
|
# Behaviors
|
|
def robot_arm(_g, step, sL, s):
|
|
add_to_A = 0
|
|
if (s['box_A'] > s['box_B']):
|
|
add_to_A = -1
|
|
elif (s['box_A'] < s['box_B']):
|
|
add_to_A = 1
|
|
return({'add_to_A': add_to_A, 'add_to_B': -add_to_A})
|
|
|
|
|
|
# Mechanisms
|
|
def increment_A(_g, step, sL, s, _input):
|
|
y = 'box_A'
|
|
x = s['box_A'] + _input['add_to_A']
|
|
return (y, x)
|
|
|
|
def increment_B(_g, step, sL, s, _input):
|
|
y = 'box_B'
|
|
x = s['box_B'] + _input['add_to_B']
|
|
return (y, x)
|
|
|
|
# Initial States
|
|
genesis_states = {
|
|
'box_A': 10,
|
|
'box_B': 0
|
|
}
|
|
|
|
exogenous_states = {
|
|
}
|
|
|
|
|
|
env_processes = {
|
|
}
|
|
|
|
|
|
mechanisms = [
|
|
{
|
|
'policies': {
|
|
'robot_arm': robot_arm
|
|
},
|
|
'states': {
|
|
'box_A': increment_A,
|
|
'box_B': increment_B
|
|
}
|
|
}
|
|
]
|
|
|
|
|
|
append_configs(
|
|
sim_configs=sim_config,
|
|
initial_state=genesis_states,
|
|
seeds=seeds,
|
|
raw_exogenous_states=exogenous_states,
|
|
env_processes=env_processes,
|
|
partial_state_update_blocks=mechanisms
|
|
) |