user defined hessian in fminunc
Show older comments
I need to use a specific hessian [HB] in optimization using fminunc. I understand that this can possibly done by specific option: ''If set to 'objective', fminunc uses a user-defined Hessian for the objective function. The Hessian is the third output of the objective function (see fun). For optimset, the name is HessFcn. ''
What confuses me is how to call the specific hessian I'd like to use.
My objective function is:
function [f,g,HB]=lik_lambdaCUEB(y,x,z,alpha,beta)
vy=y-z*(z\y);
vx=x-z*(z\x);
e=z.*((y-x*beta)*ones(1,length(z(1,:))));
eB=z.*((vy-vx*beta)*ones(1,length(z(1,:))));
w=1+(e*alpha)+(1/2)*(alpha'*(e'*e)*alpha);
wB=1+(e*alpha)+(1/2)*(alpha'*(eB'*eB)*alpha);
f=-sum(1./w);
if nargout > 1
g = sum((alpha'*z')'.*(y-x*beta)); %not sure about the modification for CUE, check
%H = (-w.*z*(y-x*beta).^2);
HB=(z'*(vy-vx*beta)*(vy-vx*beta)'*z);
end
Which I am calling as below to optimize:
options = optimset('MaxFunEvals',1000,'TolFun',1.0000e-010,'TolX',1.0000e-020,'MaxIter',1000,'FunValCheck', 'on','HessFcn','objective');
[alpha]=fminunc(@(alpha)lik_lambdaCUEB(y,x,z,alpha,beta),(0*ones(kz,1)),options);
I am not sure where can I specify the hessian HB? How can I do this?
Accepted Answer
More Answers (0)
Categories
Find more on Solver Outputs and Iterative Display in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!