Skip to content
Snippets Groups Projects
Commit c36d4599 authored by David Radu's avatar David Radu
Browse files

minor updates pan

parent e38ccf53
No related branches found
No related tags found
No related merge requests found
...@@ -26,33 +26,34 @@ siting_params: ...@@ -26,33 +26,34 @@ siting_params:
BB: BB:
# Branch & Bound # Branch & Bound
set: False set: False
mir: True mir: False
solver: 'gurobi' solver: 'gurobi'
mipgap: 0.01 mipgap: 0.01
timelimit: 3600 timelimit: 43200
threads: 1 threads: 36
MIRSA: MIRSA:
# Simulated Annealing with Local Search # Simulated Annealing with Local Search
set: True set: True
neighborhood: 1 neighborhood: 1
no_iterations: 1000 no_iterations: 2000
no_epochs: 500 no_epochs: 500
initial_temp: 200. initial_temp: 200.
no_runs: 1 no_runs: 50
algorithm: 'RSSA' # 'GLS' (Greedy Local Search), 'RSSA', 'SALS' algorithm: 'SALS' # 'GLS' (Greedy Local Search), 'RSSA', 'SALS', 'STGHSA'
GRED_DET: GRED_DET:
set: False set: False
no_runs: 5 no_runs: 10
p: 0
algorithm: 'TGH' algorithm: 'TGH'
GRED_STO: GRED_STO:
set: False set: False
p: 55 # 10% of 10150 locations p: 27 # 10% of 10150 locations
no_runs: 100 no_runs: 200
algorithm: 'STGH' algorithm: 'STGH'
RAND: RAND:
# Random Search # Random Search
set: False set: False
no_iterations: 50 no_iterations: 1000
no_epochs: 500 no_epochs: 1000
no_runs: 1 no_runs: 200
algorithm: 'RS' algorithm: 'RS'
...@@ -16,11 +16,12 @@ def parse_args(): ...@@ -16,11 +16,12 @@ def parse_args():
parser = argparse.ArgumentParser(description='Command line arguments.') parser = argparse.ArgumentParser(description='Command line arguments.')
parser.add_argument('-c', '--threshold', type=int) parser.add_argument('--c', type=int)
parser.add_argument('-run_BB', '--run_BB_algorithm', type=bool, default=False) parser.add_argument('--run_BB', type=bool, default=False)
parser.add_argument('-run_MIRSA', '--run_MIRSA_algorithm', type=bool, default=False) parser.add_argument('--run_MIRSA', type=bool, default=False)
parser.add_argument('-run_GRED_DET', '--run_GRED_DET_algorithm', type=bool, default=False) parser.add_argument('--run_GRED_DET', type=bool, default=False)
parser.add_argument('-run_GRED_STO', '--run_GRED_STO_algorithm', type=bool, default=False) parser.add_argument('--run_GRED_STO', type=bool, default=False)
parser.add_argument('--run_RAND', type=bool, default=False)
parsed_args = vars(parser.parse_args()) parsed_args = vars(parser.parse_args())
...@@ -86,10 +87,11 @@ if __name__ == '__main__': ...@@ -86,10 +87,11 @@ if __name__ == '__main__':
siting_parameters['solution_method']['MIRSA']['set'] = args['run_MIRSA'] siting_parameters['solution_method']['MIRSA']['set'] = args['run_MIRSA']
siting_parameters['solution_method']['GRED_DET']['set'] = args['run_GRED_DET'] siting_parameters['solution_method']['GRED_DET']['set'] = args['run_GRED_DET']
siting_parameters['solution_method']['GRED_STO']['set'] = args['run_GRED_STO'] siting_parameters['solution_method']['GRED_STO']['set'] = args['run_GRED_STO']
siting_parameters['solution_method']['RAND']['set'] = args['run_RAND']
c = args['c'] c = args['c']
if not single_true([args['run_BB'], args['run_MIRSA'], args['run_GRED_DET'], args['GRED_STO']]): if not single_true([args['run_BB'], args['run_MIRSA'], args['run_GRED_DET'], args['run_GRED_STO'], args['run_RAND']]):
raise ValueError(' More than one run selected in the argparser.') raise ValueError(' More than one run selected in the argparser.')
if siting_parameters['solution_method']['BB']['set']: if siting_parameters['solution_method']['BB']['set']:
...@@ -97,7 +99,7 @@ if __name__ == '__main__': ...@@ -97,7 +99,7 @@ if __name__ == '__main__':
custom_log(' BB chosen to solve the IP.') custom_log(' BB chosen to solve the IP.')
params = siting_parameters['solution_method']['BB'] params = siting_parameters['solution_method']['BB']
output_folder = init_folder(model_parameters, c, f"_BB_MIR_str{params['mir']}") output_folder = init_folder(model_parameters, c, f"_BB_MIR_{params['mir']}")
with open(join(output_folder, 'config_model.yaml'), 'w') as outfile: with open(join(output_folder, 'config_model.yaml'), 'w') as outfile:
yaml.dump(model_parameters, outfile, default_flow_style=False, sort_keys=False) yaml.dump(model_parameters, outfile, default_flow_style=False, sort_keys=False)
with open(join(output_folder, 'config_techs.yaml'), 'w') as outfile: with open(join(output_folder, 'config_techs.yaml'), 'w') as outfile:
...@@ -154,43 +156,27 @@ if __name__ == '__main__': ...@@ -154,43 +156,27 @@ if __name__ == '__main__':
pickle.dump(jl_objective, open(join(output_folder, 'objective_vector.p'), 'wb')) pickle.dump(jl_objective, open(join(output_folder, 'objective_vector.p'), 'wb'))
pickle.dump(jl_traj, open(join(output_folder, 'trajectory_matrix.p'), 'wb')) pickle.dump(jl_traj, open(join(output_folder, 'trajectory_matrix.p'), 'wb'))
# elif siting_parameters['solution_method']['RAND']['set']: elif siting_parameters['solution_method']['RAND']['set']:
#
# custom_log(' Locations to be chosen via random search.') custom_log(' Locations to be chosen via random search.')
# params = siting_parameters['solution_method']['RAND'] params = siting_parameters['solution_method']['RAND']
#
# if not isinstance(params['c'], list): jl_dict = generate_jl_input(deployment_dict, site_coordinates)
# raise ValueError(' Values of c have to provided as list for the RAND set-up.')
# if len(model_parameters['technologies']) > 1: import julia
# raise ValueError(' This method is currently implemented for one single technology only.') j = julia.Julia(compiled_modules=False)
# from julia import Main
# jl_dict = generate_jl_input(deployment_dict, site_coordinates) Main.include("jl/SitingHeuristics.jl")
#
# import julia
# j = julia.Julia(compiled_modules=False) jl_selected, jl_objective = Main.main_RAND(jl_dict['deployment_dict'], criticality_data,
# from julia import Main c, params['no_iterations'], params['no_runs'],
# Main.include("jl/SitingHeuristics.jl") params['algorithm'])
#
# for c in params['c']: output_folder = init_folder(model_parameters, c, suffix='_RS')
# print('Running heuristic for c value of', c)
# pickle.dump(jl_selected, open(join(output_folder, 'solution_matrix.p'), 'wb'))
# jl_selected, jl_objective = Main.main_RAND(jl_dict['deployment_dict'], criticality_data, pickle.dump(jl_objective, open(join(output_folder, 'objective_vector.p'), 'wb'))
# c, params['no_iterations'], params['no_runs'],
# params['algorithm'])
#
# output_folder = init_folder(model_parameters, c, suffix='_RS')
#
# pickle.dump(jl_selected, open(join(output_folder, 'solution_matrix.p'), 'wb'))
# pickle.dump(jl_objective, open(join(output_folder, 'objective_vector.p'), 'wb'))
#
# med_run = argsort(jl_objective)[params['no_runs']//2]
# jl_selected_seed = jl_selected[med_run, :]
# jl_objective_seed = jl_objective[med_run]
#
# jl_locations = retrieve_location_dict(jl_selected_seed, model_parameters, site_positions)
# retrieve_site_data(model_parameters, deployment_dict, site_coordinates, capacity_factors_data,
# criticality_data, site_positions, c, jl_locations, jl_objective_seed,
# output_folder, benchmarks=False)
elif siting_parameters['solution_method']['GRED_DET']['set']: elif siting_parameters['solution_method']['GRED_DET']['set']:
...@@ -220,9 +206,6 @@ if __name__ == '__main__': ...@@ -220,9 +206,6 @@ if __name__ == '__main__':
params = siting_parameters['solution_method']['GRED_STO'] params = siting_parameters['solution_method']['GRED_STO']
custom_log(f" GRED_{params['algorithm']} chosen to solve the IP. Opening a Julia instance.") custom_log(f" GRED_{params['algorithm']} chosen to solve the IP. Opening a Julia instance.")
if not isinstance(params['c'], list):
raise ValueError(' Values of c have to elements of a list for the heuristic set-up.')
jl_dict = generate_jl_input(deployment_dict, site_coordinates) jl_dict = generate_jl_input(deployment_dict, site_coordinates)
import julia import julia
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment