You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
LLEPE/llepe/optimizers.py

40 lines
1.4 KiB

import scipy.optimize as scipy_opt
from scipy.optimize import minimize
# import skopt
def dual_anneal_optimizer(objective, x_guess):
bounds = [(1e-1, 1e1)] * len(x_guess)
bounds[1] = (1e-1, 2)
res = scipy_opt.dual_annealing(objective,
[(1e-1, 1e1)]*len(x_guess),
x0=x_guess)
est_parameters = res.x
return est_parameters, res.fun
def diff_evo_optimizer(objective, x_guess):
bounds = [(1e-1, 1e1)] * len(x_guess)
bounds[1] = (1e-1, 2)
res = scipy_opt.differential_evolution(objective,
bounds)
est_parameters = res.x
return est_parameters, res.fun
# def forest_lbfgsb_optimizer(objective, x_guess):
# x_guess = list(x_guess)
# bounds = [(1e-1, 1e1)]*len(x_guess)
# bounds[1] = (1e-1, 2)
# res = skopt.forest_minimize(objective,
# bounds,
# random_state=1,
# acq_func='LCB',
# n_random_starts=30,
# x0=x_guess,
# xi=1e-4)
# x_guess = res.x
# optimizer_kwargs = {"method": 'l-bfgs-b',
# "bounds": bounds}
# res = minimize(objective, x_guess, **optimizer_kwargs)
# return res.x, res.fun