我试图在MATLAB中使用fmincon找到最小值,我面临以下问题:
优化已完成,因为初始点处的渐变大小小于函数容差的默认值 .
我的目标函数的表面显示“步骤”,因此它在某些输入变量范围内具有相同的值(如果我是正确的话,渐变的大小为零):
从初始点开始移动时,求解器看不到目标函数值的任何变化,并完成优化:
Iteration Func-count f(x) Step-size optimality
0 3 581.542 0
Initial point is a local minimum.
Optimization completed because the size of the gradient at the initial point
is less than the default value of the function tolerance.
当目标函数保持其值不变(直到目标函数开始增加)时,有没有办法让求解器向前移动?
谢谢你的帮助 .
2 回答
我发布我的扩展评论作为答案,希望未来的答案寻求者更容易找到解决方案:
使用非基于梯度的求解器,例如,你可能得到合理的结果 . ga,如果目标函数的评估成本不高 . 这些不依赖于梯度并且在非平滑函数上表现良好 . 在选择求解器算法之前,还应阅读以下指南:How to choose solver .
答案就在那里:
Initial point is a local minimum
.您作为 initial point 给出的观点已经是 local minimum . 因此算法找到最小值并坚持下去 . 为了找到其他 local minimum 或者 global ,请将初始点更改为远离 local minimum 的其他内容 . 为了找到 global minimum 使用全局优化技术 .