[Insight-users] how to block some parameters from optimizing in an optimizer?

kdsfinger at gmail.com kdsfinger at gmail.com
Sat Jan 6 12:57:36 EST 2007


hi,
I noticed that one can set the optimizerScalers to a very large number
to block that item to be optimized, but don't know exactly how.
Suppose I have a versor optimizer which has 6 parameters (first 3 for
rotation and last 3 for translation). As mentioned in the manual, the
rotation unit is radius and translation is mm. I have:

  optimizerScales[0] = 1.0;
  optimizerScales[1] = 1.0;
  optimizerScales[2] = 1.0;
  optimizerScales[3] = translationScale;
  optimizerScales[4] = translationScale;
  optimizerScales[5] = translationScale;

  optimizer->SetScales( optimizerScales );
  optimizer->SetMaximumStepLength( 0.2000  );
  optimizer->SetMinimumStepLength( 0.0001 );

Now I want to block the optimization of translation on x direction and
rotation on x axis and y axis, should I say:

  optimizerScales[0] = 10000.0;
  optimizerScales[1] = 1.0;
  optimizerScales[2] = 10000.0;
  optimizerScales[3] = translationScale*10000;
  optimizerScales[4] = translationScale;
  optimizerScales[5] = translationScale;

  optimizer->SetScales( optimizerScales );
  optimizer->SetMaximumStepLength( 0.2000  );
  optimizer->SetMinimumStepLength( 0.0001 );

What I am confusing is: does the optimizerScales refers to the minimum
unit updated during optimization or it's just refers the relative
scales of the parameters to be optimized? In the 2nd way, it maks no
difference by saying

optimizerScales[0] = 1.0;
...
optimizerScales[3] = 1.0/1000;

and

optimizerScales[0] = 1000.0;
...
optimizerScales[3] = 1.0;

Thanks for help.

zl2k


More information about the Insight-users mailing list