Ejemplo n.º 1
0
 def __init__(self,
              solver_file_path,
              cnf_file_path,
              reports_folder_path,
              threads_number,
              handled_parameters_indexes,
              # количество = количеству обрабатываемых активных параметров (лишних значений нет)
              start_parameters_values,
              max_delta,
              max_hamming_distance,
              min_hamming_distance=1):
     self.__solver_name = FileModule.get_file_name(solver_file_path)
     self.__solver_file_path = solver_file_path
     self.__cnf_file_path = cnf_file_path
     self.__reports_folder_path = reports_folder_path
     self.__handled_parameters_indexes = handled_parameters_indexes
     # start_parameters_values это массив, элементы которого могут быть:
     # bool значением для параметра типа BOOL
     # кортежем из 2-х double для параметра типа RANGE
     self.__start_parameters_values = start_parameters_values
     self.__last_parameters_values_tuple = list()
     self.__parameters_templates = SolversDescriptions.get_handled_parameters_template(self.__solver_name,
                                                                                       threads_number,
                                                                                       handled_parameters_indexes)
     parameters_classes = self.__create_parameters_classes()
     self.__max_delta = max_delta
     self.__values_factory = ParametersValuesFactory(parameters_classes,
                                                     max_delta,
                                                     max_hamming_distance,
                                                     min_hamming_distance)
Ejemplo n.º 2
0
 def __init__(self,
              solver_file_path,
              cnf_file_path,
              root_experiments_path,
              start_parameters_values_file_path,
              max_delta,
              max_hamming_distance,
              restarts_number,
              max_threads_number,
              handled_parameters_indexes,
              experiment_name=''):
     ExperimentDescription.__init__(self,
                                    solver_file_path,
                                    cnf_file_path,
                                    root_experiments_path,
                                    start_parameters_values_file_path,
                                    handled_parameters_indexes,
                                    max_threads_number,
                                    experiment_name)
     self._max_delta = max_delta
     self._max_hamming_distance = max_hamming_distance
     self._restarts_number = restarts_number
     self._number_of_experiments_produced = 0
     self._start_parameters_values = self.get_start_parameters_values()
     experiment_name_folder = (self._experiment_name + '/') if len(self._experiment_name) != 0 else ""
     solver_name = FileModule.get_file_name(self._solver_file_path)
     cnf_name = FileModule.get_file_name(self._cnf_file_path)
     self._reports_folder_path = self._root_experiments_path \
         + "SimpleExperiment/" \
         + experiment_name_folder \
         + solver_name + '/' \
         + cnf_name + '/' \
         + ExperimentDescription.get_current_time_string() + '/'
     FileModule.create_folder(self._reports_folder_path)
     print("Calculating solver timeout...")
     self._solver_timeout = self._get_solver_timeout()
     print("Solver timeout = " + str(self._solver_timeout) + " seconds")
     # (parameters_values, time)
     self._best_results = list()
     self._best_results.append((self._get_default_parameters_values(), self._solver_timeout))
Ejemplo n.º 3
0
 def run(self):
     working_instances_number = 0
     list_of_working_instances = list()  # contains tuples: (solver_instance, output_pipe, cnf_name)
     while True:
         if self.__parameters_module.has_new_parameters_list() and \
                 (working_instances_number < self.__threads_number):
             parameters_list = self.__parameters_module.get_parameters_list()
             cnf_name = FileModule.get_file_name(self.__parameters_module.get_last_cnf_file_path())
             print("Run instance: " + self.__parameters_module.get_progress_string())
             self.__run_solver_instance(list_of_working_instances,
                                        parameters_list,
                                        cnf_name)
             working_instances_number += 1
         elif working_instances_number == 0:
             break
         working_instances_number = self. \
             __check_instances_on_finish(list_of_working_instances, working_instances_number)
         time.sleep(self.__sleeping_time)
Ejemplo n.º 4
0
 def __init__(self,
              solver_file_path,
              cnf_file_path,
              reports_folder_path,
              threads_number,
              handled_parameters_indexes,
              start_parameters_values,
              max_delta):
     self.__solver_name = FileModule.get_file_name(solver_file_path)
     self.__solver_file_path = solver_file_path
     self.__cnf_file_path = cnf_file_path
     self.__reports_folder_path = reports_folder_path
     self.__handled_parameters_indexes = handled_parameters_indexes
     self.__start_parameters_values = start_parameters_values
     self.__max_delta = max_delta
     self.__last_parameters_values_tuple = list()
     self.__parameters_templates = SolversDescriptions.get_handled_parameters_template(self.__solver_name,
                                                                                       threads_number,
                                                                                       handled_parameters_indexes)
     parameters_classes = self.__create_parameters_classes()
     self.__values_factory = RandomParametersValuesFactory(parameters_classes)
     self.__stop = False
Ejemplo n.º 5
0
 def __init__(
     self,
     solver_file_path,
     reports_folder_path,
     threads_number,
     handled_parameters_indexes,
     # количество = количеству обрабатываемых активных параметров (лишних значений нет)
     start_parameters_values,
 ):
     self.__solver_name = FileModule.get_file_name(solver_file_path)
     self.__solver_file_path = solver_file_path
     self.__next_cnf_index = 0
     self.__current_cnf = ""
     self.__cnf_files_paths = FileModule.get_cnf_file_path()
     self.__reports_folder_path = reports_folder_path
     self.__handled_parameters_indexes = handled_parameters_indexes
     # start_parameters_values это массив, элементы которого могут быть:
     # bool значением для параметра типа BOOL
     # double значением для параметра типа RANGE
     self.__start_parameters_values = start_parameters_values
     self.__parameters_templates = SolversDescriptions.get_handled_parameters_template(
         self.__solver_name, threads_number, handled_parameters_indexes
     )
Ejemplo n.º 6
0
 def get_solver_file_name(self):
     return FileModule.get_file_name(self._solver_file_path)
Ejemplo n.º 7
0
 def __create_output_file_name(self):
     return FileModule.get_file_name(self.__current_cnf)