LMA calculation of sum of squares in an extern function
Page 1 of 1

Author:  Georg [ Thu Jun 23, 2011 9:28 am ]
Post subject:  LMA calculation of sum of squares in an extern function

Hey guys,

I have a non-linear optimization problem and I want to use the alglib's LMA implementation to solve it. However, it is very unpractical for me to give the algorithm all the N points, i.e. the x and y to solve:

F(c) = (f(c,x[0])-y[0])^2 + ... + (f(c,x[n-1])-y[n-1])^2

I'd rather calculate the sum of squares by myself in a function, since I want to do the calculations on the GPU. Is there any drawback if I simple pass a dummy x and dummy y containing only 1 element and doing all the complex calculations, which actually involve 100k points bymyself in a function?


Author:  Sergey.Bochkanov [ Fri Jun 24, 2011 10:42 am ]
Post subject:  Re: LMA calculation of sum of squares in an extern function

There are two units which implement LM algorithm: lsfit and minlm.

lsfit is a high-level wrapper which solves fitting problem, i.e. minimizes F(c) = (f(c,x[0])-y[0])^2 + ... + (f(c,x[n-1])-y[n-1])^2. It needs a list of points, it automatically passes them one by one to the user-defined function and so on... You probably talk about this unit because this is the only unit which explicitly mentions points and c, x, y arrays. lsfit will work with dummy arrays - you may pass dummy x containing only one element - index of the point, and to fetch data from already calculated array of f's using this index. y, however, must be non-dummy, because its value is used by the algorithm.

minlm unit, from the other side, solves general form minimization problem without any explicit connection with some data to be fitted: min f(c) = f0(c)^2 + ... + fn_1(c)^2. It does not mention x and y, which is exactly the thing you need. Maybe it is better to use minlm in your situation.

Page 1 of 1 All times are UTC
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group