python - 具有自由和固定参数的函数的 Scipy basin hopping 最小化

标签 python scipy mathematical-optimization

我有一个函数,输入一个自由参数元组和一个固定参数元组,输出一个标量值。运行起来很昂贵,我想在不了解任何梯度/Hessians 的情况下找到这个函数的最小值。为此,我决定使用 Basin hopping 方法,作为最小化函数 COBYLA,因为在使用廉价函数的测试运行中,它使用最少的函数调用并且能够使用边界。

但是,我不知道如何告诉 Basin hopping 方法哪些参数可以自由优化,哪些参数是固定的。

def func(x_free, x_fixed):
    '''Do some expensive stuff here'''
    global FUNC_CALLS
    FUNC_CALLS += 1
    return scalar_value

在文档中,我读到我可以使用字典 minimizer_kwargs 将参数传递给这个函数。但是,它没有解释我应该为此使用哪些关键字。谁能帮我列出 minimizer_kwargs 允许的关键字,以及它们的作用?

没有参数 x_fixed,我的代码如下所示:

from scipy.optimize._basinhopping import basinhopping
global FUNC_CALLS
FUNC_CALLS = 0
x0 = (1.0, 0.0, 0.0)
minimizer_kwargs = {"method": "COBYLA"}
ret = basinhopping(func, x0, minimizer_kwargs=minimizer_kwargs, niter=10)
print("Global minimum: x = [%.4f, %.4f, %.4f], f(x0) = %.4f" % (ret.x[0], ret.x[1], ret.x[2], ret.fun))
print("Number of function calls: {0}".format(FUNC_CALLS))

简而言之:我应该怎么做才能将 x_fixed 插入到函数中?

最佳答案

根据 basinhopping 的文档字符串,将 args 键添加到 minimizer_kwargs,值为 (x_fixed,)

例如:

minimizer_kwargs = {"method": "COBYLA", "args": (x_fixed,)}

关于python - 具有自由和固定参数的函数的 Scipy basin hopping 最小化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25448296/

相关文章:

python - 尝试找到所有满足 f(x,y) = 0 且 g(x,y) = 0 的有序对 (x,y);即,我试图找到多变量函数的根

python - 使用蒙特卡洛查找 PI 数字

python - 向 broyden1 传递额外参数

python - 是否有一个 python 模块可以将值和错误转换为科学记数法?

python - 使用已知函数 numpy 进行曲线拟合

python - 当 scipy.optimize.minimize 可能用于相同的事情时,为什么 scipy.optimize.least_squares 存在?

python - pandas 中类似 SQL 的语句?

python - Selenium 获取下一个 tr 给定条件适用于前一个 tr

python通过递归函数获取所有子集

python - Matplotlib 不显示数字