physbo.search.discrete_unified package

Module contents

class physbo.search.discrete_unified.History(num_objectives)[source]

Bases: object

export_pareto_front()[source]
load(filename)[source]
save(filename)[source]
show_search_results_mo(N, disp_pareto_set=False)[source]
property time_get_action
property time_run_simulator
property time_total
property time_update_predictor
write(t, action, time_total=None, time_update_predictor=None, time_get_action=None, time_run_simulator=None)[source]
class physbo.search.discrete_unified.Policy(test_X, num_objectives, comm=None, config=None, initial_data=None)[source]

Bases: Policy

Multi objective Bayesian optimization with discrete search space by using unified objective function

Initialize the Policy object

Parameters:
  • test_X (numpy.ndarray) – The set of candidates. Each row vector represents the feature vector of each search candidate.

  • num_objectives (int) – The number of objectives

  • comm (MPI.Comm, optional) – MPI Communicator

  • config (physbo.misc.SetConfig, optional)

  • initial_data (tuple[np.ndarray, np.ndarray], optional) – The initial training datasets. The first elements is the array of actions and the second is the array of value of objective functions

Performing Bayesian optimization by using unified objective function

Parameters:
  • training_list (list of physbo.Variable, optional) – The training datasets.

  • max_num_probes (int, optional) – The maximum number of searching process by Bayesian optimization.

  • num_search_each_probe (int, optional) – The number of searching by Bayesian optimization at each process.

  • predictor (predictor object, optional) – The predictor object.

  • is_disp (bool, optional) – If true, process messages are outputted.

  • disp_pareto_set (bool, optional) – If true, Pareto set is displayed.

  • simulator (callable, optional) – The simulator function.

  • score (str, optional) – The type of acquisition funciton. TS (Thompson Sampling), EI (Expected Improvement) and PI (Probability of Improvement) are available.

  • interval (int, optional) – The interval number of learning the hyper parameter. If you set the negative value to interval, the hyper parameter learning is not performed. If you set zero to interval, the hyper parameter learning is performed only at the first step.

  • num_rand_basis (int, optional) – The number of basis function. If you choose 0, ordinary Gaussian process run.

  • unify_method (callable) – The unified objective function. It is a function or a callable object that maps a (N, num_objectives) numpy.ndarray of original objective functions to a (N, 1) numpy.ndarray of unified objective functions. See physbo.search.unify for examples.

  • optimizer (Optimizer object, optional) – This is for compatibility with the range-based Policies. This is not used.

Returns:

history

Return type:

history object (physbo.search.discrete_unified.results.history)

get_permutation_importance(n_perm: int, split_features_parallel=False)[source]

Calculating permutation importance of model

Parameters:
  • n_perm (int) – number of permutations

  • split_features_parallel (bool) – If true, split features in parallel.

Returns:

  • importance_mean (numpy.ndarray) – importance_mean

  • importance_std (numpy.ndarray) – importance_std

get_post_fcov(xs, diag=True)[source]

Calculate covariance of predictor (post distribution)

Parameters:
  • xs (physbo.Variable or np.ndarray) – input parameters to calculate covariance shape is (num_points, num_parameters)

  • diag (bool) – If true, only variances (diagonal elements) are returned.

Returns:

fcov – Covariance matrix of the post distribution. Returned shape is (num_points) if diag=true, (num_points, num_points) if diag=false.

Return type:

numpy.ndarray

get_post_fmean(xs)[source]

Calculate mean value of predictor (post distribution)

Parameters:

xs (physbo.Variable or np.ndarray) – input parameters to calculate mean value shape is (num_points, num_parameters)

Returns:

fmean – Mean value of the post distribution. Returned shape is (num_points).

Return type:

numpy.ndarray

get_score(mode, *, actions=None, xs=None, predictor=None, training=None, parallel=True, alpha=1)[source]

Calculate score (acquisition function)

Parameters:
  • mode (str) – The type of acquisition funciton. TS, EI and PI are available. These functions are defined in score.py.

  • actions (array of int) – actions to calculate score

  • xs (physbo.Variable or np.ndarray) – input parameters to calculate score

  • predictor (predictor object) – predictor used to calculate score. If not given, self.predictor will be used.

  • training (physbo.Variable) – Training dataset. If not given, self.training will be used.

  • parallel (bool) – Calculate scores in parallel by MPI (default: True)

  • alpha (float) – Tuning parameter which is used if mode = TS. In TS, multi variation is tuned as np.random.multivariate_normal(mean, cov*alpha**2, size).

Returns:

f – Score defined in each mode.

Return type:

float or list of float

Raises:

RuntimeError – If both actions and xs are given

Notes

When neither actions nor xs are given, scores for actions not yet searched will be calculated.

When parallel is True, it is assumed that the function receives the same input (actions or xs) for all the ranks. If you want to split the input array itself, set parallel be False and merge results by yourself.

load(file_history, file_training=None, file_predictor=None)[source]

Loading files about history, training and predictor.

Parameters:
  • file_history (str) – The name of the file that stores the information of the history.

  • file_training (str) – The name of the file that stores the training dataset.

  • file_predictor (str) – The name of the file that stores the predictor dataset.

Performing random search.

Parameters:
  • max_num_probes (int) – Maximum number of random search process.

  • num_search_each_probe (int) – Number of search at each random search process.

  • simulator (callable) – Callable (function or object with __call__) from action to t Here, action is an integer which represents the index of the candidate.

  • is_disp (bool) – If true, process messages are outputted.

Returns:

history

Return type:

history object (physbo.search.discrete.results.history)

save(file_history, file_training=None, file_predictor=None)[source]

Saving history, training and predictor into the corresponding files.

Parameters:
  • file_history (str) – The name of the file that stores the information of the history.

  • file_training (str) – The name of the file that stores the training dataset.

  • file_predictor (str) – The name of the file that stores the predictor dataset.

write(action, t, X=None, time_total=None, time_update_predictor=None, time_get_action=None, time_run_simulator=None)[source]

Writing history (update history, not output to a file).

Parameters:
  • action (numpy.ndarray) – Indexes of actions.

  • t (numpy.ndarray) – N dimensional array (1D) or N x k dimensional array (2D). The negative energy of each search candidate (value of the objective function to be optimized). Will be normalized to (N, 1) shape internally.

  • X (numpy.ndarray) – N x d dimensional matrix. Each row of X denotes the d-dimensional feature vector of each search candidate.

  • time_total (numpy.ndarray) – N dimenstional array. The total elapsed time in each step. If None (default), filled by 0.0.

  • time_update_predictor (numpy.ndarray) – N dimenstional array. The elapsed time for updating predictor (e.g., learning hyperparemters) in each step. If None (default), filled by 0.0.

  • time_get_action (numpy.ndarray) – N dimenstional array. The elapsed time for getting next action in each step. If None (default), filled by 0.0.

  • time_run_simulator (numpy.ndarray) – N dimenstional array. The elapsed time for running the simulator in each step. If None (default), filled by 0.0.

Note

In this function, (X, t, Z) is added to the training data set (self.training), but not yet to predictor (self.predictor). self.newdata means such data. To add (X, t, Z) to the predictor, call self._update_predictor() after self.write().