I am trying to execute the following optimization.
res = optimize( Optim.only_fg!((F, G, Az)->fg!(F,G,first(Az),x,z)), [100000.0],[500000.0],[400000.0],Fminbox(GradientDescent()),Optim.Options(iterations=10,show_trace=true,f_tol=1e-7,extended_trace=true,g_tol=1e-8))
where I have defined
function fg!(F,G,Az,xVal,zVal) # common computations not done in this example if G != nothing G .= dX3dAz(Az,xVal,zVal) end if F != nothing return X3(Az,xVal,zVal) end end
When I look at the trace printout, the three columns are:
Iter Function value Gradient norm. The value printed out for “Function value” does not match what I would expect for my function
X3. Could someone explain what exactly the “Function value” is being calculated from? Is it a weighting from the function and gradient? Is this discussed in the documentation anywhere? I wasn’t able to find anything.
Also, I know I haven’t included the functions
dX3dAz as they very long, complicated expressions. However, I hope my question can be answered regardless. Thank you.