我正在使用fmincon
对四个参数的凸问题进行处理,并提供自己的渐变。目标函数的格式为
[likelihood, gradients] = somefunction(input_to_be_optimized, additonal_inputs)
问题是,即使我手动将第四个渐变设置为零(在函数内部,例如gradients(4) = 0
),我看到fmincon
在每次迭代时更改第四个参数。这怎么可能?据我了解,如果渐变为零,则参数不应发生变化。
这些是我使用的选项:
optimoptions('fmincon','Hessian', ...
'bfgs','InitBarrierParam',1,...
'ScaleProblem','obj-and-constr',...
'GradObj','on','Algorithm','interior-point',...
'SubproblemAlgorithm','ldl-factorization',...
'Display', 'iter-detailed', 'Maxiter', 150, 'TolFun', 1e-8,...
'ObjectiveLimit', -1e20,'MaxFunEvals',1000000,...
'TolX',1e-8, 'OutputFcn', @outputFun);