help-gsl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-gsl] Levenberg-Marquardt misbehaves...


From: Paul Schneider
Subject: Re: [Help-gsl] Levenberg-Marquardt misbehaves...
Date: Wed, 23 Feb 2005 17:06:12 +0100
User-agent: Mozilla Thunderbird 1.0 (X11/20041227)

Federico Zenith wrote:

Hi everybody,
I am working on a fuel cell model. Right now I have implemented a regression member function in a "Fuelcell" class (I work in C++ with the static-function hack for GSL).

The Regressor( ) should, given some observations, find out the best parameters (there are 8, 7 of the cell plus the inductance of the wiring) of a impedance test, which is used to extract data useful for cell modelling.

The underlying Fuelcell is quite nasty - there are two brent and one steffenson iteration loops below that level. All parameters, to have any meaning, must be > 0.

The various _f, _df and _fdf of the LM loop return GSL_EDOM if any parameter is < 0, and also print out which parameter is bad and with what value. What happens is that the algorithm cycles between two values for the cathode-side diffusion-layer thickness, i.e. -246.626 and -0.65914 (metres). This might have to do with the fact that the diffusion layer is not very important for the data set I'm working in.

How to I tell LM to stay away from the negative domain?

Cheers,
-Federico

PS- I noticed there are no derivative-free nonlinear regression methods. I happen to have a paper from 1978 about DUD, exactly such an algorithm. Is does not even seem too difficult to implement. Is there interest to include such an algorithm?
------------------------------------------------------------------------

_______________________________________________
Help-gsl mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/help-gsl
Check out http://plato.asu.edu/guide.html and http://www-fp.mcs.anl.gov/otc/Guide/SoftwareGuide/Categories/constropt.html for derivative free constrained non linear optimization. I tried cobyla2 (easy to use) donlp2 (hard to use) quite successfully. donlp2 actually does compute a numerical derivative for you. I heard that Knitro is also really good and easy to use especially from C++, however, they don't have a 64 bit version yet.

Best,

Paul




reply via email to

[Prev in Thread] Current Thread [Next in Thread]