# | Line 1 | Line 1 | |
---|---|---|
1 | < | /* |
1 | > | /* |
2 | * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved. | |
3 | * | |
4 | * The University of Notre Dame grants you ("Licensee") a | |
# | Line 43 | Line 43 | namespace oopse { | |
43 | #include "utils/Utility.hpp" | |
44 | ||
45 | namespace oopse { | |
46 | < | SDMinimizer::SDMinimizer(SimInfo* info) : Minimizer(info) { |
46 | > | SDMinimizer::SDMinimizer(SimInfo* info) : Minimizer(info) { |
47 | direction.resize(ndim); | |
48 | stepSize = paramSet->getStepSize(); | |
49 | < | } |
49 | > | } |
50 | ||
51 | < | void SDMinimizer::init() { |
51 | > | void SDMinimizer::init() { |
52 | calcG(); | |
53 | ||
54 | for(int i = 0; i < direction.size(); i++) { | |
55 | < | direction[i] = -curG[i]; |
55 | > | direction[i] = -curG[i]; |
56 | } | |
57 | < | } |
57 | > | } |
58 | ||
59 | < | int SDMinimizer::step() { |
60 | < | int lsStatus; |
59 | > | int SDMinimizer::step() { |
60 | > | int lsStatus; |
61 | ||
62 | prevF = curF; | |
63 | ||
# | Line 65 | Line 65 | int SDMinimizer::step() { | |
65 | lsStatus = doLineSearch(direction, stepSize); | |
66 | ||
67 | if (lsStatus < 0) | |
68 | < | return -1; |
68 | > | return -1; |
69 | else | |
70 | < | return 1; |
71 | < | } |
70 | > | return 1; |
71 | > | } |
72 | ||
73 | < | void SDMinimizer::prepareStep() { |
73 | > | void SDMinimizer::prepareStep() { |
74 | for(int i = 0; i < direction.size(); i++) { | |
75 | < | direction[i] = -curG[i]; |
75 | > | direction[i] = -curG[i]; |
76 | } | |
77 | < | } |
77 | > | } |
78 | ||
79 | < | int SDMinimizer::checkConvg() { |
80 | < | double fTol; |
81 | < | double relativeFTol; // relative tolerance |
82 | < | double deltaF; |
83 | < | double gTol; |
84 | < | double relativeGTol; |
85 | < | double gnorm; |
79 | > | int SDMinimizer::checkConvg() { |
80 | > | double fTol; |
81 | > | double relativeFTol; // relative tolerance |
82 | > | double deltaF; |
83 | > | double gTol; |
84 | > | double relativeGTol; |
85 | > | double gnorm; |
86 | ||
87 | // test function tolerance test | |
88 | fTol = paramSet->getFTol(); | |
# | Line 90 | Line 90 | int SDMinimizer::checkConvg() { | |
90 | deltaF = prevF - curF; | |
91 | ||
92 | if (fabs(deltaF) <= relativeFTol) { | |
93 | < | if (bVerbose) { |
94 | < | std::cout << "function value tolerance test passed" << std::endl; |
95 | < | std::cout << "ftol = " << fTol << "\tdeltaf = " << deltaF << std::endl; |
96 | < | } |
93 | > | if (bVerbose) { |
94 | > | std::cout << "function value tolerance test passed" << std::endl; |
95 | > | std::cout << "ftol = " << fTol << "\tdeltaf = " << deltaF << std::endl; |
96 | > | } |
97 | ||
98 | < | return CONVG_FTOL; |
98 | > | return CONVG_FTOL; |
99 | } | |
100 | ||
101 | //gradient tolerance test | |
# | Line 108 | Line 108 | int SDMinimizer::checkConvg() { | |
108 | ||
109 | #else | |
110 | ||
111 | < | double localDP; |
112 | < | double globalDP; |
111 | > | double localDP; |
112 | > | double globalDP; |
113 | ||
114 | localDP = dotProduct(curG, curG); | |
115 | MPI_Allreduce(&localDP, &globalDP, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); | |
# | Line 118 | Line 118 | int SDMinimizer::checkConvg() { | |
118 | #endif | |
119 | ||
120 | if (gnorm <= relativeGTol) { | |
121 | < | std::cout << "gradient tolerance test" << std::endl; |
122 | < | std::cout << "gnorm = " << gnorm << "\trelativeGTol = " << relativeGTol |
123 | < | << std::endl; |
124 | < | return CONVG_GTOL; |
121 | > | std::cout << "gradient tolerance test" << std::endl; |
122 | > | std::cout << "gnorm = " << gnorm << "\trelativeGTol = " << relativeGTol |
123 | > | << std::endl; |
124 | > | return CONVG_GTOL; |
125 | } | |
126 | ||
127 | //absolute gradient tolerance test | |
128 | ||
129 | if (gnorm <= gTol) { | |
130 | < | std::cout << "absolute gradient tolerance test" << std::endl; |
131 | < | std::cout << "gnorm = " << gnorm << "\tgTol = " << gTol << std::endl; |
132 | < | return CONVG_ABSGTOL; |
130 | > | std::cout << "absolute gradient tolerance test" << std::endl; |
131 | > | std::cout << "gnorm = " << gnorm << "\tgTol = " << gTol << std::endl; |
132 | > | return CONVG_ABSGTOL; |
133 | } | |
134 | ||
135 | return CONVG_UNCONVG; | |
136 | < | } |
136 | > | } |
137 | ||
138 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |