From 3ca733e9417b31bb0ecd0ea1a5bc6e66360a631e Mon Sep 17 00:00:00 2001 From: dcradu <dcradu@uliege.be> Date: Tue, 16 Mar 2021 15:32:13 +0100 Subject: [PATCH] fixed minor errors in random search and main --- src/jl/MCP_heuristics.jl | 1 - src/jl/SitingHeuristics.jl | 9 ++++++--- src/main.py | 25 +++++++++++++------------ 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/jl/MCP_heuristics.jl b/src/jl/MCP_heuristics.jl index 99f5e5b..ef3f516 100644 --- a/src/jl/MCP_heuristics.jl +++ b/src/jl/MCP_heuristics.jl @@ -52,7 +52,6 @@ function randomised_greedy_heuristic(D::Array{Float64,2}, c::Float64, n::Float64 y_incumbent .= Dx_incumbent .>= c LB_incumbent = sum(y_incumbent) locations_removed += 1 - println(locations_removed) end x_incumbent[ind_incumbent] .= 1. return x_incumbent, LB_incumbent diff --git a/src/jl/SitingHeuristics.jl b/src/jl/SitingHeuristics.jl index 569f0db..b5c6359 100644 --- a/src/jl/SitingHeuristics.jl +++ b/src/jl/SitingHeuristics.jl @@ -95,21 +95,24 @@ function main_GRED(deployment_dict, D, c, R, eps, run) end -function main_RAND(deployment_dict, D, c, run) +function main_RAND(deployment_dict, D, c, I, R, run) deployment_dict = Dict([(convert(Int64, k), convert(Int64, deployment_dict[k])) for k in keys(deployment_dict)]) D = convert.(Float64, D) c = convert(Float64, c) + I = convert(Int64, I) + R = convert(Int64, R) + + W, L = size(D) if run == "RS" x_sol, LB_sol = Array{Float64, 2}(undef, R, L), Array{Float64, 1}(undef, R) n = convert(Float64, deployment_dict[1]) - runs = convert(Int64, I*E) for r = 1:R println("Run ", r, "/", R) - x_sol[r, :], LB_sol[r] = random_search(D, c, n, runs) + x_sol[r, :], LB_sol[r] = random_search(D, c, n, I) end else diff --git a/src/main.py b/src/main.py index 8ac6d72..03c9e8c 100644 --- a/src/main.py +++ b/src/main.py @@ -114,7 +114,7 @@ if __name__ == '__main__': params['initial_temp'], params['no_runs'], params['algorithm']) - output_folder = init_folder(model_parameters, suffix='_c' + str(c) + '_MIRSA') + output_folder = init_folder(model_parameters, c, suffix='_MIRSA') with open(join(output_folder, 'config_model.yaml'), 'w') as outfile: yaml.dump(model_parameters, outfile, default_flow_style=False, sort_keys=False) @@ -125,7 +125,7 @@ if __name__ == '__main__': pickle.dump(jl_objective, open(join(output_folder, 'objective_vector.p'), 'wb')) pickle.dump(jl_traj, open(join(output_folder, 'trajectory_matrix.p'), 'wb')) - med_run = argsort(jl_objective)[c//2] + med_run = argsort(jl_objective)[params['no_runs']//2] jl_selected_seed = jl_selected[med_run, :] jl_objective_seed = jl_objective[med_run] @@ -136,8 +136,8 @@ if __name__ == '__main__': elif siting_parameters['solution_method']['RAND']['set']: - custom_log(' Locations to be chosen via random search. Resulting coordinates are not obtained!') - params = model_parameters['solution_method']['RAND'] + custom_log(' Locations to be chosen via random search.') + params = siting_parameters['solution_method']['RAND'] if not isinstance(params['c'], list): raise ValueError(' Values of c have to provided as list for the RAND set-up.') @@ -155,14 +155,15 @@ if __name__ == '__main__': print('Running heuristic for c value of', c) jl_selected, jl_objective = Main.main_RAND(jl_dict['deployment_dict'], criticality_data, - c, params['algorithm']) + c, params['no_iterations'], params['no_runs'], + params['algorithm']) - output_folder = init_folder(model_parameters, suffix='_c' + str(c) + '_RS') + 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)[c//2] + med_run = argsort(jl_objective)[params['no_runs']//2] jl_selected_seed = jl_selected[med_run, :] jl_objective_seed = jl_objective[med_run] @@ -173,8 +174,8 @@ if __name__ == '__main__': elif siting_parameters['solution_method']['GRED']['set']: - custom_log(' GRED chosen to solve the IP. Opening a Julia instance. Resulting coordinates are not obtained!') - params = model_parameters['solution_method']['GRED'] + custom_log(' GRED chosen to solve the IP. Opening a Julia instance.') + params = siting_parameters['solution_method']['GRED'] if not isinstance(params['c'], list): raise ValueError(' Values of c have to elements of a list for the heuristic set-up.') @@ -189,14 +190,14 @@ if __name__ == '__main__': for c in params['c']: print('Running heuristic for c value of', c) jl_selected, jl_objective = Main.main_GRED(jl_dict['deployment_dict'], criticality_data, c, - params['no_runs'], params['eps'], params['algorithm']) + params['no_runs'], params['epsilon'], params['algorithm']) - output_folder = init_folder(model_parameters, suffix='_c' + str(c) + '_GRED') + output_folder = init_folder(model_parameters, c, suffix='_GRED') 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)[c//2] + med_run = argsort(jl_objective)[params['no_runs']//2] jl_selected_seed = jl_selected[med_run, :] jl_objective_seed = jl_objective[med_run] -- GitLab