Parallelize Simulations
This commit is contained in:
parent
7fb728da6a
commit
026e799c74
|
|
@ -0,0 +1,11 @@
|
|||
from pathos.multiprocessing import ProcessingPool as Pool
|
||||
|
||||
|
||||
def parallelize_simulations(f, states_list, configs, env_processes, T, N):
|
||||
def process(config):
|
||||
return f(states_list, config, env_processes, T, N)
|
||||
|
||||
with Pool(len(configs)) as p:
|
||||
results = p.map(process, configs)
|
||||
|
||||
return results
|
||||
|
|
@ -1,24 +1,29 @@
|
|||
from ui.config import state_dict, mechanisms, exogenous_states, env_processes, sim_config
|
||||
import pandas as pd
|
||||
from tabulate import tabulate
|
||||
|
||||
from engine.configProcessor import generate_config, create_tensor_field
|
||||
from engine.mechanismExecutor import simulation
|
||||
from engine.utils import flatten
|
||||
from tabulate import tabulate
|
||||
import pandas as pd
|
||||
from ui.config import state_dict, mechanisms, exogenous_states, env_processes, sim_config
|
||||
from engine.multiproc import parallelize_simulations
|
||||
|
||||
|
||||
def main():
|
||||
states_list = [state_dict]
|
||||
ep = list(exogenous_states.values())
|
||||
configs = generate_config(state_dict, mechanisms, ep)
|
||||
# print(len(configs))
|
||||
print(tabulate(create_tensor_field(mechanisms, ep), headers='keys', tablefmt='psql'))
|
||||
print
|
||||
# p = pipeline(states_list, configs, env_processes, range(10))
|
||||
config = generate_config(state_dict, mechanisms, ep)
|
||||
T = sim_config['T']
|
||||
N = sim_config['N']
|
||||
configs = [config, config]
|
||||
|
||||
# Dimensions: N x r x mechs
|
||||
s = simulation(states_list, configs, env_processes, T, N)
|
||||
|
||||
result = pd.DataFrame(flatten(s))
|
||||
if len(configs) > 1:
|
||||
simulations = parallelize_simulations(simulation, states_list, configs, env_processes, T, N)
|
||||
else:
|
||||
simulations = [simulation(states_list, configs[0], env_processes, T, N)]
|
||||
|
||||
return result
|
||||
for result in simulations:
|
||||
print(tabulate(create_tensor_field(mechanisms, ep), headers='keys', tablefmt='psql'))
|
||||
print
|
||||
print(tabulate(pd.DataFrame(flatten(result)), headers='keys', tablefmt='psql'))
|
||||
Loading…
Reference in New Issue