00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef ArmijoStepSizeRule_h
00035 #define ArmijoStepSizeRule_h
00036
00037 #include <StepSizeRule.h>
00038 #include <GFunEvaluator.h>
00039 #include <GradGEvaluator.h>
00040 #include <ProbabilityTransformation.h>
00041 #include <MeritFunctionCheck.h>
00042 #include <RootFinding.h>
00043
00044 class ArmijoStepSizeRule : public StepSizeRule
00045 {
00046
00047 public:
00048 ArmijoStepSizeRule(GFunEvaluator *passedGFunEvaluator,
00049 ProbabilityTransformation *theProbabilityTransformation,
00050 MeritFunctionCheck *theMeritFunctionCheck,
00051 RootFinding *theRootFindingAlgorithm,
00052 double base,
00053 int maxNumReductions,
00054 double b0,
00055 int numberOfShortSteps,
00056 double radius,
00057 double surfaceDistance,
00058 double evolution,
00059 int printFlag);
00060
00061 ~ArmijoStepSizeRule();
00062
00063 int computeStepSize(Vector u, Vector grad_G, double G, Vector d, int stepNumber);
00064 double getStepSize();
00065 double getInitialStepSize();
00066 double getGFunValue();
00067
00068 protected:
00069
00070 private:
00071 double stepSize;
00072 GFunEvaluator *theGFunEvaluator;
00073 GradGEvaluator *theGradGEvaluator;
00074 ProbabilityTransformation *theProbabilityTransformation;
00075 MeritFunctionCheck *theMeritFunctionCheck;
00076 RootFinding *theRootFindingAlgorithm;
00077 double gFunValue;
00078 double base;
00079 int maxNumReductions;
00080 double b0;
00081 int numberOfShortSteps;
00082 double radius;
00083 double surfaceDistance;
00084 double evolution;
00085 bool isCloseToSphere;
00086 int printFlag;
00087
00088 };
00089
00090 #endif