﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
234	Discrepancy between minROPP and LevMarq minimisers	Ian Culverwell	Ian Culverwell	"ROPP5 testing has shown large differences in retrievals using these two minimisers (eg see #232). 

Huw Lewis documented similar differences (if not quite as bad) in GSR 6.

We should find out why minROPP and !LevMarq differ. 

== First thoughts ==

Plots of the convergence of both schemes (in terms of J and dx, the normalised change in the state from one iteration to the next) are listed below, for the 8 profiles in IT-1DVAR-03, for reference with Huw's earlier work in GSR-03 and GSR-06.

==== Refrac, J ====
[[Image(Test4a_refrac_J.gif)]]

==== Refrac, |dx| ====
[[Image(Test4a_refrac_dx.gif)]]

==== Bangle, J ====
[[Image(Test4a_bangle_J.gif)]]

==== Bangle, |dx| ====
[[Image(Test4a_bangle_dx.gif)]]

These don't really make sense to me. The change in the state is about the same for the last two steps of !LevMarq, yet it has almost converged by the first of these. Is it going ''around'' the minimum or ''over'' it? (This is with the Linf (= max) norm; what does L2 say?) minROPP, on the other hand, seems to spiral in to the min.

All the cpu times (sec) for the 8 profiles in IT-1DVAR-03 are 3-4 times quicker than Huw found (linux upgrade?), but the story is the same: !LevMarq converges monotonically in a few, costly, iterations, while minROPP goes all over the place before converging - quickly.

So, although minROPP converges much more slowly than !LevMarq, typically needing ~5 times as many iterations, because it calculates each iteration so much more cheaply, it's around 3-5 times quicker overall.

Here are some plots of '''x''' and '''H'''('''x''') for each iteration of the convergence of profile 3:

==== Temp - bkgr ====
[[Image(Test4_multi_1.gif)]]

==== Hum - bkgr ====
[[Image(Test4_multi_2.gif)]]

==== Pres - bkgr ====
[[Image(Test4_multi_3.gif)]]

==== Forward modelled Bangle - obs ====
[[Image(Test4_multi_4.gif)]]

Certainly it ''looks'' as though !LevMarq is doing a better job, but can we prove it?  Given its extra cost, the question needs answering. I think we could try using a profile with an analytical solution (eg exponentially decaying T & q, on diff scales perhaps), roughed up with some random noise (of known statistics). Then we could see whether minROPP or !LevMarq is better. 
"	defect	new	normal	Whenever	ropp_1dvar	5.0		minropp levmarq minimisation	
