import numpy as np from scipy.stats import norm class PreferenceExpectedImprovement: def __init__(self, nr_samples, nr_dims, lower_bound, upper_bound, seed=None): self.nr_samples = nr_samples self.nr_dims = nr_dims # check if upper_bound and lower_bound are numpy arrays of shape (nr_dims, 1) or (nr_dims,) or if they are floats self.upper_bound = upper_bound self.lower_bound = lower_bound self.user_model = None self.proposal_model_mean = np.array((nr_dims, 1)) self.proposal_model_covariance = np.diag(np.ones((nr_dims, )) * 5) self.rng = np.random.default_rng(seed=seed) def initialize(self): pass def rejection_sampling(self): samples = np.empty((self.nr_samples, self.nr_dims)) i = 0 while i < self.nr_samples: pass def expected_improvement(self): pass def update_user_preference_model(self): pass def update_proposal_model(self): pass if __name__ == '__main__': acquisition = PreferenceExpectedImprovement(10, 2, -1.0, 1.0)