问题描述
假设我的函数有输入“A”和“B”,输出“C”。对于 A 的每个值,我想找出 B 的哪个值导致 C 的最大值;然后我想记录值 B 和 C。是否有可以执行此操作的函数?也许取决于收敛机制?
*如果您是通过我应用的非 python 相关标签之一发现的,请注意我使用的是 python 3.x
解决方法
让我们定义函数 以获取参数 (A,B)
并返回值 C
。我们可以用 Python 来优化它
from scipy import optimize
f = lambda a,b: ... # your_code_which_returns_C
optimal_vals = np.zeros((2,len(list_of_all_A_values)))
for i,a in enumerate(list_of_all_A_values) # assuming some list is defined above
b_opt,c_opt,*rest = optimize.fmin(lambda b: -f(a,b),0)
optimal_vals[:,i] = np.array([b_opt,c_opt])
这利用了 scipy 的 fmin
函数,该函数依赖于 downhill 单纯形算法的收敛性。因此,请务必不要忘记 上的减号。