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.configProcessor import generate_config, create_tensor_field
|
||||||
from engine.mechanismExecutor import simulation
|
from engine.mechanismExecutor import simulation
|
||||||
from engine.utils import flatten
|
from engine.utils import flatten
|
||||||
from tabulate import tabulate
|
from ui.config import state_dict, mechanisms, exogenous_states, env_processes, sim_config
|
||||||
import pandas as pd
|
from engine.multiproc import parallelize_simulations
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
states_list = [state_dict]
|
states_list = [state_dict]
|
||||||
ep = list(exogenous_states.values())
|
ep = list(exogenous_states.values())
|
||||||
configs = generate_config(state_dict, mechanisms, ep)
|
config = 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))
|
|
||||||
T = sim_config['T']
|
T = sim_config['T']
|
||||||
N = sim_config['N']
|
N = sim_config['N']
|
||||||
|
configs = [config, config]
|
||||||
|
|
||||||
# Dimensions: N x r x mechs
|
# 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