setup fmincon with nonlinear constraint condition

I am doing an optimisation job using fmincon with nonlinear constraint condition. I have tried several different input dataset, but always got message indicating local minimum possible. I then configured fmincon options with more stringent stopping criteria. Surely, the computation took longer time and output different result comparing with previous fmincon setup. However, it still suggests local minimum possible.
I've tried all three fmincon optimisation methods. It turns out they mostly output quite different results. And, the active-set method is pretty slow.
Question: 1. Any tip to setup fmincon in order to get more or less convergent results.
2. Any tip to speedup the computation? Actually my problem is not that high dimension (10), and input data is not that large (around 10k).
Thank you very much for your suggestions.
Mono

 Akzeptierte Antwort

Matt J
Matt J am 16 Jan. 2015
Bearbeitet: Matt J am 16 Jan. 2015

1 Stimme

A local minimum is what fmincon is looking for. The message means it thinks it succeeded.
If you don't like the solution it found, it is possible that you need a better initial guess. That's a matter of art, I'm afraid.

4 Kommentare

+1. Just to add to what Matt said, an optimizer looks for a minimum value. But fmincon is not a global solver. That is a difficult thing to do, because fmincon looks only at your function as a black box, and since your function may have any number of nasty things happening inside of it, fmincon can only search from where it starts.
Think of an optimization tool as starting a person on the surface of the earth, and hoping they can find the location of the lowest point on the surface of the earth. If you allow the person to only search by walking around on that surface, it is likely they will end up in some locally low spot, but not in the bottom of some deep ocean trench. And it is very unlikely they will find the deepest ocean trench unless you start them in a good spot.
One option to TRY to find a better solution is to start the solver in many different (random) spots, hoping that ONE of them might converge to the global optimum. With very many start points the probability of converging to the global solution will approach 1, but that may take a lot of work and you were already complaining about the speed of one of the solvers.
Good starting values are an imperative when you have bad problems.
mono
mono am 16 Jan. 2015
Thanks Matt. I should have guessed fmincon cannot guarantee a global minimum. What I can try now is to do several computations with different initial guess and choose the one with minimum residual. Thanks a lot.
Matt J
Matt J am 16 Jan. 2015
If you post a more detailed description of the problem, the community may also be able to recommend strategies for generating the initial guess. These strategies are always problem-specific, e.g., by approximating your true problem with something simpler and solving that, but maybe some custom advice can be given.
mono
mono am 16 Jan. 2015
Thanks John. I will do that. But I am not really optimistic. Since I am doing synthetic test at the moment that I do know the correct answer. It enables me to set the initial as the perfect result. Unfortunately fmincon does not always converges to the one I want. One reason could be the stochastic uncertainty term I add in my model. Surely, if the uncertainty is too large and the dataset is not relatively large enough, it would be difficult to find the close result. Your suggestion just inspires me to do some research on the connection between the dataset size and uncertainty jump. Thanks John.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Aerospace Applications finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

am 16 Jan. 2015

Kommentiert:

am 16 Jan. 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by