simulannealbnd for curve fitting

3 views (last 30 days)
Hasan
Hasan on 27 May 2014
Answered: Alan Weiss on 27 May 2014
Hi everyone,
I am trying to use simulated annealing for a 10 parameter optimization problem I am trying to solve. I am trying to fit a 10 parameter function to multiple data points spread over time. I have tried using non-linear squares fitting (with multistart) but kept being stuck at local minima. Simulated annealing can be a good alternative.
The problem is the objective function simulannealbnd requires seems to be different that what lsqcurvefit requires. simulannealbnd needs the objective function to give a scalar ouput, which I am not sure what it means for my function over time.
I hope I was clear,
Thanks
Hasan

Answers (1)

Alan Weiss
Alan Weiss on 27 May 2014
Take a look at this example. It shows doing the same optimization using lsqcurvefit and fminunc. Both simulannealbnd and fminunc use the same scalar objective function.
But if you will allow me to make a suggestion, you will probably be happier running MultiStart and lsqcurvefit for longer rather than using simulannealbnd. This is because the efficiency of simulannealbnd is very low. If you want, you can try running patternsearch from a large number of random start points. That might not be better than MultiStart and lsqcurvefit, but it would almost certainly beat simulannealbnd.
Alan Weiss
MATLAB mathematical toolbox documentation

Community Treasure Hunt

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

Start Hunting!