MATLAB Answers

Multistart lsqcurvefit with parallel processing on produces an error

4 views (last 30 days)
Felix
Felix on 31 Mar 2013
so I have a lsqcurvefit problem defined with a function and I run it with MultiStart to get a global minimum. Everything works perfectly fine if I have "useparallel" disabled. problem=createOptimProblem('lsqcurvefit','x0',x0,'objective',@myfunction,... 'lb',lb,'ub',ub,'xdata',xdata,'ydata',ydata,'options',options);
However, when I try parallel processing it gives me the error: "Attempted to access x0(1); index out of bounds because numel(x0)=0." x0 contains the parameters of my function to fit (which is a separate .m file). Apparently the input variables of my function are not available in the matlab workers. I tried to make x0 a global variable, but then I have the problem that the local values during fitting keep getting changed back to the global start value...

  3 Comments

Matt J
Matt J on 31 Mar 2013
Hmmm. Show us how you create x0. Are you sure you are passing a non-empty x0 vector to createOptimProblem? You could verify that by displaying numel(x0) right before the call to it.
Felix
Felix on 31 Mar 2013
I'm sure its not an empty vector (x0 = [0.1 2 3 50];), and its passed into the function to fit as input argument. Since I get nice results with Multistart when I have "useparallel" disabled, I don't think there is any programming error. It's just another curiosity about the parallel processing toolbox, maybe it doesn't accept that I have my fit-function in a separate m-file instead of having it as an anonymous inline function. I could imagine that it gets confused to run the function file multiple times with multiple values for the same variable name x0....
Matt J
Matt J on 31 Mar 2013
I could imagine that it gets confused to run the function file multiple times with multiple values for the same variable name x0
I can't imagine that. It's the whole point of MultiStart. You'll have to show more code or we'll just be guessing.

Sign in to comment.

Answers (0)

Sign in to answer this question.


Translated by