'Constrviolation' 在 Matlab 的 fmincon 输出中的物理含义是什么?
What does 'Constrviolation' physically mean in Matlab's fmincon output?
我在 Matlab 中使用 fmincon 函数。当您 运行 函数并调用输出时,我一直在尝试弄清楚 'constrviolation' 的含义。当您得到不可行的解决方案或求解器过早结束时,您会得到一个非零(和非整数)的构造函数。
我放了一个屏幕截图以供参考。
我搜索了文档,它说它的意思是 "Maximum of constraint functions",但我不知道那是什么意思。它不是整数,所以我的第一个猜测是它是违反(或满足)约束的百分比。
如有任何帮助,我们将不胜感激。
只是解释给定 一些 优化背景的文档:
constrviolation
Maximum of constraint functions
这只是所有绝对约束函数误差的最大值
示例:
x0 + x1 = 1
x0 + x1 + x2 = 2
解决办法是:
x = [0.6, 0.5, 0.9]
构造违规是:
max( abs( 0.6 + 0.5 - 1 ), abs( 0.6 + 0.5 + 0.9 - 2 ) ) = max( 0.1, 0 ) = 0.1
这很糟糕,技术上意味着:您的解决方案不可行!(应该收敛到零;例如 1e-8)
由于求解器没有很好地结束,它无法为您提供有关问题的真实状态(可行与不可行)。
添加以下内容可能很有价值:内点算法(如此处使用的)可能(有些会,有些不会)迭代不可行的解决方案,最终只会收敛到一个可行的解决方案(如果存在)!
也不好:
firstorderopt
Measure of first-order optimality
也应该收敛到零(例如 1e-8)!在您的示例中未实现!
发生这种情况的原因有很多。由于您没有提供任何代码,我们只能猜测(并且不会对此感到高兴)。
您可能达到了一些迭代限制,例如 MaxFunctionEvaluations
或 MaxIterations
。 funcCount
和iterations
的比值看起来像数值微分,可以把函数调用的次数推得大大的!
我在 Matlab 中使用 fmincon 函数。当您 运行 函数并调用输出时,我一直在尝试弄清楚 'constrviolation' 的含义。当您得到不可行的解决方案或求解器过早结束时,您会得到一个非零(和非整数)的构造函数。
我放了一个屏幕截图以供参考。
我搜索了文档,它说它的意思是 "Maximum of constraint functions",但我不知道那是什么意思。它不是整数,所以我的第一个猜测是它是违反(或满足)约束的百分比。
如有任何帮助,我们将不胜感激。
只是解释给定 一些 优化背景的文档:
constrviolation
Maximum of constraint functions
这只是所有绝对约束函数误差的最大值
示例:
x0 + x1 = 1
x0 + x1 + x2 = 2
解决办法是:
x = [0.6, 0.5, 0.9]
构造违规是:
max( abs( 0.6 + 0.5 - 1 ), abs( 0.6 + 0.5 + 0.9 - 2 ) ) = max( 0.1, 0 ) = 0.1
这很糟糕,技术上意味着:您的解决方案不可行!(应该收敛到零;例如 1e-8)
由于求解器没有很好地结束,它无法为您提供有关问题的真实状态(可行与不可行)。
添加以下内容可能很有价值:内点算法(如此处使用的)可能(有些会,有些不会)迭代不可行的解决方案,最终只会收敛到一个可行的解决方案(如果存在)!
也不好:
firstorderopt
Measure of first-order optimality
也应该收敛到零(例如 1e-8)!在您的示例中未实现!
发生这种情况的原因有很多。由于您没有提供任何代码,我们只能猜测(并且不会对此感到高兴)。
您可能达到了一些迭代限制,例如 MaxFunctionEvaluations
或 MaxIterations
。 funcCount
和iterations
的比值看起来像数值微分,可以把函数调用的次数推得大大的!