Skip to content

Commit d3b9677

Browse files
committed
Fix imports that were not valid for GPy
1 parent dac0a3e commit d3b9677

File tree

4 files changed

+102
-101
lines changed

4 files changed

+102
-101
lines changed

docs/source/changelogs.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Changelogs
22
==============
33

4-
[2.0.1] - 2023-11-06
4+
[2.0.2] - 2023-11-06
55
--------------------
66
GADMA was updated and tested on Python3.10 with the latest versions of dependencies.
77

gadma/optimizers/__init__.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@
88
from .global_optimizer import register_global_optimizer, get_global_optimizer # NOQA
99
from .global_optimizer import all_global_optimizers, GlobalOptimizer # NOQA
1010
from .genetic_algorithm import GeneticAlgorithm # NOQA
11-
from .bayesian_optimization import GPyOptBayesianOptimizer # NOQA
11+
# from .bayesian_optimization import GPyOptBayesianOptimizer # NOQA
1212
from .bayesian_optimization import SMACBayesianOptimizer, SMACSquirrelOptimizer # NOQA
1313
from .combinations import GlobalOptimizerAndLocalOptimizer # NOQA
1414
from .linear_constrain import LinearConstrain # NOQA
1515
from .optimizer_result import OptimizerResult # NOQA
1616
from .gaussian_process import GaussianProcess # NOQA
17-
from .gaussian_process import GPyGaussianProcess, SMACGaussianProcess # NOQA
17+
# from .gaussian_process import GPyGaussianProcess
18+
from .gaussian_process import SMACGaussianProcess # NOQA

gadma/optimizers/gaussian_process.py

+52-52
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
# import numpy as np
2-
# import copy
3-
#
4-
#
5-
# class GaussianProcess(object):
6-
# """
7-
# Base class to keep Gaussian process for Bayesian optimization.
8-
# """
9-
# def __init__(self, gp_model):
10-
# self.gp_model = gp_model
11-
#
12-
# def train(self, X, Y, optimize=True):
13-
# raise NotImplementedError
14-
#
15-
# def get_noise(self):
16-
# raise NotImplementedError
17-
#
18-
# def predict(self, X):
19-
# raise NotImplementedError
20-
#
21-
# def get_K(self):
22-
# raise NotImplementedError
23-
#
24-
# def get_hypers(self):
25-
# raise NotImplementedError
26-
#
27-
#
1+
import numpy as np
2+
import copy
3+
4+
5+
class GaussianProcess(object):
6+
"""
7+
Base class to keep Gaussian process for Bayesian optimization.
8+
"""
9+
def __init__(self, gp_model):
10+
self.gp_model = gp_model
11+
12+
def train(self, X, Y, optimize=True):
13+
raise NotImplementedError
14+
15+
def get_noise(self):
16+
raise NotImplementedError
17+
18+
def predict(self, X):
19+
raise NotImplementedError
20+
21+
def get_K(self):
22+
raise NotImplementedError
23+
24+
def get_hypers(self):
25+
raise NotImplementedError
26+
27+
2828
# class GPyGaussianProcess(GaussianProcess):
2929
# def _convert(self, X, Y=None):
3030
# X = np.array(X, dtype=float)
@@ -58,28 +58,28 @@
5858
# theta.extend(self.gp_model.model.kern.lengthscale)
5959
# theta.append(self.get_noise())
6060
# return theta
61-
#
62-
#
63-
# class SMACGaussianProcess(GaussianProcess):
64-
# def __init__(self, gp_model):
65-
# super(SMACGaussianProcess, self).__init__(gp_model=gp_model)
66-
# self.gp_model.normalize_y = True
67-
#
68-
# def train(self, X, Y, optimize=True):
69-
# self.gp_model._train(X, Y, do_optimize=optimize)
70-
#
71-
# def get_noise(self):
72-
# return 0
73-
#
74-
# def predict(self, X):
75-
# mu, var = self.gp_model.predict_marginalized_over_instances(
76-
# np.array(X)
77-
# )
78-
# sigma = np.sqrt(var)
79-
# return mu.reshape(mu.shape[0]), sigma.reshape(sigma.shape[0])
80-
#
81-
# def get_K(self):
82-
# return self.gp_model.kernel(self.gp_model.gp.X_train_)
83-
#
84-
# def get_hypers(self):
85-
# return np.exp(self.gp_model.hypers)
61+
62+
63+
class SMACGaussianProcess(GaussianProcess):
64+
def __init__(self, gp_model):
65+
super(SMACGaussianProcess, self).__init__(gp_model=gp_model)
66+
self.gp_model.normalize_y = True
67+
68+
def train(self, X, Y, optimize=True):
69+
self.gp_model._train(X, Y, do_optimize=optimize)
70+
71+
def get_noise(self):
72+
return 0
73+
74+
def predict(self, X):
75+
mu, var = self.gp_model.predict_marginalized_over_instances(
76+
np.array(X)
77+
)
78+
sigma = np.sqrt(var)
79+
return mu.reshape(mu.shape[0]), sigma.reshape(sigma.shape[0])
80+
81+
def get_K(self):
82+
return self.gp_model.kernel(self.gp_model.gp.X_train_)
83+
84+
def get_hypers(self):
85+
return np.exp(self.gp_model.hypers)

