def __init__(self, scenario_dir, num_trees=30, split_min=1, seed=42, fanova_lib_folder=None, fanova_class_folder=None): """ fanova_class_folder: used for development purposes only. """ self._remote = FanovaRemote() if fanova_lib_folder is None: self._fanova_lib_folder = resource_filename("pyfanova", 'fanova') else: self._fanova_lib_folder = fanova_lib_folder self._fanova_class_folder = fanova_class_folder self._num_trees = num_trees self._split_min = split_min self._seed = seed self._scenario_dir = scenario_dir self._start_fanova() logging.debug("Now connecting to fanova...") if self._start_connection(): self._config_space = ConfigSpace(self._remote) param_names = self._config_space.get_parameter_names() self.param_name2dmin = dict(zip(param_names, range(len(param_names)))) else: stdout, stderr = self._process.communicate() error_msg = "failed starting fanova " if stdout is not None: error_msg += stdout if stderr is not None: error_msg += stderr raise RuntimeError(error_msg)
def __init__(self, smac_output, num_trees=30, split_min=5, seed=42, improvement_over="NOTHING", quantile_to_compare=0.25, heap_size=1024, fanova_lib_folder=None, fanova_class_folder=None): """ Starts the Fanova from the scenario directory and opens a TCP connection to communicate with Java Arguments: smac_output (str): Path to the state_run directory created by SMAC num_trees (int): Number of trees to create the Random Forest split_min (int): Minimum number of points to create a new split in the Random Forest heap_size (int): Head size in MB for Java improvement_over [DEFAULT, QUANTILE, NOTHING]: Compute improvements with respect to (this setting) quantile_to_compare (float): Quantile to compare to (if using QUANTILE --improvements-over) """ self._remote = FanovaRemote() self.check_output_dir(smac_output) if fanova_lib_folder is None: self._fanova_lib_folder = resource_filename("pyfanova", 'fanova') else: self._fanova_lib_folder = fanova_lib_folder self._fanova_class_folder = fanova_class_folder self._num_trees = num_trees self._split_min = split_min self._seed = seed self._smac_output = smac_output self._heap_size = "-Xmx" + str(heap_size) + "m" self._improvement_over = improvement_over self._quantile_to_compare = quantile_to_compare self._start_fanova() logging.debug("Now connecting to fanova...") if self._start_connection(): self._config_space = ConfigSpace(self._remote) param_names = self._config_space.get_parameter_names() self.param_name2dmin = dict( list(zip(param_names, list(range(len(param_names)))))) else: stdout, stderr = self._process.communicate() error_msg = "Failed starting fanova. Did you start it from a SMAC state-run directory?" if stdout is not None: error_msg += stdout if stderr is not None: error_msg += stderr raise RuntimeError(error_msg)