Medical Imaging Interaction Toolkit  2016.11.0
Medical Imaging Interaction Toolkit
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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.