gadma/optimizers/optimizer_result.py

+46-46
Original file line numberDiff line numberDiff line change
@@ -83,52 +83,52 @@ def from_SciPy_OptimizeResult(
8383
X_out=[scipy_result.x],
8484
Y_out=[scipy_result.fun])
8585

86-
@staticmethod
87-
def from_GPyOpt_OptimizerResult(gpyopt_obj):
88-
"""
89-
Create OptimizerResult from instance of bayesian optimization.
90-
91-
:param gpyopt_obj: Object of GPyOpt optimizer
92-
:type gpyopt_obj: GPyOpt.methods.BayesianOptimization
93-
"""
94-
gpyopt_obj._compute_results()
95-
if (gpyopt_obj.num_acquisitions == gpyopt_obj.max_iter and
96-
not gpyopt_obj.initial_iter):
97-
message = ' ** Maximum number of iterations reached **'
98-
success = True
99-
status = 1
100-
elif (gpyopt_obj._distance_last_evaluations() < gpyopt_obj.eps and
101-
not gpyopt_obj.initial_iter):
102-
message = ' ** Two equal location selected **'
103-
success = True
104-
status = 1
105-
elif (gpyopt_obj.max_time < gpyopt_obj.cum_time and
106-
not gpyopt_obj.initial_iter):
107-
message = ' ** Evaluation time reached **'
108-
success = True
109-
status = 0
110-
else:
111-
message = '** GPyOpt Bayesian Optimization class initialized '\
112-
'successfully **'
113-
success = False
114-
status = 2
115-
116-
if hasattr(gpyopt_obj.f, 'cache_info'):
117-
n_eval = gpyopt_obj.f.cache_info.misses
118-
else:
119-
n_eval = len(gpyopt_obj.Y)
120-
121-
return OptimizerResult(x=gpyopt_obj.x_opt,
122-
y=gpyopt_obj.fx_opt,
123-
success=success,
124-
status=status,
125-
message=message,
126-
X=gpyopt_obj.X,
127-
Y=gpyopt_obj.Y,
128-
n_eval=n_eval,
129-
n_iter=gpyopt_obj.num_acquisitions,
130-
X_out=gpyopt_obj.X,
131-
Y_out=gpyopt_obj.Y)
86+
# @staticmethod
87+
# def from_GPyOpt_OptimizerResult(gpyopt_obj):
88+
# """
89+
# Create OptimizerResult from instance of bayesian optimization.
90+
#
91+
# :param gpyopt_obj: Object of GPyOpt optimizer
92+
# :type gpyopt_obj: GPyOpt.methods.BayesianOptimization
93+
# """
94+
# gpyopt_obj._compute_results()
95+
# if (gpyopt_obj.num_acquisitions == gpyopt_obj.max_iter and
96+
# not gpyopt_obj.initial_iter):
97+
# message = ' ** Maximum number of iterations reached **'
98+
# success = True
99+
# status = 1
100+
# elif (gpyopt_obj._distance_last_evaluations() < gpyopt_obj.eps and
101+
# not gpyopt_obj.initial_iter):
102+
# message = ' ** Two equal location selected **'
103+
# success = True
104+
# status = 1
105+
# elif (gpyopt_obj.max_time < gpyopt_obj.cum_time and
106+
# not gpyopt_obj.initial_iter):
107+
# message = ' ** Evaluation time reached **'
108+
# success = True
109+
# status = 0
110+
# else:
111+
# message = '** GPyOpt Bayesian Optimization class initialized '\
112+
# 'successfully **'
113+
# success = False
114+
# status = 2
115+
#
116+
# if hasattr(gpyopt_obj.f, 'cache_info'):
117+
# n_eval = gpyopt_obj.f.cache_info.misses
118+
# else:
119+
# n_eval = len(gpyopt_obj.Y)
120+
#
121+
# return OptimizerResult(x=gpyopt_obj.x_opt,
122+
# y=gpyopt_obj.fx_opt,
123+
# success=success,
124+
# status=status,
125+
# message=message,
126+
# X=gpyopt_obj.X,
127+
# Y=gpyopt_obj.Y,
128+
# n_eval=n_eval,
129+
# n_iter=gpyopt_obj.num_acquisitions,
130+
# X_out=gpyopt_obj.X,
131+
# Y_out=gpyopt_obj.Y)
132132

133133
def __repr__(self):
134134
string = f" status: {self.status}\n"\

0 commit comments

Comments
 (0)