我正在使用 Matlab 的 fmincon 来解决目标函数中不同参数集的约束非线性优化。我有 2 个参数,并且有 400 个这 2 个参数的独特组合。在特定的参数组合中,我使用了一系列起点(100 个起点)。尝试使用优化工具箱对多启动功能进行粗略模拟。
对于目标函数中给定的参数组合,大多数起点将解决优化问题并以正退出标志(如 1)退出,在某些情况下为 2。但对于极少数情况,程序将以退出标志结束-3 对应于当前迭代中的目标函数低于 options.ObjectiveLimit 并且最大约束违规小于 options.TolCon。. 在这种情况下,输出消息中提到的问题可能是无限的。下面是一条示例消息
问题似乎无界。
fmincon 停止,因为目标函数值小于目标函数限制的默认值,并且约束满足在约束容差的默认值范围内。
停止条件详细信息:
fmincon 停止,因为目标函数值 -5.374294e+40 小于 options.ObjectiveLimit = -1.000000e+20,并且相对最大约束违规 0.000000e+00 小于 options.TolCon = 1.000000e-06 .
优化指标选项目标值 = -5.37e+40 ObjectiveLimit = -1e+20(默认)相对最大值(违反约束)= 0.00e+00 TolCon = 1e-06(默认)
以下是我的问题:-
a)如果问题能够在特定的参数组合中找到某些起点(如 exitflag 1 所示)的局部最小值,为什么很少有其他起点提到问题“无界”(exitflag -3)。
b) 当exitflag为-3时,fmincon返回的目标函数值与fmincon返回的x点处函数值的显式计算不匹配。当前点和函数值上的 Matlab 链接提到“函数值是当前点目标函数的值”。它没有说明对退出标志的限制。另一方面,输出参数为 x 声明了这一点“优化函数找到的解决方案。如果 exitflag > 0,则 x 是一个解决方案;否则,x 是优化例程过早终止时的值。” 可能暗示如果 exitflag 为负,则函数值不是当前点目标函数的值。我不确定这是不一致的文档还是我的错误解释?
最后,将提请注意声明退出标志不是解决方案质量的可靠指南。许多其他因素(例如公差设置)会影响解决方案是否令您满意。您有责任决定求解器是否返回令人满意的答案。有时,否定退出标志并不对应于“坏”解决方案。类似地,有时一个积极的退出标志并不对应于一个“好”的解决方案。. 我可以理解 +ve exitflags 不一定在所有情况下都很好,但是为什么负的 exitflag 不一定意味着“坏”的解决方案?