-1

我想写一个函数( )通过迭代function_A优化另一个函数()的参数。function_B待优化参数的函数为:

 def function_B(a=10, b=12, c=14, d= 18):
    value = (...)
    return value

现在我想找到参数a, b,的组合c,这些组合d可以根据某些标准优化结果。所以我写了下面的函数——例如——用户可以指定优化哪个参数,在这种情况下,我们选择优化参数a

def function_A(variable = a, min = 10, max = 20):

    value = np.zeros((max - min + 1)) # initialize an empty vector to store results
    count = 0

    for i in np.linspace(1, 20, 20, endpoint=True):
        ans = function_B(variable = i)
        value[count] = ans
        count = count + 1

    return value

问题是,我不知道如何afunction_A. 我尝试使用:

function_A(variable = a, ...)

function_A(variable = 'a', ...)

但两者都不起作用......如何指定'a'我要迭代的参数?

4

1 回答 1

1

这是一个非常简化的示例:

def A(a=5, b=4):
    return a, b

def B(var):
    x = {var:'numberyouwant'}
    return A(**x)

因此,在您的情况下,将变量作为字符串传递并将其传递给字典,最后使用关键字变量使用您要优化的参数更新您的函数。

def function_A(variable = 'a', min = 10, max = 20):

    value = np.zeros((max - min + 1)) # initialize an empty vector to store results
    count = 0

    for i in np.linspace(1, 20, 20, endpoint=True):
        temp_dict = {variable: i}
        ans = function_B(**temp_dict)
        value[count] = ans
        count = count + 1

return value
于 2017-09-27T14:18:02.303 回答