def __request_general_input_data(self): solver_name = input('Choose index of minisat subtype: \n' ' 1) minisat_core\n' ' 2) minisat_simp\n' ' 3) pmcsat\n' ' 4) glucored+march_release\n' ' 5) glucan_static\n' ' 6) mipisat\n' ' 7) minisat_ClauseSplit\n' ) if (solver_name == '1') or (solver_name == 'minisat_core'): solver_name = 'minisat_core' elif (solver_name == '2') or (solver_name == 'minisat_simp'): solver_name = 'minisat_simp' elif (solver_name == '3') or (solver_name == 'pmcsat'): solver_name = 'pmcsat' elif (solver_name == '4') or (solver_name == 'glucored+march_release'): solver_name = 'glucored+march_release' elif (solver_name == '5') or (solver_name == 'glucan_static'): solver_name = 'glucan_static' elif (solver_name == '6') or (solver_name == 'mipisat'): solver_name = 'mipisat' elif (solver_name == '7') or (solver_name == 'minisat_ClauseSplit'): solver_name = 'minisat_ClauseSplit' else: print('Error: Invalid minisat subtype.') exit() if not FileModule.solver_exist(solver_name): print('Error: Solver file does not exist.') exit() # general --------------- self.__solver_file_path = FileModule.get_solver_file_path(solver_name) self.__cnf_file_path = FileModule.get_cnf_file_path() if len(self.__cnf_file_path) == 0: print('Error: Multiple cnf files in cnf folder.') exit() self.__root_experiments_path = Config.Filepaths.RESULTS_FOLDER start_file_name = input('Input start values file name: ') self.__start_parameters_values_file_path = Config.Filepaths.START_VALUES_FOLDER + '/' + start_file_name if not FileModule.file_exist(self.__start_parameters_values_file_path): print('File does not exist.') exit() self.__max_threads_number = Config.Defaults.USED_CORES_NUMBER parameters_templates = SolversDescriptions.get_parameters_template(solver_name, self.__max_threads_number) print('Choose handled parameters indexes (or just push ENTER for choose all):') for index, parameter in enumerate(parameters_templates): print(' ' + str(index) + ') ' + str(parameter)) handled_indexes_string = input('(separated by commas): ') handled_indexes_string = handled_indexes_string.replace(' ', '') if len(handled_indexes_string) == 0: self.__handled_parameters_indexes = range(len(parameters_templates)) else: self.__handled_parameters_indexes = list() for index_string in handled_indexes_string.split(','): self.__handled_parameters_indexes.append(int(index_string)) self.__experiment_name = input('Input experiment name (optional): ')
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 )