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

2 views (last 30 days)
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?

Accepted Answer

Grzegorz Knor
Grzegorz Knor on 26 Nov 2011
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 Comments
Kun
Kun on 26 Nov 2011
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 on 28 Nov 2011
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.

Sign in to comment.

More Answers (1)

Michael
Michael on 28 Nov 2011
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 Comments
Walter Roberson
Walter Roberson on 30 Nov 2011
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.

Sign in to comment.

Categories

Find more on Sparse Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!