At every second step fmincon stays on the same point but should continue.
18 次查看(过去 30 天)
显示 更早的评论
For some reason fmincon always does one decent step away from its initial point, but then stays on the point of the first iteration and exits optimization due to StepTolerance. In the output below I enter the finishing point of the previous call to fmincon as the starting point to the next call. I tried to decrease StepTolerance. However then fmincon runs indefinitely and does not stop when it actually found the (supposed) optimum.
- How can I prevent this behaviour?
- What could be peculiar about the objective function?
Thank you very much for your time.
Iter F-count f(x) Feasibility optimality step
0 13 1.097369e+04 0.000e+00 2.161e+02
1 35 1.096956e+04 0.000e+00 2.161e+02 1.053e-01
2 49 1.096956e+04 0.000e+00 2.161e+02 2.279e-15
Optimization stopped because the relative changes in all elements of x are
less than options.StepTolerance = 1.000000e-10, and the relative maximum constraint
violation, 0.000000e+00, is less than options.ConstraintTolerance = 1.000000e-06.
Optimization Metric Options
max(abs(delta_x./x)) = 5.82e-16 StepTolerance = 1e-10 (default)
relative max(constraint violation) = 0.00e+00 ConstraintTolerance = 1e-06 (default)
First-order Norm of
Iter F-count f(x) Feasibility optimality step
0 13 1.096956e+04 0.000e+00 2.161e+02
1 35 1.096591e+04 0.000e+00 2.154e+02 1.056e-01
2 49 1.096591e+04 0.000e+00 2.154e+02 2.565e-15
Optimization stopped because the relative changes in all elements of x are
less than options.StepTolerance = 1.000000e-10, and the relative maximum constraint
violation, 0.000000e+00, is less than options.ConstraintTolerance = 1.000000e-06.
Optimization Metric Options
max(abs(delta_x./x)) = 6.48e-16 StepTolerance = 1e-10 (default)
relative max(constraint violation) = 0.00e+00 ConstraintTolerance = 1e-06 (default)
First-order Norm of
Iter F-count f(x) Feasibility optimality step
0 13 1.096591e+04 0.000e+00 2.154e+02
1 35 1.096221e+04 0.000e+00 2.154e+02 1.057e-01
2 49 1.096221e+04 0.000e+00 2.154e+02 2.675e-15
Optimization stopped because the relative changes in all elements of x are
less than options.StepTolerance = 1.000000e-10, and the relative maximum constraint
violation, 0.000000e+00, is less than options.ConstraintTolerance = 1.000000e-06.
Optimization Metric Options
max(abs(delta_x./x)) = 6.67e-16 StepTolerance = 1e-10 (default)
relative max(constraint violation) = 0.00e+00 ConstraintTolerance = 1e-06 (default)
0 个评论
回答(1 个)
Adam Danz
2018-8-24
It looks like the algorithm settled quickly at a local minima. This isn't necessarily a bad thing - you just want to make sure it's the global minima. One thing you can do is set your StepTolerance (see link) but I have a feeling that won't change much.
Another idea is to set up a loop that will try many different initial point guesses and if it always settles at the same minima, congrats!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Nonlinear Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!