Source code for skscope.numeric_solver

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author: Zezhi Wang
# Copyright (C) 2023 abess-team
# Licensed under the MIT License.

import numpy as np
import math
from scipy.optimize import minimize


[docs] def convex_solver_BFGS( objective_func, value_and_grad, init_params, optim_variable_set, data, ): def fun(x): init_params[optim_variable_set] = x return objective_func(init_params, data) def jac(x): init_params[optim_variable_set] = x _, grad = value_and_grad(init_params, data) return grad[optim_variable_set] res = minimize(fun, init_params[optim_variable_set], method="BFGS", jac=jac) init_params[optim_variable_set] = res.x return res.fun, init_params
[docs] def convex_solver_LBFGS( objective_func, value_and_grad, init_params, optim_variable_set, data, ): def fun(x): init_params[optim_variable_set] = x return objective_func(init_params, data) def jac(x): init_params[optim_variable_set] = x _, grad = value_and_grad(init_params, data) return np.array(grad[optim_variable_set], np.float64) res = minimize(fun, init_params[optim_variable_set], method="L-BFGS-B", jac=jac) init_params[optim_variable_set] = res.x return res.fun, init_params