fmincon for bounded optimization problem
古いコメントを表示
Hello,
I am trying to solve a nonlinear optimization problem using fmincon interior point method. Originally my problem formulation does not have bounds on the decision variable, and when i try to run it without the bounds then it takes infintie time and when I run it with bounds then it is much faster. Following are my questions:
1) Why bounds are making the algorithm faster?
2) The final optimal result for the problem is nowhere near the bound, but my lagrange multiplier for the bounds is coming to be non zero, arent they supposed to be zero if the solution is not hitting the bounds?
3) How is the first order optimality criteria defined for interior point method? I saw the documentation but it is not clear to me, is the infinite norm of the grad or some other equation?
I am giving very good initial guess (exact true values) to my problem to make sure it is near the optimal. When I do that, the optimizer is just giving me the intial guess as my final solution which is not possible as I am feeding noisy data to my problem.
Thanks in advance
7 件のコメント
John D'Errico
2021 年 1 月 16 日
編集済み: John D'Errico
2021 年 1 月 16 日
Whenever I see somone say the solver returns the original point, I want to ask if you are sure your objective is well posed. Is it differentiable? Even if it is theoretically differentiable, are there numerical problems when working in double precision arithmetic? (You would be amazed at what we sometimes do see.) What exitflag is returned? That you see something strange in the return parameters in terms of Lagrange multipliers may be explained by the optimizer crapping out from some problem with the objective, giving up before it even makes an serious effort. So knowing the exitflag is important.
Since we don't see your objective we cannot know what is happening. That means all we can do is offer broad comments.
Walter Roberson
2021 年 1 月 16 日
We would need all your code to test.
I notice you are using inv() . If you do not have reason to suspect that Qdk might be singular, then use
wkmhe(:,i)'/Qdk*wkmhe(:,i)
If you do have reason to suspect that Qdk might be singular, then use pinv() instead of inv()
Devyani
2021 年 1 月 16 日
Devyani
2021 年 1 月 17 日
Walter Roberson
2021 年 1 月 17 日
I had to uninstall MATLAB temporarily because of operating system limitations (not related to MATLAB itself.) It may take me a bit of time to recover.
Devyani
2021 年 1 月 18 日
回答 (1 件)
Walter Roberson
2021 年 1 月 16 日
Generally speaking, functions without bounds can take indefinite time to minimize if the function has an asymptope
| |
___/ --v-+
where the v marks the minimum. But if the function happens to land on the shoulder to the left then the local gradient slopes away from the center and the minimizer can take indefinite time exploring that left slope.
fmincon is a local optimizer: there is no way for it to know that it should spend time climbing the hill to the center to get to a better opportunity. And not every such hill happens to lead to a global minimum. Furthermore, the global minimum can be an indefinitely small part of the graph -- imagine putting something heavy on a section of stiff rubber that has a very elastic center, then unless you were quite close to the indentation you would get no information that it existed.
3 件のコメント
Devyani
2021 年 1 月 16 日
Walter Roberson
2021 年 1 月 16 日
Sorry, I am not familiar with the theory about the lagrange multipliers. (I read it once, but did not retain it in memory.)
Devyani
2021 年 1 月 16 日
カテゴリ
ヘルプ センター および File Exchange で Choose a Solver についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!