示例#1
0
def do_sweep_on((input_file, paras, other_paras)):#, zone, suff, force)):
	files_input, logs_input = [], []
	print "Input file:", input_file
	name_par1, name_par2 = tuple(paras['paras_to_loop'])
	for par1 in paras[name_par1 + '_iter']:
		print name_par1, "=", par1
		paras.update(name_par1, par1, config_file=other_paras['config_file'])
		for par2 in paras[name_par2 + '_iter']:
			print name_par2, "=", par2
			paras.update(name_par2, par2, config_file=other_paras['config_file'])
			with clock_time():
				output_file = name_results_shocks(paras, m1_file_name=input_file, zone=other_paras['zone'], suff=other_paras['suff'])
				for i in range(paras['nsim']):
					#counter(i, n_iter, message="Doing iterations... ")
					files_input.append((input_file, output_file.split('.dat')[0] + '_' + str(i) + '.dat'))
				
				if not os.path.exists(output_file.split('.dat')[0] + '_' + str(paras['nsim']-1) + other_paras['suff'] + '.dat') or other_paras['force']:
					#logs_input.append(output_file.split('.dat')[0] + '_' + str(paras['nsim']-1) + '.txt')
					
					#with stdout_redirected(to=output_file.split('.dat')[0] + '_' + str(paras['nsim']-1) + other_paras['suff'] + '.txt'):
					print 'config_file', other_paras['config_file']
					do_ABM_tactical(input_file, output_file, other_paras['config_file'], verbose=1, 
							shock_tmp=other_paras['shock_file'],
							bound_latlon=other_paras['bound_file'],
							temp_nvp=other_paras['tmp_navpoints_file'],
							capacity_file=other_paras['capacity_file'])
	#print
	return files_input, logs_input
def sweep_paras(zone, n_iter=1, data_version=None, force=False):
	#paras_iter = {'sig_V':[0., 0.1]}
	#paras = Paras({'sig_V':0.})

	main_dir = os.path.abspath(__file__)
	main_dir = os.path.split(os.path.dirname(main_dir))[0]

	choose_paras('nsim', 1)
	choose_paras('tmp_from_file', 1)

	config_file = main_dir + '/abm_tactical/config/config.cfg'
	#loop(paras_iter, paras_iter.keys(), paras, thing_to_do=do, paras=paras, build_pat=build_pat)
	
	input_file = result_dir + '/trajectories/M1/trajs_' + zone + '_real_data.dat'
	#input_file = main_dir + '/trajectories/M1/trajs_for_testing_10_sectors.dat'
	
	produce_M1_trajs_from_data(zone=zone, data_version=data_version, put_fake_sectors=True, save_file=input_file)

	with open(main_dir + '/libs/All_shapes_334.pic','r') as f:
		all_shapes = pickle.load(f)
	boundary = list(all_shapes[zone]['boundary'][0].exterior.coords)
	assert boundary[0]==boundary[-1]

	with open(result_dir + '/abm_tactical/config/bound_latlon.dat', 'w') as f:
		for x, y in boundary:
			f.write(str(x) + '\t' + str(y) + '\n')

	compute_temporary_points(50000, boundary)

	#sig_V_iter = [0.] + [10**(-float(i)) for i in range(5, -1, -1)]
	sig_V_iter = np.arange(0., 0.26, 0.04)
	#sig_V_iter = [10**(-float(i)) for i in range(4, -1, -1)]
	#sig_V_iter = [0., 0.0001] # [0.] + [10**(-float(i)) for i in range(5, -1, -1)]
	#t_w_iter = [40, 80, 120, 160, 240] # times 8 sec 
	t_w_iter = [40, 60, 80, 100, 120]#, 160, 240] # times 8 sec 
	#t_w_iter = [40, 80] # [40, 80, 120, 160, 240] # times 8 sec 
	print 
	for sig_V in sig_V_iter:
		print "sig_V=", sig_V
		choose_paras('sig_V', sig_V)
		for t_w in t_w_iter:
			print "t_w=", t_w
			choose_paras('t_w', t_w)

			for i in range(n_iter):
				counter(i, n_iter, message="Doing iterations... ")
				output_file = result_dir + '/trajectories/M3/trajs_' + zone + '_real_data_sigV' + str(sig_V) + '_t_w' + str(t_w) + '_' + str(i) + '.dat'
				if not os.path.exists(output_file.split('.dat')[0] + '_0.dat') or force:
					with stdout_redirected(to=result_dir + '/trajectories/M3/log_trajs_' + zone + '_real_data_sigV' + str(sig_V) + '_t_w' + str(t_w) + '_' + str(i) + '.txt'):
						do_ABM_tactical(input_file, output_file, config_file, verbose=1)
		print
