Reafactor Pt. 1
This commit is contained in:
parent
311c867000
commit
29ca7ac177
|
|
@ -0,0 +1,11 @@
|
||||||
|
configs = []
|
||||||
|
|
||||||
|
class Config(object):
|
||||||
|
def __init__(self, sim_config, state_dict, seed, exogenous_states, env_processes, behavior_ops, mechanisms):
|
||||||
|
self.sim_config = sim_config
|
||||||
|
self.state_dict = state_dict
|
||||||
|
self.seed = seed
|
||||||
|
self.exogenous_states = exogenous_states
|
||||||
|
self.env_processes = env_processes
|
||||||
|
self.behavior_ops = behavior_ops
|
||||||
|
self.mechanisms = mechanisms
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
# from pathos.multiprocessing import ProcessingPool as Pool
|
||||||
|
#
|
||||||
|
# class Multiproc(object):
|
||||||
|
#
|
||||||
|
# def __init__(self, fs, states_list, configs, env_processes, Ts, Ns):
|
||||||
|
# self.fs = fs
|
||||||
|
# self.states_list = states_list
|
||||||
|
# self.configs = configs
|
||||||
|
# self.env_processes = env_processes
|
||||||
|
# self.Ts = Ts
|
||||||
|
# self.Ns = Ns
|
||||||
|
#
|
||||||
|
# def parallelize_simulations(self):
|
||||||
|
# l = list(zip(self.fs, self.states_list, self.configs, self.env_processes, self.Ts, self.Ns))
|
||||||
|
# with Pool(len(self.configs)) as p:
|
||||||
|
# results = p.map(lambda t: t[0](t[1], t[2], t[3], t[4], t[5]), l)
|
||||||
|
#
|
||||||
|
# return results
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
from pathos.multiprocessing import ProcessingPool as Pool
|
|
||||||
|
|
||||||
|
|
||||||
def parallelize_simulations(fs, states_list, configs, env_processes, T, N):
|
|
||||||
l = list(zip(fs, states_list, configs, env_processes))
|
|
||||||
with Pool(len(configs)) as p:
|
|
||||||
results = p.map(lambda x: x[0](x[1], x[2], x[3], T, N), l)
|
|
||||||
return results
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
import pandas as pd
|
|
||||||
from tabulate import tabulate
|
|
||||||
|
|
||||||
from engine.configProcessor import generate_config
|
|
||||||
from engine.mechanismExecutor import Executor
|
|
||||||
from utils.engine import flatten
|
|
||||||
from utils.ui import create_tensor_field
|
|
||||||
from engine.multiproc import parallelize_simulations
|
|
||||||
|
|
||||||
# from ui.config import state_dict, mechanisms, exogenous_states, env_processes, sim_config
|
|
||||||
|
|
||||||
import ui.config1 as conf1
|
|
||||||
import ui.config2 as conf2
|
|
||||||
|
|
||||||
def main():
|
|
||||||
states_list1 = [conf1.state_dict]
|
|
||||||
states_list2 = [conf2.state_dict]
|
|
||||||
states_lists = [states_list1,states_list2]
|
|
||||||
|
|
||||||
T = conf1.sim_config['T']
|
|
||||||
N = conf2.sim_config['N']
|
|
||||||
|
|
||||||
ep1 = list(conf1.exogenous_states.values())
|
|
||||||
ep2 = list(conf2.exogenous_states.values())
|
|
||||||
eps = [ep1, ep2]
|
|
||||||
|
|
||||||
config1 = generate_config(conf1.state_dict, conf1.mechanisms, ep1)
|
|
||||||
config2 = generate_config(conf2.state_dict, conf2.mechanisms, ep2)
|
|
||||||
configs = [config1, config2]
|
|
||||||
|
|
||||||
env_processes = [conf1.env_processes, conf2.env_processes]
|
|
||||||
|
|
||||||
# Dimensions: N x r x mechs
|
|
||||||
|
|
||||||
simulation1 = Executor(conf1.behavior_ops).simulation
|
|
||||||
simulation2 = Executor(conf2.behavior_ops).simulation
|
|
||||||
simulation_execs = [simulation1,simulation2]
|
|
||||||
|
|
||||||
|
|
||||||
if len(configs) > 1:
|
|
||||||
simulations = parallelize_simulations(simulation_execs, states_lists, configs, env_processes, T, N)
|
|
||||||
# else:
|
|
||||||
# simulations = [simulation(states_list1, configs[0], env_processes, T, N)]
|
|
||||||
|
|
||||||
# behavior_ops, states_list, configs, env_processes, time_seq, runs
|
|
||||||
# result = simulation(states_list1, config1, conf1.env_processes, T, N)
|
|
||||||
# return pd.DataFrame(flatten(result))
|
|
||||||
|
|
||||||
mechanisms = [conf1.mechanisms, conf2.mechanisms]
|
|
||||||
for result, mechanism, ep in list(zip(simulations, mechanisms, eps)):
|
|
||||||
print(tabulate(create_tensor_field(mechanism, ep), headers='keys', tablefmt='psql'))
|
|
||||||
print(tabulate(pd.DataFrame(flatten(result)), headers='keys', tablefmt='psql'))
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
from pathos.multiprocessing import ProcessingPool as Pool
|
||||||
|
|
||||||
|
|
||||||
|
def parallelize_simulations(fs, states_list, configs, env_processes, Ts, Ns):
|
||||||
|
l = list(zip(fs, states_list, configs, env_processes, Ts, Ns))
|
||||||
|
with Pool(len(configs)) as p:
|
||||||
|
results = p.map(lambda t: t[0](t[1], t[2], t[3], t[4], t[5]), l)
|
||||||
|
|
||||||
|
return results
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
import pandas as pd
|
||||||
|
from tabulate import tabulate
|
||||||
|
from configuration import configs
|
||||||
|
from utils.engine import flatten
|
||||||
|
from utils.ui import create_tensor_field
|
||||||
|
from engine.configProcessor import generate_config
|
||||||
|
from engine.mechanism import Executor
|
||||||
|
from runtime.multiproc import parallelize_simulations
|
||||||
|
|
||||||
|
# from ui import config1, config2
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print(configs)
|
||||||
|
states_lists, Ts, Ns, eps, configs_struct, env_processes, mechanisms, simulation_execs = \
|
||||||
|
[], [], [], [], [], [], [], []
|
||||||
|
config_idx = 0
|
||||||
|
for x in configs:
|
||||||
|
|
||||||
|
states_lists.append([x.state_dict])
|
||||||
|
Ts.append(x.sim_config['T'])
|
||||||
|
Ns.append(x.sim_config['N'])
|
||||||
|
eps.append(list(x.exogenous_states.values()))
|
||||||
|
configs_struct.append(generate_config(x.state_dict, x.mechanisms, eps[config_idx]))
|
||||||
|
env_processes.append(x.env_processes)
|
||||||
|
mechanisms.append(x.mechanisms)
|
||||||
|
simulation_execs.append(Executor(x.behavior_ops).simulation)
|
||||||
|
|
||||||
|
config_idx += 1
|
||||||
|
|
||||||
|
# Dimensions: N x r x mechs
|
||||||
|
|
||||||
|
|
||||||
|
if len(configs) > 1:
|
||||||
|
simulations = parallelize_simulations(simulation_execs, states_lists, configs_struct, env_processes, Ts, Ns)
|
||||||
|
|
||||||
|
for result, mechanism, ep in list(zip(simulations, mechanisms, eps)):
|
||||||
|
print(tabulate(create_tensor_field(mechanism, ep), headers='keys', tablefmt='psql'))
|
||||||
|
print(tabulate(pd.DataFrame(flatten(result)), headers='keys', tablefmt='psql'))
|
||||||
|
else:
|
||||||
|
print('single note')
|
||||||
|
simulation, states_list, config = simulation_execs.pop(), states_lists.pop(), configs_struct.pop()
|
||||||
|
env_process = env_processes.pop()
|
||||||
|
# simulations = [simulation(states_list, config, env_processes, T, N)]
|
||||||
|
|
||||||
|
# behavior_ops, states_list, configs, env_processes, time_seq, runs
|
||||||
|
# result = simulation(states_list1, config1, conf1.env_processes, T, N)
|
||||||
|
# return pd.DataFrame(flatten(result))
|
||||||
|
|
||||||
|
|
||||||
3
test.py
3
test.py
|
|
@ -1,4 +1,5 @@
|
||||||
from engine import run
|
from runtime import run
|
||||||
|
from ui import config1, config2
|
||||||
from tabulate import tabulate
|
from tabulate import tabulate
|
||||||
result = run.main()
|
result = run.main()
|
||||||
print(tabulate(result, headers='keys', tablefmt='psql'))
|
print(tabulate(result, headers='keys', tablefmt='psql'))
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
|
from configuration import Config, configs
|
||||||
from utils.configuration import *
|
from utils.configuration import *
|
||||||
from fn.op import foldr
|
from fn.op import foldr
|
||||||
from fn import _
|
|
||||||
from fn.func import curried
|
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
|
|
@ -160,3 +158,5 @@ sim_config = {
|
||||||
"N": 2,
|
"N": 2,
|
||||||
"T": range(5)
|
"T": range(5)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configs.append(Config(sim_config, state_dict, seed, exogenous_states, env_processes, behavior_ops, mechanisms))
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
|
from configuration import Config, configs
|
||||||
from utils.configuration import *
|
from utils.configuration import *
|
||||||
from fn.op import foldr
|
from fn.op import foldr
|
||||||
|
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
|
|
@ -161,3 +160,5 @@ sim_config = {
|
||||||
"N": 2,
|
"N": 2,
|
||||||
"T": range(5)
|
"T": range(5)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configs.append(Config(sim_config, state_dict, seed, exogenous_states, env_processes, behavior_ops, mechanisms))
|
||||||
Loading…
Reference in New Issue