【问题标题】:What does 'Constrviolation' physically mean in Matlab's fmincon output?Matlab 的 fmincon 输出中的“Constrviolation”在物理上意味着什么?
【发布时间】:2017-10-31 22:03:37
【问题描述】:

我在 Matlab 中使用 fmincon 函数。当你运行函数并调用输出时,我一直试图弄清楚“constrviolation”是什么意思。当您获得不可行的解决方案或求解器过早结束时,您会得到一个非零(和非整数)的约束。

我放了一个屏幕截图以供参考。

我搜索了文档,它说它的意思是“最大约束函数”,我不知道这是什么意思。它不是一个整数,所以我的第一个猜测是它是违反(或满足)约束的百分比。

任何帮助将不胜感激。

【问题讨论】:

    标签: matlab optimization constraints nonlinear-optimization


    【解决方案1】:

    只是解释给出的文档一些优化背景:

    违规

    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)

    由于求解器没有非常优雅地结束,它无法为您提供有关问题的真实状态(可行与不可行)。

    补充一点可能很有价值:内点算法(如这里使用的)可能(有些会,有些不会)迭代不可行的解决方案,最后才收敛到可行的解决方案(如果存在)!

    也不好

    一阶选择

     Measure of first-order optimality
    

    也应该收敛到零(例如 1e-8)!在您的示例中未实现!

    现在发生这种情况有很多可能的原因。由于您没有提供任何代码,我们只能猜测(并且不会对此感到高兴)。

    您可能会遇到一些迭代限制,例如 MaxFunctionEvaluationsMaxIterationsfuncCountiterations 的比值看起来像数值微分,可以大大推动函数调用的数量!

    【讨论】:

    • 是同时考虑线性(Aeq、beq、A、b、ub、lb)和非线性(c、ceq)约束还是只考虑一个约束?
    • 因为这是唯一的输出,我认为没有理由查看子集。但我也只看文档!期望它检查所有约束(如果您正确设置了 opt-problem)。 检查一下。把你的次优 x 输入到你的约束中(不要问怎么做;我不是一个 matlab 人)!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2023-03-10
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多