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