我正在使用Matlab中的fmincon函数。当您运行函数并调用输出时,我一直在试图弄清楚‘constr违犯’是什么意思。当你过早地得到不可行的解或解结束时,你就会得到一个非零(&非整数)的解析式。
我放了一张屏幕快照作为参考。
我已经搜索了文档,它的意思是“约束函数的最大值”,我不知道这意味着什么。它不是整数,所以我的第一个猜测是,它是违反(或满足)约束的百分比。
任何帮助都将不胜感激。
发布于 2017-10-31 11:36:36
只是对文档进行了一些优化-背景:
违犯 约束函数最大值
这只是所有绝对约束函数错误的最大值。
示例:
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)
由于解决者没有很好地结束,它不能给你一个关于问题的真实状态(可行与不可行)。
添加:内点算法(如这里使用的)可能(有些算法可以,有些不可行)迭代不可行的解决方案,并最终收敛到可行的解决方案(如果存在的话)。
也是坏
冷藏品 一阶最优性测度
也应该收敛到零(例如,1e-8)!在你的例子中没有实现!
现在,出现这种情况的原因有很多。由于您没有提供任何代码,我们只能猜测(而且不会对此感到高兴)。
您可能遇到了一些迭代限制,比如MaxFunctionEvaluations
或MaxIterations
。funcCount
和iterations
的比率看起来像数值微分,它可以推多调用函数的数量!
https://stackoverflow.com/questions/47023386
复制相似问题