From 0ac6e9e0c4564e149afdcfae73b208b5e3f30f0e Mon Sep 17 00:00:00 2001 From: David Radu <dcradu@uliege.be> Date: Thu, 29 Apr 2021 21:22:27 +0200 Subject: [PATCH] push from pan, updated SGHSA method --- src/jl/SitingHeuristics.jl | 21 +++++++++++---------- src/main.py | 6 ++++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/jl/SitingHeuristics.jl b/src/jl/SitingHeuristics.jl index adc1318..1657d61 100644 --- a/src/jl/SitingHeuristics.jl +++ b/src/jl/SitingHeuristics.jl @@ -21,7 +21,7 @@ function myunpickle(filename) end -function main_MIRSA(index_dict, deployment_dict, D, c, N, I, E, T_init, R, run, p) +function main_MIRSA(index_dict, deployment_dict, D, c, N, I, E, T_init, R, run, p, data_path) index_dict = Dict([(convert(Int64, k), convert(Int64, index_dict[k])) for k in keys(index_dict)]) deployment_dict = Dict([(convert(Int64, k), convert(Int64, deployment_dict[k])) for k in keys(deployment_dict)]) @@ -35,6 +35,7 @@ function main_MIRSA(index_dict, deployment_dict, D, c, N, I, E, T_init, R, run, R = convert(Int64, R) run = string(run) p = convert(Float64, p) + data_path = string(data_path) legacy_index = Vector{Int64}(undef, 0) W, L = size(D) @@ -73,18 +74,18 @@ function main_MIRSA(index_dict, deployment_dict, D, c, N, I, E, T_init, R, run, elseif run == "SGH" - R_init = 10 - x_init, LB_init = Array{Float64, 2}(undef, R_init, L), Array{Float64, 1}(undef, R_init) - for r = 1:R_init - x_init[r, :], LB_init[r] = stochastic_threshold_greedy_algorithm(D, c, n, p) - end - - LB_init_best = argmax(LB_init) - x_init_best = x_init[LB_init_best, :] - println("Initial solution computed. Starting LS.") + sample_size = 10 + LB_init = myunpickle(joinpath(data_path, "objective_vector.p")) + x_init = myunpickle(joinpath(data_path, "solution_matrix.p")) x_sol, LB_sol, obj_sol = Array{Float64, 2}(undef, R, L), Array{Float64, 1}(undef, R), Array{Float64, 2}(undef, R, I) + for r = 1:R + println(r, "/", R, "for", c) + + LB_init_best = argmax(sample(LB_init, sample_size, replace=false)) + x_init_best = x_init[LB_init_best, :] + x_sol[r, :], LB_sol[r], obj_sol[r, :] = simulated_annealing_local_search(D, c, n, N, I, E, x_init_best, T_init, legacy_index) end diff --git a/src/main.py b/src/main.py index 43061f4..b806337 100644 --- a/src/main.py +++ b/src/main.py @@ -128,6 +128,8 @@ if __name__ == '__main__': params = siting_parameters['solution_method']['LS'] jl_dict = generate_jl_input(deployment_dict, site_coordinates) + path_to_sol = '10y_n560_k1_c' + str(args['c']) + '_GRED_STGH_p27' + path_to_init_sol_folder = join(data_path, 'output', path_to_sol) import julia j = julia.Julia(compiled_modules=False) @@ -139,11 +141,11 @@ if __name__ == '__main__': criticality_data, c, params['neighborhood'], params['no_iterations'], params['no_epochs'], params['initial_temp'], params['no_runs'], - args['LS_init_algorithm'], args['p']) + args['LS_init_algorithm'], args['p'], path_to_init_sol_folder) end = time.time() print(f"Average CPU time for c={c}: {round((end-start)/params['no_runs'], 1)} s") - output_folder = init_folder(model_parameters, c, suffix=f"_LS_{args['LS_init_algorithm']}") + output_folder = init_folder(model_parameters, c, suffix=f"_LS_{args['LS_init_algorithm']}_quattro") with open(join(output_folder, 'config_model.yaml'), 'w') as outfile: yaml.dump(model_parameters, outfile, default_flow_style=False, sort_keys=False) -- GitLab