Medical Imaging Interaction Toolkit  2016.11.0
Medical Imaging Interaction Toolkit
mitkOptimizerParameters.h
Go to the documentation of this file.
1 /*===================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center,
6 Division of Medical and Biological Informatics.
7 All rights reserved.
8 
9 This software is distributed WITHOUT ANY WARRANTY; without
10 even the implied warranty of MERCHANTABILITY or FITNESS FOR
11 A PARTICULAR PURPOSE.
12 
13 See LICENSE.txt or http://www.mitk.org for details.
14 
15 ===================================================================*/
16 
17 #ifndef MITKOPTIMIZERPARAMETERS_H
18 #define MITKOPTIMIZERPARAMETERS_H
19 
21 #include "mitkCommon.h"
22 #include <itkArray.h>
23 #include <itkObjectFactory.h>
24 
25 namespace mitk
26 {
43  {
44  public:
46  itkFactorylessNewMacro(Self) itkCloneMacro(Self)
47 
48 
52  EXHAUSTIVEOPTIMIZER = 0,
53  GRADIENTDESCENTOPTIMIZER = 1,
54  QUATERNIONRIGIDTRANSFORMGRADIENTDESCENTOPTIMIZER = 2,
55  LBFGSBOPTIMIZER = 3,
56  ONEPLUSONEEVOLUTIONARYOPTIMIZER = 4,
57  POWELLOPTIMIZER = 5,
58  FRPROPTIMIZER = 6,
59  REGULARSTEPGRADIENTDESCENTOPTIMIZER = 7,
60  VERSORTRANSFORMOPTIMIZER = 8,
61  AMOEBAOPTIMIZER = 9,
62  CONJUGATEGRADIENTOPTIMIZER = 10,
63  LBFGSOPTIMIZER = 11,
64  SPSAOPTIMIZER = 12,
65  VERSORRIGID3DTRANSFORMOPTIMIZER = 13
66  };
67 
71  itkSetMacro(Optimizer, int);
75  itkGetMacro(Optimizer, int);
76 
80  itkSetMacro(Dimension, unsigned int);
81 
85  itkGetMacro(Dimension, unsigned int);
86 
90  itkSetMacro(Maximize, bool);
91 
95  itkGetMacro(Maximize, bool);
96 
100  itkSetMacro(StepLengthExhaustive, float);
101 
105  itkGetMacro(StepLengthExhaustive, float);
106 
110  itkSetMacro(NumberOfStepsExhaustive, int);
111 
115  itkGetMacro(NumberOfStepsExhaustive, int);
116 
120  itkSetMacro(LearningRateGradientDescent, float);
121 
125  itkGetMacro(LearningRateGradientDescent, float);
126 
130  itkSetMacro(NumberOfIterationsGradientDescent, int);
131 
135  itkGetMacro(NumberOfIterationsGradientDescent, int);
136 
140  itkSetMacro(LearningRateQuaternionRigidTransformGradientDescent, float);
141 
145  itkGetMacro(LearningRateQuaternionRigidTransformGradientDescent, float);
146 
150  itkSetMacro(NumberOfIterationsQuaternionRigidTransformGradientDescent, int);
151 
155  itkGetMacro(NumberOfIterationsQuaternionRigidTransformGradientDescent, int);
156 
160  itkSetMacro(GrowthFactorOnePlusOneEvolutionary, float);
161 
165  itkGetMacro(GrowthFactorOnePlusOneEvolutionary, float);
166 
170  itkSetMacro(ShrinkFactorOnePlusOneEvolutionary, float);
171 
175  itkGetMacro(ShrinkFactorOnePlusOneEvolutionary, float);
176 
180  itkSetMacro(EpsilonOnePlusOneEvolutionary, float);
181 
185  itkGetMacro(EpsilonOnePlusOneEvolutionary, float);
186 
190  itkSetMacro(InitialRadiusOnePlusOneEvolutionary, float);
191 
195  itkGetMacro(InitialRadiusOnePlusOneEvolutionary, float);
196 
200  itkSetMacro(NumberOfIterationsOnePlusOneEvolutionary, int);
201 
205  itkGetMacro(NumberOfIterationsOnePlusOneEvolutionary, int);
206 
210  itkSetMacro(StepLengthPowell, float);
211 
215  itkGetMacro(StepLengthPowell, float);
216 
220  itkSetMacro(StepTolerancePowell, float);
221 
225  itkGetMacro(StepTolerancePowell, float);
226 
230  itkSetMacro(ValueTolerancePowell, float);
231 
235  itkGetMacro(ValueTolerancePowell, float);
236 
240  itkSetMacro(NumberOfIterationsPowell, int);
241 
245  itkGetMacro(NumberOfIterationsPowell, int);
246 
250  itkSetMacro(StepLengthFRPR, float);
251 
255  itkGetMacro(StepLengthFRPR, float);
256 
260  itkSetMacro(FletchReevesFRPR, bool);
261 
265  itkGetMacro(FletchReevesFRPR, bool);
266 
270  itkSetMacro(PolakRibiereFRPR, bool);
271 
275  itkGetMacro(PolakRibiereFRPR, bool);
276 
280  itkSetMacro(NumberOfIterationsFRPR, int);
281 
285  itkGetMacro(NumberOfIterationsFRPR, int);
286 
290  itkSetMacro(GradientMagnitudeToleranceRegularStepGradientDescent, float);
291 
295  itkGetMacro(GradientMagnitudeToleranceRegularStepGradientDescent, float);
296 
300  itkSetMacro(MinimumStepLengthRegularStepGradientDescent, float);
301 
305  itkGetMacro(MinimumStepLengthRegularStepGradientDescent, float);
306 
310  itkSetMacro(MaximumStepLengthRegularStepGradientDescent, float);
311 
315  itkGetMacro(MaximumStepLengthRegularStepGradientDescent, float);
316 
320  itkSetMacro(NumberOfIterationsRegularStepGradientDescent, int);
321 
325  itkGetMacro(NumberOfIterationsRegularStepGradientDescent, int);
326 
330  itkSetMacro(RelaxationFactorRegularStepGradientDescent, double);
331 
335  itkGetMacro(RelaxationFactorRegularStepGradientDescent, double);
336 
340  itkSetMacro(GradientMagnitudeToleranceVersorRigid3DTransform, float);
341 
345  itkGetMacro(GradientMagnitudeToleranceVersorRigid3DTransform, float);
346 
350  itkSetMacro(MinimumStepLengthVersorRigid3DTransform, float);
351 
355  itkGetMacro(MinimumStepLengthVersorRigid3DTransform, float);
356 
360  itkSetMacro(MaximumStepLengthVersorRigid3DTransform, float);
361 
365  itkGetMacro(MaximumStepLengthVersorRigid3DTransform, float);
366 
370  itkSetMacro(NumberOfIterationsVersorRigid3DTransform, int);
371 
375  itkGetMacro(NumberOfIterationsVersorRigid3DTransform, int);
376 
380  itkSetMacro(GradientMagnitudeToleranceVersorTransform, float);
381 
385  itkGetMacro(GradientMagnitudeToleranceVersorTransform, float);
386 
390  itkSetMacro(MinimumStepLengthVersorTransform, float);
391 
395  itkGetMacro(MinimumStepLengthVersorTransform, float);
396 
400  itkSetMacro(MaximumStepLengthVersorTransform, float);
401 
405  itkGetMacro(MaximumStepLengthVersorTransform, float);
406 
410  itkSetMacro(NumberOfIterationsVersorTransform, int);
411 
415  itkGetMacro(NumberOfIterationsVersorTransform, int);
416 
420  void SetSimplexDeltaAmoeba(itk::Array<double> simplexDelta);
421 
425  itk::Array<double> GetSimplexDeltaAmoeba();
426 
430  itkSetMacro(ParametersConvergenceToleranceAmoeba, float);
431 
435  itkGetMacro(ParametersConvergenceToleranceAmoeba, float);
436 
440  itkSetMacro(FunctionConvergenceToleranceAmoeba, float);
441 
445  itkGetMacro(FunctionConvergenceToleranceAmoeba, float);
446 
450  itkSetMacro(NumberOfIterationsAmoeba, int);
451 
455  itkGetMacro(NumberOfIterationsAmoeba, int);
456 
457  // nothing for itk::ConjugateGradientOptimizer
458 
462  itkSetMacro(GradientConvergenceToleranceLBFGS, float);
463 
467  itkGetMacro(GradientConvergenceToleranceLBFGS, float);
468 
472  itkSetMacro(LineSearchAccuracyLBFGS, float);
473 
477  itkGetMacro(LineSearchAccuracyLBFGS, float);
478 
482  itkSetMacro(DefaultStepLengthLBFGS, float);
483 
487  itkGetMacro(DefaultStepLengthLBFGS, float);
488 
492  itkSetMacro(TraceOnLBFGS, bool);
493 
497  itkGetMacro(TraceOnLBFGS, bool);
498 
502  itkSetMacro(NumberOfIterationsLBFGS, int);
503 
507  itkGetMacro(NumberOfIterationsLBFGS, int);
508 
512  itkSetMacro(aSPSA, float);
513 
517  itkGetMacro(aSPSA, float);
518 
522  itkSetMacro(ASPSA, float);
523 
527  itkGetMacro(ASPSA, float);
528 
532  itkSetMacro(AlphaSPSA, float);
533 
537  itkGetMacro(AlphaSPSA, float);
538 
542  itkSetMacro(cSPSA, float);
543 
547  itkGetMacro(cSPSA, float);
548 
552  itkSetMacro(GammaSPSA, float);
553 
557  itkGetMacro(GammaSPSA, float);
558 
562  itkSetMacro(ToleranceSPSA, float);
563 
567  itkGetMacro(ToleranceSPSA, float);
568 
572  itkSetMacro(StateOfConvergenceDecayRateSPSA, float);
573 
577  itkGetMacro(StateOfConvergenceDecayRateSPSA, float);
578 
582  itkSetMacro(MinimumNumberOfIterationsSPSA, int);
583 
587  itkGetMacro(MinimumNumberOfIterationsSPSA, int);
588 
592  itkSetMacro(NumberOfPerturbationsSPSA, int);
593 
597  itkGetMacro(NumberOfPerturbationsSPSA, int);
598 
602  itkSetMacro(NumberOfIterationsSPSA, int);
603 
607  itkGetMacro(NumberOfIterationsSPSA, int);
608 
609  protected:
612 
613  // for all Optimizer
614  int m_Optimizer;
615  unsigned int m_Dimension;
617 
618  // for itk::ExhaustiveOptimizer
621 
622  // for itk::GradientDescentOptimizer
625 
626  // for itk::QuaternionRigidTransformGradientDescentOptimizer
629 
630  // for itk::LBFGSBOptimizer
631 
632  // for itk::OnePlusOneEvolutionaryOptimizer
638 
639  // for itk::PowellOptimizer
644 
645  // for itk::FRPROptimizer
650 
651  // for itk::RegularStepGradientDescentOptimizer
657 
658  // for itk::VersorRigid3DTransformOptimizer
663 
664  // for itk::VersorTransformOptimizer
669 
670  // for itk::AmoebaOptimizer
671  itk::Array<double> m_SimplexDeltaAmoeba;
675 
676  // for itk::ConjugateGradientOptimizer
677 
678  // for itk::LBFGSOptimizer
684 
685  // for itk::SPSAOptimizer
686  float m_aSPSA;
687  float m_ASPSA;
688  float m_AlphaSPSA;
689  float m_cSPSA;
690  float m_GammaSPSA;
696  };
697 
698 } // namespace mitk
699 
700 #endif // MITKOPTIMIZERPARAMETERS_H
#define MITKRIGIDREGISTRATION_EXPORT
DataCollection - Class to facilitate loading/accessing structured data.
This class is used to hold all optimizer parameters needed for a rigid registration process...
#define mitkClassMacroItkParent(className, SuperClassName)
Definition: mitkCommon.h:53
itk::Array< double > m_SimplexDeltaAmoeba
OptimizerType
Unique integer value for every optimizer.