I am using the scipy minimize function to find the optimal value of some parameters, H and Q. My objective function, kalman, is evaluated on the variable log_likelihood. In a nutshell, I am trying to find the optimal values of H and Q that maximize the variable log_likelihood.
In order to do this, scipy's minimize function requires that log_likelihood be the sole output of my function kalman.
My code runs fine and I can find the optimal values of my two parameters H and Q. What I would like to do, however, is run kalman a final time (after optimization) using the optimal H and Q values and have kalman return another variable, A, back.
I can't do this because if I set
return log_likelihood, A
in my kalman function, the minimize function won't run, because minimize can only handle one output from the objective function.
Any thoughts?
Here is my code:
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)