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