示例#3
0
def sweep_paras_shocks(zone, paras, input_files, config_file, shock_file_zone, bound_file_zone, tmp_navpoints_file_zone, capacity_file, force=False, trajectories=None,\
	temp_config_dir=main_dir+'/abm_tactical/config_temp', n_cores=1, suff = '', dryrun=False, **kwargs):

	"""
	Script which sweeps two levels of parameters for the tactical ABM. Config files have to be given externally.
	The script creates a temporary folder to store all config files and avoid interactions between scripts.
	"""

	# config_file=main_dir + '/abm_tactical/config/config.cfg',\
	# shock_file=main_dir + '/abm_tactical/config/shock_tmp.dat',\
	# bound_file=main_dir + '/abm_tactical/config/bound_latlon.dat',\
	# tmp_navpoints_file=main_dir + '/abm_tactical/config/temp_nvp.dat',
	
	# config_file_temp = temp_config_dir + '/config.cfg'

	# print "Sweeping parameters with", n_cores, "cores."

	os.system('mkdir -p ' + temp_config_dir)
	
	# Targets
	shock_file = temp_config_dir + '/shock_tmp.dat'
	bound_file = temp_config_dir + '/bound_latlon.dat'
	tmp_navpoints_file = temp_config_dir + '/temp_nvp.dat'

	if not dryrun:	
		if trajectories!=None:
			write_trajectories_for_tact(trajectories, fil=input_file) 

		# Boundaries 
		with open(main_dir + '/libs/All_shapes_334.pic','r') as f:
			all_shapes = pickle.load(f)
		boundary = list(all_shapes[zone]['boundary'][0].exterior.coords)
		assert boundary[0]==boundary[-1]

		# Bounds
		if not os.path.exists(bound_file_zone):
			with open(bound_file_zone, 'w') as f:
				for x, y in boundary:
					f.write(str(x) + '\t' + str(y) + '\n')
		os.system('cp ' + bound_file_zone + ' ' + bound_file)


		# Temporary navpoints
		if not os.path.exists(tmp_navpoints_file_zone) or 1:
			tmp_nvp = compute_temporary_points(50000, boundary, save_file=tmp_navpoints_file_zone)
		os.system('cp ' + tmp_navpoints_file_zone + ' ' + tmp_navpoints_file)

		# Points for shocks
		if not os.path.exists(shock_file_zone) or 1:
			#points = points_in_sectors(zone, all_shapes)
			points = tmp_nvp[:100]
			with open(shock_file_zone, 'w') as f:
				for x, y in points:
					f.write(str(x) + '\t' + str(y) + '\n')
		os.system('cp ' + shock_file_zone + ' ' + shock_file)

	# Copy config file in temporary folder 
	os.system('cp ' + config_file + ' ' + temp_config_dir + '/config.cfg')
	config_file = temp_config_dir + '/config.cfg'

	files, logs = [], []
	#Iterations on every input files

	for input_file in input_files:
		print "Input file:", input_file
		name_par1, name_par2 = tuple(paras['paras_to_loop'])
		for par1 in paras[name_par1 + '_iter']:
			print name_par1, "=", par1
			paras.update(name_par1, par1, config_file=config_file)
			for par2 in paras[name_par2 + '_iter']:
				print name_par2, "=", par2
				paras.update(name_par2, par2, config_file=config_file)
				print 'Updated parameters:'
				for par in paras.keys():
					print ' --', par, '=', paras[par] 
				with clock_time():
					output_file = name_results_shocks(paras, m1_file_name=input_file, zone=zone, suff=suff)
					for i in range(paras['nsim']):
						#counter(i, n_iter, message="Doing iterations... ")
						files.append((input_file, output_file.split('.dat')[0] + '_' + str(i) + '.dat'))
					
					#print output_file
					#print output_file.split('.dat')[0] + '_' + str(paras['nsim']-1) + '.dat'
					#print os.path.exists(output_file.split('.dat')[0] + '_' + str(paras['nsim']-1) + '.dat')
					#raise Exception()
					if (not os.path.exists(output_file.split('.dat')[0] + '_' + str(paras['nsim']-1) + '.dat') or force) and not dryrun:
						#logs.append(output_file.split('.dat')[0] + '_' + str(paras['nsim']-1) + '.txt')
						
						#with stdout_redirected(to=output_file.split('.dat')[0] + '_' + str(paras['nsim']-1) + suff + '.txt'):
						do_ABM_tactical(input_file, output_file, config_file, verbose=1, 
								shock_tmp=shock_file,
								bound_latlon=bound_file,
								temp_nvp=tmp_navpoints_file,
								capacity_file=capacity_file)
		print

	# print "Running parallelized sweep..."
	# p = Pool(n_cores)
	# chouip = {'suff':suff, 'config_file':config_file, 'shock_file':shock_file, 'tmp_navpoints_file':tmp_navpoints_file, 'bound_file':bound_file, 'force':force, 'zone':zone}
	# coin =  p.map(do_sweep_on, [(iptf, paras, chouip) for iptf in input_files])
	# #coin =  p.map(do_sweep_on, list(range(10)))
	# #print coin
	# p.close()



	# files, logs = zip(*coin)
	# files = [ff for f in files for ff in f]
	# logs = [ff for f in logs for ff in f]

	# for fs in files:
	# 	print fs
	
	# raise Exception()

	return files, logs
		db.close()

		for zone in rr:
			if not zone in dontdo:
				print "=============================================="
				print "     Running abm: tactical for zone:", zone
				print "=============================================="
				with open('../libs/All_shapes_334.pic','r') as f:
					all_shapes = pickle.load(f)
				boundary = list(all_shapes[zone]['boundary'][0].exterior.coords)
				assert boundary[0]==boundary[-1]

				with open('../abm_tactical/config/bound_latlon.dat', 'w') as f:
					for x, y in boundary:
						f.write(str(x) + '\t' + str(y) + '\n')

				for i in range(n_M1_trajs):
					if i==0:
						# Compute temporary points only for first iteration
						choose_paras('tmp_from_file', 0)
					else:
						choose_paras('tmp_from_file', 1)
					paras_nav = paras_strategic(zone=zone, mode='navpoints', data_version=data_version)
					name_G = name_net(paras_nav, data_version)
					name_results = name_sim(name_G) + '_' + str(i)+ '.dat'
					#for j in range(n_iter):
					#print '../trajectories/M3/' + name_results + '_' + str(i)
					input_name = jn(result_dir, 'trajectories/M1/' + name_results)
					output_name = jn(result_dir, 'trajectories/M3/' + name_results)
					do_ABM_tactical(input_name, output_name)# + '_' + str(j))
