scipy.optimize minus:目标函数中的两个输出变量?

nat*_*002 5 python optimization scipy scipy-optimize-minimize

我正在使用 scipyminimize函数来查找某些参数的最佳值,H并且Q. 我的目标函数kalman是根据变量 进行评估的log_likelihood。简而言之,我试图找到 的最佳值HQ最大化变量log_likelihood

为了做到这一点,scipy 的minimize函数要求这log_likelihood是 my function 的唯一输出kalman

H我的代码运行良好,我可以找到两个参数和的最佳值Q。然而,我想做的是使用最优值和值运行kalman最后一次(优化后) ,并返回另一个变量。HQkalmanA

我不能这样做,因为如果我设置

return log_likelihood, A
Run Code Online (Sandbox Code Playgroud)

在我的kalman函数中,该minimize函数不会运行,因为minimize只能处理目标函数的一个输出。

有什么想法吗?

这是我的代码:

import numpy as np
from scipy.optimize import minimize

def kalman(x0):

    #set parameters values
    H = x0[0]
    Q = x0[1]

    #Do some operations
    #use H and Q to compute value for variable log_likelihood
    #use H and Q to compute value for variable A
    #...

    return log_likelihood

#initial parameter values
x0 = np.array([np.log(1),np.log(1)])

#optimizing function    
res = minimize(kalman, x0, method='BFGS', options={'disp': True})

#get optimal parameter values
param_values = res.x

#run kalman function final time with optimal values
kalman(param_values)     
Run Code Online (Sandbox Code Playgroud)