From e381fe61cf99358202db60a86f4c8ca3851d892b Mon Sep 17 00:00:00 2001 From: zdanial <81705500+zdanial@users.noreply.github.com> Date: Wed, 23 Feb 2022 10:30:04 -0500 Subject: [PATCH 1/8] initial guess added to DOE --- bayes_optim/base.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/bayes_optim/base.py b/bayes_optim/base.py index ac56857..d21bfdf 100644 --- a/bayes_optim/base.py +++ b/bayes_optim/base.py @@ -39,6 +39,7 @@ def __init__( eval_type: str = "list", DoE_size: Optional[int] = None, warm_data: Tuple = None, + initial_guess: np.ndarray = None, n_point: int = 1, acquisition_fun: str = "EI", acquisition_par: dict = None, @@ -377,7 +378,14 @@ def create_DoE(self, n_point: int, fixed: Dict = None) -> List: search_space = self.search_space.filter(fixed.keys(), invert=True) count = 0 - DoE = [] + if self.iter_count == 0 and not self.initial_guess is None: + assert self.initial_guess.shape[1] == self.dim + assert all([isinstance(_, float) for _ in X[:, self.r_index].ravel()]) + assert all([isinstance(_, int) for _ in X[:, self.i_index].ravel()]) + assert all([isinstance(_, str) for _ in X[:, self.d_index].ravel()]) + DoE = [self.initial_guess] + else: + DoE = [] while n_point: # NOTE: random sampling could generate duplicated points again # keep sampling until getting enough points From ae6aeab72f05baf50c4e5a2b98cd557bfff2ad21 Mon Sep 17 00:00:00 2001 From: zdanial <81705500+zdanial@users.noreply.github.com> Date: Wed, 23 Feb 2022 10:32:49 -0500 Subject: [PATCH 2/8] fix --- bayes_optim/base.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bayes_optim/base.py b/bayes_optim/base.py index d21bfdf..9675d95 100644 --- a/bayes_optim/base.py +++ b/bayes_optim/base.py @@ -380,9 +380,9 @@ def create_DoE(self, n_point: int, fixed: Dict = None) -> List: count = 0 if self.iter_count == 0 and not self.initial_guess is None: assert self.initial_guess.shape[1] == self.dim - assert all([isinstance(_, float) for _ in X[:, self.r_index].ravel()]) - assert all([isinstance(_, int) for _ in X[:, self.i_index].ravel()]) - assert all([isinstance(_, str) for _ in X[:, self.d_index].ravel()]) + assert all([isinstance(_, float) for _ in self.initial_guess[:, self.r_index].ravel()]) + assert all([isinstance(_, int) for _ in self.initial_guess[:, self.i_index].ravel()]) + assert all([isinstance(_, str) for _ in self.initial_guess[:, self.d_index].ravel()]) DoE = [self.initial_guess] else: DoE = [] From efa625f43b43ed32cd7cf137d60a2cd8cde0969d Mon Sep 17 00:00:00 2001 From: zdanial <81705500+zdanial@users.noreply.github.com> Date: Wed, 23 Feb 2022 11:01:37 -0500 Subject: [PATCH 3/8] update --- bayes_optim/base.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bayes_optim/base.py b/bayes_optim/base.py index 9675d95..2e932b5 100644 --- a/bayes_optim/base.py +++ b/bayes_optim/base.py @@ -292,7 +292,8 @@ def ask( else: # take the initial DoE n_point = self._DoE_size if n_point is None else n_point msg = f"asking {n_point} points (using DoE):" - X = self.create_DoE(n_point, fixed=fixed) + X = self.create_DoE(n_point, fixed=fixed, initial_guess=not self.initial_guess is None) + self.logger.info(X) if len(X) == 0: raise AskEmptyError() @@ -361,7 +362,7 @@ def tell( self.iter_count += 1 self.hist_f.append(xopt.fitness) - def create_DoE(self, n_point: int, fixed: Dict = None) -> List: + def create_DoE(self, n_point: int, fixed: Dict = None, initial_guess=False) -> List: """get the initial sample points using Design of Experiemnt (DoE) methods Parameters @@ -378,7 +379,7 @@ def create_DoE(self, n_point: int, fixed: Dict = None) -> List: search_space = self.search_space.filter(fixed.keys(), invert=True) count = 0 - if self.iter_count == 0 and not self.initial_guess is None: + if initial_guess and not self.initial_guess is None: assert self.initial_guess.shape[1] == self.dim assert all([isinstance(_, float) for _ in self.initial_guess[:, self.r_index].ravel()]) assert all([isinstance(_, int) for _ in self.initial_guess[:, self.i_index].ravel()]) From 89c77aa59ce475f426cb99ce83810ef5345b077a Mon Sep 17 00:00:00 2001 From: zdanial <81705500+zdanial@users.noreply.github.com> Date: Wed, 23 Feb 2022 11:02:07 -0500 Subject: [PATCH 4/8] f --- bayes_optim/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bayes_optim/base.py b/bayes_optim/base.py index 2e932b5..710e945 100644 --- a/bayes_optim/base.py +++ b/bayes_optim/base.py @@ -293,6 +293,7 @@ def ask( n_point = self._DoE_size if n_point is None else n_point msg = f"asking {n_point} points (using DoE):" X = self.create_DoE(n_point, fixed=fixed, initial_guess=not self.initial_guess is None) + self.logger.info('*** Find me') self.logger.info(X) if len(X) == 0: From 2ca54e2559e799074b155633280025e77b24ff44 Mon Sep 17 00:00:00 2001 From: zdanial <81705500+zdanial@users.noreply.github.com> Date: Wed, 23 Feb 2022 11:08:13 -0500 Subject: [PATCH 5/8] fix --- bayes_optim/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bayes_optim/base.py b/bayes_optim/base.py index 710e945..0893d56 100644 --- a/bayes_optim/base.py +++ b/bayes_optim/base.py @@ -381,7 +381,7 @@ def create_DoE(self, n_point: int, fixed: Dict = None, initial_guess=False) -> L count = 0 if initial_guess and not self.initial_guess is None: - assert self.initial_guess.shape[1] == self.dim + assert self.initial_guess.shape[1] == self.dim or self.initial_guess.shape[0] == self.dim assert all([isinstance(_, float) for _ in self.initial_guess[:, self.r_index].ravel()]) assert all([isinstance(_, int) for _ in self.initial_guess[:, self.i_index].ravel()]) assert all([isinstance(_, str) for _ in self.initial_guess[:, self.d_index].ravel()]) From 37bbca34849ea68b4a3befa32448c39c86b40d91 Mon Sep 17 00:00:00 2001 From: zdanial <81705500+zdanial@users.noreply.github.com> Date: Wed, 23 Feb 2022 11:09:54 -0500 Subject: [PATCH 6/8] fix --- bayes_optim/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bayes_optim/base.py b/bayes_optim/base.py index 0893d56..1174757 100644 --- a/bayes_optim/base.py +++ b/bayes_optim/base.py @@ -381,7 +381,7 @@ def create_DoE(self, n_point: int, fixed: Dict = None, initial_guess=False) -> L count = 0 if initial_guess and not self.initial_guess is None: - assert self.initial_guess.shape[1] == self.dim or self.initial_guess.shape[0] == self.dim + assert self.initial_guess.shape[0] == self.dim or self.initial_guess.shape[1] == self.dim assert all([isinstance(_, float) for _ in self.initial_guess[:, self.r_index].ravel()]) assert all([isinstance(_, int) for _ in self.initial_guess[:, self.i_index].ravel()]) assert all([isinstance(_, str) for _ in self.initial_guess[:, self.d_index].ravel()]) From 58c7f86aac35fb9965ce2125edb9c5acc57686cf Mon Sep 17 00:00:00 2001 From: zdanial <81705500+zdanial@users.noreply.github.com> Date: Wed, 23 Feb 2022 11:21:45 -0500 Subject: [PATCH 7/8] comment out assertion --- bayes_optim/base.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bayes_optim/base.py b/bayes_optim/base.py index 1174757..3b22893 100644 --- a/bayes_optim/base.py +++ b/bayes_optim/base.py @@ -382,9 +382,9 @@ def create_DoE(self, n_point: int, fixed: Dict = None, initial_guess=False) -> L count = 0 if initial_guess and not self.initial_guess is None: assert self.initial_guess.shape[0] == self.dim or self.initial_guess.shape[1] == self.dim - assert all([isinstance(_, float) for _ in self.initial_guess[:, self.r_index].ravel()]) - assert all([isinstance(_, int) for _ in self.initial_guess[:, self.i_index].ravel()]) - assert all([isinstance(_, str) for _ in self.initial_guess[:, self.d_index].ravel()]) + # assert all([isinstance(_, float) for _ in self.initial_guess[:, self.r_index].ravel()]) + # assert all([isinstance(_, int) for _ in self.initial_guess[:, self.i_index].ravel()]) + # assert all([isinstance(_, str) for _ in self.initial_guess[:, self.d_index].ravel()]) DoE = [self.initial_guess] else: DoE = [] From 2bcc24fea9e6c613ea57f2aa7e30fdcf6d9857e6 Mon Sep 17 00:00:00 2001 From: zdanial <81705500+zdanial@users.noreply.github.com> Date: Wed, 23 Feb 2022 11:27:45 -0500 Subject: [PATCH 8/8] p --- bayes_optim/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bayes_optim/base.py b/bayes_optim/base.py index 3b22893..dd6ab99 100644 --- a/bayes_optim/base.py +++ b/bayes_optim/base.py @@ -381,7 +381,7 @@ def create_DoE(self, n_point: int, fixed: Dict = None, initial_guess=False) -> L count = 0 if initial_guess and not self.initial_guess is None: - assert self.initial_guess.shape[0] == self.dim or self.initial_guess.shape[1] == self.dim + # assert self.initial_guess.shape[0] == self.dim or self.initial_guess.shape[1] == self.dim # assert all([isinstance(_, float) for _ in self.initial_guess[:, self.r_index].ravel()]) # assert all([isinstance(_, int) for _ in self.initial_guess[:, self.i_index].ravel()]) # assert all([isinstance(_, str) for _ in self.initial_guess[:, self.d_index].ravel()])