blob: d5e9bc6a0aa701d46c947cd98456e2457120dca7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
// File: AppParCurves_BSpGradient_BFGS.gxx
// Created: Thu Dec 16 13:02:58 1999
// Author: Atelier CAS2000
// <cas@cageox.paris1.matra-dtv.fr>
// Redefinition de math_BFGS:
// ==========================
AppParCurves_BSpGradient_BFGS::AppParCurves_BSpGradient_BFGS(math_MultipleVarFunctionWithGradient& F,
const math_Vector& StartingPoint,
const Standard_Real Tolerance3d,
const Standard_Real Tolerance2d,
const Standard_Real Eps,
const Standard_Integer NbIterations):
math_BFGS(F, Eps, NbIterations, Eps),
myTol3d(Tolerance3d),
myTol2d(Tolerance2d)
{
Perform(F, StartingPoint);
}
Standard_Boolean AppParCurves_BSpGradient_BFGS::IsSolutionReached(math_MultipleVarFunctionWithGradient& F) const {
Standard_Boolean Result, Result2;
AppParCurves_BSpParFunction *F1 = (AppParCurves_BSpParFunction*) &F;
Result = (2.0 * fabs(TheMinimum - PreviousMinimum) <=
1.e-10 * (fabs(TheMinimum) + fabs(PreviousMinimum))+1.e-12) ;
Standard_Real MErr3d = F1->MaxError3d();
Standard_Real MErr2d = F1->MaxError2d();
Result2 = ((MErr3d <= myTol3d) && (MErr2d <= myTol2d));
return (Result || Result2);
}
|