Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/Fitting.java @ 7300:83bb52fa0c32
(issue1529) Be more tolerant in the fitting.
The invalid value warning is removed because invalid data
is expected there when datapoints are not valid for this KM
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Fri, 11 Oct 2013 18:40:33 +0200 |
parents | 08e3c22500f3 |
children | a3f318347707 0a5239a1e46e |
comparison
equal
deleted
inserted
replaced
7299:cde863b2dae3 | 7300:83bb52fa0c32 |
---|---|
146 for (int i = 0; i < qs.length; ++i) { | 146 for (int i = 0; i < qs.length; ++i) { |
147 if (!Double.isNaN(qs[i]) && !Double.isNaN(ws[i])) { | 147 if (!Double.isNaN(qs[i]) && !Double.isNaN(ws[i])) { |
148 xs.add(qs[i]); | 148 xs.add(qs[i]); |
149 ys.add(ws[i]); | 149 ys.add(ws[i]); |
150 } | 150 } |
151 else { | |
152 log.warn("remove invalid value " + qs[i] + " " + ws[i]); | |
153 } | |
154 } | 151 } |
155 | 152 |
156 if (xs.size() < 2) { | 153 if (xs.size() < 2) { |
157 log.warn("Too less points."); | 154 log.warn("Too less points."); |
158 return false; | 155 return false; |
164 | 161 |
165 LevenbergMarquardtOptimizer lmo = null; | 162 LevenbergMarquardtOptimizer lmo = null; |
166 | 163 |
167 for (;;) { | 164 for (;;) { |
168 parameters = null; | 165 parameters = null; |
169 for (double tolerance = 1e-10; tolerance < 1e-3; tolerance *= 10d) { | 166 for (double tolerance = 1e-10; tolerance < 1e-1; tolerance *= 10d) { |
170 | 167 |
171 lmo = new LevenbergMarquardtOptimizer(); | 168 lmo = new LevenbergMarquardtOptimizer(); |
172 lmo.setCostRelativeTolerance(tolerance); | 169 lmo.setCostRelativeTolerance(tolerance); |
173 lmo.setOrthoTolerance(tolerance); | 170 lmo.setOrthoTolerance(tolerance); |
174 lmo.setParRelativeTolerance(tolerance); | 171 lmo.setParRelativeTolerance(tolerance); |
188 log.debug("tolerance " + tolerance + " + failed."); | 185 log.debug("tolerance " + tolerance + " + failed."); |
189 } | 186 } |
190 } | 187 } |
191 } | 188 } |
192 if (parameters == null) { | 189 if (parameters == null) { |
190 /* | |
191 log.debug("Parameters is null"); | |
192 for (int i = 0, N = xs.size(); i < N; ++i) { | |
193 log.debug("DATA: " + xs.getQuick(i) + " " + ys.getQuick(i)); | |
194 }*/ | |
193 return false; | 195 return false; |
194 } | 196 } |
195 | 197 |
196 // This is the paraterized function for a given km. | 198 // This is the paraterized function for a given km. |
197 instance = function.instantiate(parameters); | 199 instance = function.instantiate(parameters); |