我想编写一个函数(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
问题是,我不知道如何在a
中指定function_A
。我试着用:
function_A(variable = a, ...)
function_A(variable = 'a', ...)
但不起作用......如何指定'a'
是我想要迭代的参数?
答案 0 :(得分:1)
这是一个非常简单的例子:
def A(a=5, b=4):
return a, b
def B(var):
x = {var:'numberyouwant'}
return A(**x)
因此,在您的情况下,将变量作为字符串传递并将其传递给dictonary,最后使用keyworded变量将您的函数更新为要优化的参数。
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