【发布时间】:2021-06-17 02:02:23
【问题描述】:
我正在尝试使用 multistart / fmincon 找到最佳点。 Matlab 找到一个局部最小值,在输出结构中给出以下消息:
Local minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in feasible directions,
to within the value of the optimality tolerance,and constraints are satisfied to within the value of the
constraint tolerance.<stopping criteria details>
Optimization completed: The relative first-order optimality measure, 7.337955e-07,
is less than options.OptimalityTolerance = 1.000000e-06, and the relative maximum constraintviolation, 7.082693e-07, is less than options.ConstraintTolerance = 1.000000e-06.
我有 13 个非线性约束,其中一个被违反了。
这是约束:
c(10) = abs(L_1 - (L_2 - L_3)) - 0.001;
我想实现:
abs(L_1 - (L_2 - L_3)) <= 0.001;
如果我手动检查这个约束,我会得到
abs(L_1 - (L_2 - L_3)) = 0.0011;
大于期望值 0.001 optimoptions 中的约束容差默认设置为 1e-6。 这怎么可能发生?输出清楚地表明,所有的约束都得到了满足,但实际上并没有。
【问题讨论】:
标签: matlab