Optimization gives only small changes in each step, Why and how to solve it?

1 回表示 (過去 30 日間)
Kun
Kun 2011 年 11 月 26 日
I am using Optimization toolbox optimset to solve for a vector (x1 x2 x3). In each step, the minimization yields a small change around the initial input. After the algorithm is finished running, the final output is still very close to the initial guess and far from the real solution whatever the initial guess is. Why does this happen? How can I resolve this problem?

採用された回答

Grzegorz Knor
Grzegorz Knor 2011 年 11 月 26 日
What is the objective function?
Maybe your starting points are located far from the minimum and the function is flat.
Please write more details.
Which function do you use to optimization?
  2 件のコメント
Kun
Kun 2011 年 11 月 26 日
Hi Grzegorz,
it is a very complicated function. We need to recover a function t(x). First of all, there is a second order ordinary differential equation for r1(x). This equation involves t(x).
And we have another sturm-Liouville equation (which has eigenvalues). This Sturm-Liouville problem involves both t(x) and r1(x). Now we know the eigenvalues of the sturm-Liouville problem and want to recover t(x).
I constructed a function which I can use to recover t(x) in a finite-element way as (t1, t2,t3), which is interpolated by cubic splines to approximate t(x). The function is like f(t1, t2, t3), which equals the summation of the square of difference of eigenvalue of the Sturm-Liouville problem calculated from (t1, t2, t3) and the given eigenvalue(known and fixed) for the Sturm-Liouville prblem. I emphasize that if for any (t1, t2, t3), we want to calculate the eigenvalues for the Sturm-Liouville problem, we have to use the same (t1, t2, t3) to calculate r1(x) first and input both the same (t1, t2, t3) and r1(x) we obtained into the sturm-liouville problem to calculate the eigenvalues.
By minimizing this function, I am trying to recover (t1, t2, t3)
I know this function is very complicated. Actually, If I use the real t(x) in the first ordinary equation, the minimization gives a very good approximation. However, if I don't fix t(x) in the ordinary equation and let the iteration goes into the ordinary equation, the result is like what I described in my previous question.
I am sorry for this long presentation. If you can analyze more, i will be so grateful. or if I didn't show it clearly, i can say more for that
Thanks.
Grzegorz Knor
Grzegorz Knor 2011 年 11 月 28 日
Indeed it sounds very complicated.
I suggest you to browse Global Optimization Toolbox User’s Guide:
http://www.mathworks.com/help/pdf_doc/gads/gads_tb.pdf
Perhaps it will help you to select the appropriate method for your problem.

サインインしてコメントする。

その他の回答 (1 件)

Michael
Michael 2011 年 11 月 28 日
Which MATLAB function are you using? Certain ones allow you to input parameters that relate to how far you anticipate the minimum may be from the starting point, (eg. lsqcurvefit using a LMF algorithm) and the default may be set too small for your particular parameter space.
  2 件のコメント
Walter Roberson
Walter Roberson 2011 年 11 月 28 日
Kun, Michael meant "Which MATLAB minimization function are you using?"
Walter Roberson
Walter Roberson 2011 年 11 月 30 日
Kun, the question is: are you using fzero(), fsolve(), fminbnd(), fgoalattain(), bintprog() or so on? Which minimizer routine are you calling to find the minimum of your function?
Please do not repeat that "it is a very complicated function" comment from above. We read that already, and it is not important at the moment. We want to know which routine in the Optimization Toolbox you are calling. You mentioned optimset earlier, but that is the name of the routine to construct an "options" structure to be used by the minimizer; we need to know which routine you are passing the optimset to.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeNonlinear Optimization についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by