[Insight-users] understanding vnl_amoeba

Ekaterina Syrkina syrkina at vision.ee.ethz.ch
Wed May 2 13:11:16 EDT 2007


On Tue, 2007-05-01 at 19:10 -0400, Luis Ibanez wrote:
> Hi Katya,
Hi Luis,

thanks a lot for your answers!

> 
> Yes, your expectation is correct.
> 
> The final value of the optimizer should be lower than the initial value.
> 
> Did the optimizer terminated with any error value ?
No.

> 
> For how many iterations did the optimizer run before stoppping ?
I have 40 variables and the optimiser does about 8030 iterations
(get_num_evaluations() output). I run it with set_x_tolerance stop
criterion.

> 
> What may be happening in your case it that the optimizer may not
> have converged to a solution, and/or that it may have gone out
> of the valid domain of your cost function.
How could it not converge? Are there any criteria? During optimisation
all values were larger than initial estimation (I've printed them), so I
expect that initial point is the local minimum already (too local for
me, but that's another question) and at the end I should get exactly
zero parameters and exactly the same initial function value...

As for parameter domain, I truncate parameters inside my function.
Anyway, parameter values during estimation are far from the domain
boundary...

> 
> In ITK, the wrapper around the vnl_amoeba optimizer allows you to
> connect observers to it, so that you can track the values of the
> optimizer at every iteration.
There is verbose mode for vnl_amoeba minimizer which prints number and
type of iteration, parameters for the first simplex corner (the lowest
one) and function value at all simplex corners. After 600 iterations I
have only "shrink" iterations around the initial point with function
value at simplex corners something like:

1.00 1.01 1.01 ... 1.01 (all but first are identical close to initial!)

I found that optimisation actually always keeps the initially estimated
lowest value with zero parameters (1.00 in my example), but somehow at
the end I get 1.01 output value :(

I'll check floating errors and try to get some additional debug prints
from the library...

Sorry for the long e-mail.

Thanks for your time. Cheers,
Katya

p.s. BTW, is there any systematic way to check the behaviour of the
function with so many parameters, kind of "plot" for example? May be
some software for that?



> 
> You may find useful to implement a similar monitoring mechanism
> in order to debug your optimization.
> 
> 
>      Regards,
> 
> 
>         Luis
> 
> 
> -------------------------
> Ekaterina Syrkina wrote:
> > Hello,
> > 
> > I'm not ITK-user, but I address my question to this list as there is a
> > wrapper around the vnl_amoeba algorithm in ITK. Hope some of you may
> > help me.
> > 
> > I'm using vnl_amoeba class for minimisation of my multidimensional
> > function and observe some confusing behaviour... The result of the
> > optimisation ("minimisation") is bigger than the starting value. Has
> > anyone experienced similar problems?
> > 
> > My understanding of the Downhill Simplex Method is that we always keep
> > "lowest" simplex point, so we never get function value which is worse
> > than initial. Is it correct?
> > 
> > Thanks,
> > Katya
> > 
> > 
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users at itk.org
> > http://www.itk.org/mailman/listinfo/insight-users
> > 



More information about the Insight-users mailing list