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