Esempio n. 1
0
 def __run_solver(solver_name, timeout, handled_parameters, active_parameters_values):
     pm = ParametersModule(FileModule.get_solver_file_path(solver_name),
                           Config.Filepaths.RESULTS_FOLDER,
                           Config.Defaults.USED_CORES_NUMBER,
                           handled_parameters,
                           active_parameters_values)
     tl = ThreadsLauncher(pm, Config.Defaults.USED_CORES_NUMBER, timeout, 0.5,
                          functools.partial(UI.__save_solver_output_data,
                                            Config.Filepaths.RESULTS_FOLDER))
     tl.run()
     UI.__process_results(tl.get_results(), timeout)
Esempio n. 2
0
 def _start_sub_experiment(self):
     self._tabued_number = 0
     self._best_results.append((None, None))
     if self._best_results[len(self._best_results)-2][0] is not None:
         start_params_vals = self._best_results[len(self._best_results)-2][0]
         start_values_generator = StartValues(self.get_solver_file_name(),
                                              self._handled_parameters_indexes,
                                              self._start_parameters_values_file_path)
         self._start_parameters_values = start_values_generator.create_start_values(start_params_vals)
     else:
         print("Local minimum found.")
         return False
     parameters_module = ParametersModule(self._solver_file_path,
                                          self._cnf_file_path,
                                          self._reports_folder_path,
                                          self._max_threads_number,
                                          self._handled_parameters_indexes,
                                          self._start_parameters_values,
                                          self._max_delta,
                                          self._max_hamming_distance)
     parameters_module.skip_start_values()
     if self._tabu_module.add_area(parameters_module.get_area()):
         thread_launcher = ThreadsLauncher(parameters_module,
                                           self._max_threads_number,
                                           self._solver_timeout,
                                           self._THREAD_LAUNCHER_SLEEPING_TIME,
                                           functools.partial(TabuExperiment._check_params_on_tabu,
                                                             self),
                                           functools.partial(TabuExperiment.__handle_result,
                                                             self),
                                           functools.partial(SimpleExperiment._save_solver_output_data,
                                                             self,
                                                             self._reports_folder_path))
         thread_launcher.run()
         self._number_of_experiments_produced += 1
         best_time = self._best_results[len(self._best_results)-1][1]
         print("Iteration №" + str(self._number_of_experiments_produced) + ". Best time = "
               + str(best_time) + ". Parameters values: "
               + str(self._best_results[len(self._best_results)-1][0]) + "\n"
               + "Tabued number: " + str(self._tabued_number))
         self._solver_timeout = best_time
         return self._number_of_experiments_produced < self._restarts_number
     else:
         return False
Esempio n. 3
0
 def _find_random_point(self):
     random_parameters_module = RandomParametersModule(self._solver_file_path,
                                                       self._cnf_file_path,
                                                       self._reports_folder_path,
                                                       self._max_threads_number,
                                                       self._handled_parameters_indexes,
                                                       self._start_parameters_values,
                                                       10)
     thread_launcher = ThreadsLauncher(random_parameters_module,
                                       self._max_threads_number,
                                       # максимально допустимое время не более чем в 1.5 раза хуже стартового
                                       self._best_results[0][1]*1.5,
                                       self._THREAD_LAUNCHER_SLEEPING_TIME,
                                       functools.partial(AnnealingExperiment.__check_random_params_on_tabu,
                                                         self),
                                       functools.partial(AnnealingExperiment.__handle_random_result,
                                                         self,
                                                         random_parameters_module),
                                       functools.partial(SimpleExperiment._save_solver_output_data,
                                                         self,
                                                         self._reports_folder_path))
     thread_launcher.run()