Matlab fmincon:甚至在零梯度上更新变量

时间:2016-02-07 19:37:37

标签: matlab optimization

我正在使用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);

0 个答案:

没有答案