示例#5
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-


import sys, os
sys.path.insert(1, '..')

from paths import result_dir
from interface.abm_interface import do_ABM_tactical

for i in range(20):
	do_ABM_tactical(result_dir + '/trajectories/M1/inputABM_n-10_Eff-0.975743921611_Nf-1500.dat', '/tmp/out.dat')
import sys
import os
sys.path.insert(1, '../..')
#sys.path.insert(1, '../../abm_strategic')
from interface.abm_interface import do_ABM_tactical
from abm_strategic import main_dir

from os.path import join as jn

if __name__ == '__main__':

	input_file = jn(main_dir, 'tests', 'example', 'M1_example.dat')
	output_file = jn(main_dir, 'tests', 'example', 'M3_example.dat')
	config_file = jn(main_dir, 'tests', 'example', 'config', 'config.cfg')
	shock_file = jn(main_dir, 'tests', 'example', 'config', 'shock_tmp.dat')
	bound_file = jn(main_dir, 'tests', 'example', 'config', 'bound_latlon.dat')
	tmp_navpoints_file = jn(main_dir, 'tests', 'example', 'config', 'temp_nvp.dat')
	capacity_file = jn(main_dir, 'tests', 'example', 'config', 'sector_capacities.dat')

	os.system('cp ' + config_file + ' ' + config_file + '.bk')

	try:
		do_ABM_tactical(input_file, output_file, config_file, verbose=1, 
									shock_tmp=shock_file,
									bound_latlon=bound_file,
									temp_nvp=tmp_navpoints_file,
									capacity_file=capacity_file)
	finally:
		os.system('mv ' + config_file + '.bk' + ' ' + config_file )