MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
DynamicForgettingFactor Class Reference

#include <forgfact.h>

Inheritance diagram for DynamicForgettingFactor:
Collaboration diagram for DynamicForgettingFactor:

Public Member Functions

 DynamicForgettingFactor (integer n1, integer n2, integer i, doublereal r, doublereal f, doublereal kr, doublereal kl)
 
 ~DynamicForgettingFactor (void)
 
void Update (const doublereal *pErr=NULL)
 
doublereal dGet (void) const
 
- Public Member Functions inherited from ForgettingFactor
 ForgettingFactor (integer i)
 
virtual ~ForgettingFactor (void)
 

Protected Attributes

integer N1
 
integer N2
 
doublereal dRho
 
doublereal dFact
 
doublereal dkRef
 
doublereal dkLim
 
doublereal dk
 
doublerealpdErrM
 
doublerealpdErrS
 
integer iRef1
 
integer iRef2
 
doublereal dErr1M
 
doublereal dErr1S
 
doublereal dErr2M
 
doublereal dErr2S
 
- Protected Attributes inherited from ForgettingFactor
integer iNumErr
 

Detailed Description

Definition at line 76 of file forgfact.h.

Constructor & Destructor Documentation

DynamicForgettingFactor::DynamicForgettingFactor ( integer  n1,
integer  n2,
integer  i,
doublereal  r,
doublereal  f,
doublereal  kr,
doublereal  kl 
)

Definition at line 71 of file forgfact.cc.

References ASSERT, dFact, dkLim, dkRef, dRho, N1, N2, pdErrM, pdErrS, and SAFENEWARR.

78 : ForgettingFactor(i),
79 N1(n1), N2(n2), dRho(r), dFact(f), dkRef(kr), dkLim(kl),
80 dk(kr), pdErrM(NULL), pdErrS(NULL), iRef1(n1-1), iRef2(n1-n2-1),
81 dErr1M(0.), dErr1S(0.), dErr2M(0.), dErr2S(0.) {
82  ASSERT(N1 > 0);
83  ASSERT(N2 > 0);
84  ASSERT(N2 < N1);
85  ASSERT(dRho > 0. && dRho < 1.);
86  ASSERT(dFact > 0. && dFact < 1.);
87  ASSERT(dkRef > 0. && dkRef < 1.);
88  ASSERT(dkLim > dkRef && dkLim <= 1.);
89 
91 
92  pdErrS = pdErrM+N1;
93  for (integer i = 0; i < 2*N1; i++) {
94  pdErrM[i] = 0.;
95  }
96 }
doublereal * pdErrS
Definition: forgfact.h:89
ForgettingFactor(integer i)
Definition: forgfact.cc:39
#define ASSERT(expression)
Definition: colamd.c:977
doublereal * pdErrM
Definition: forgfact.h:88
#define SAFENEWARR(pnt, item, sz)
Definition: mynewmem.h:701
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
DynamicForgettingFactor::~DynamicForgettingFactor ( void  )

Definition at line 98 of file forgfact.cc.

References pdErrM, and SAFEDELETEARR.

98  {
99  /* pdErr must be non-null */
101 }
#define SAFEDELETEARR(pnt)
Definition: mynewmem.h:713
doublereal * pdErrM
Definition: forgfact.h:88

Member Function Documentation

doublereal DynamicForgettingFactor::dGet ( void  ) const
inlinevirtual

Implements ForgettingFactor.

Definition at line 109 of file forgfact.h.

References dk.

110 {
111  return dk;
112 }
void DynamicForgettingFactor::Update ( const doublereal pErr = NULL)
virtual

Implements ForgettingFactor.

Definition at line 103 of file forgfact.cc.

References dErr1M, dErr1S, dErr2M, dErr2S, dFact, dk, dkLim, dkRef, dRho, dS, grad::fabs(), ForgettingFactor::iNumErr, iRef1, iRef2, N1, N2, pdErrM, pdErrS, and grad::pow().

103  {
104  /* setta i riferimenti */
105  if (++iRef1 == N1) {
106  iRef1 = 0;
107  }
108  if (++iRef2 == N1) {
109  iRef2 = 0;
110  }
111 
112  /* calcola la media e la norma dell'errore */
113  doublereal dM = 0.;
114  doublereal dS = 0.;
115  for (integer i = iNumErr; i--;) {
116  dS += pErr[i]*pErr[i];
117  dM += pErr[i];
118  }
119 
120  /* somma agli errori la norma dell'errore corrente, poi sottrae
121  * l'errore al limite posteriore delle rispettive finestre */
122  dErr1M += dM;
123  dErr1M -= pdErrM[iRef1];
124  dErr1S += dS;
125  dErr1S -= pdErrS[iRef1];
126 
127  dErr2M += dM;
128  dErr2M -= pdErrM[iRef2];
129  dErr2S += dS;
130  dErr2S -= pdErrS[iRef2];
131 
132  /* aggiorna il limite superiore della finestra "lunga" */
133  pdErrM[iRef1] = dM;
134  pdErrS[iRef1] = dS;
135 
136  /* differenza tra la varianza dell'errore "corto"
137  * rispetto a quello "lungo" */
138  doublereal r = (dErr1S/N1-pow(dErr1M/N1,2));
139  if (fabs(r) < 1.e-6) {
140  return;
141  }
142  r = 1.-(dErr2S/N2-pow(dErr2M/N2,2))/r;
143 
144  /* se viene superato il limite, il forgetting factor scatta al valore
145  * minimo (massima dimenticanza) */
146  if (fabs(r) > dFact) {
147  dk = dkRef;
148  } else {
149 
150  /* il forgetting factor viene fatto variare con una sua dinamica */
151  dk = dRho*dk+(1-dRho)*dkLim;
152  }
153 }
integer iNumErr
Definition: forgfact.h:47
GradientExpression< BinaryExpr< FuncPow, LhsExpr, RhsExpr > > pow(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
Definition: gradient.h:2961
doublereal * pdErrS
Definition: forgfact.h:89
GradientExpression< UnaryExpr< FuncFabs, Expr > > fabs(const GradientExpression< Expr > &u)
Definition: gradient.h:2973
const doublereal dS
Definition: beamslider.cc:71
doublereal * pdErrM
Definition: forgfact.h:88
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

Member Data Documentation

doublereal DynamicForgettingFactor::dErr1M
protected

Definition at line 93 of file forgfact.h.

Referenced by Update().

doublereal DynamicForgettingFactor::dErr1S
protected

Definition at line 94 of file forgfact.h.

Referenced by Update().

doublereal DynamicForgettingFactor::dErr2M
protected

Definition at line 95 of file forgfact.h.

Referenced by Update().

doublereal DynamicForgettingFactor::dErr2S
protected

Definition at line 96 of file forgfact.h.

Referenced by Update().

doublereal DynamicForgettingFactor::dFact
protected

Definition at line 82 of file forgfact.h.

Referenced by DynamicForgettingFactor(), and Update().

doublereal DynamicForgettingFactor::dk
protected

Definition at line 86 of file forgfact.h.

Referenced by dGet(), and Update().

doublereal DynamicForgettingFactor::dkLim
protected

Definition at line 84 of file forgfact.h.

Referenced by DynamicForgettingFactor(), and Update().

doublereal DynamicForgettingFactor::dkRef
protected

Definition at line 83 of file forgfact.h.

Referenced by DynamicForgettingFactor(), and Update().

doublereal DynamicForgettingFactor::dRho
protected

Definition at line 81 of file forgfact.h.

Referenced by DynamicForgettingFactor(), and Update().

integer DynamicForgettingFactor::iRef1
protected

Definition at line 90 of file forgfact.h.

Referenced by Update().

integer DynamicForgettingFactor::iRef2
protected

Definition at line 91 of file forgfact.h.

Referenced by Update().

integer DynamicForgettingFactor::N1
protected

Definition at line 78 of file forgfact.h.

Referenced by DynamicForgettingFactor(), and Update().

integer DynamicForgettingFactor::N2
protected

Definition at line 79 of file forgfact.h.

Referenced by DynamicForgettingFactor(), and Update().

doublereal* DynamicForgettingFactor::pdErrM
protected

Definition at line 88 of file forgfact.h.

Referenced by DynamicForgettingFactor(), Update(), and ~DynamicForgettingFactor().

doublereal* DynamicForgettingFactor::pdErrS
protected

Definition at line 89 of file forgfact.h.

Referenced by DynamicForgettingFactor(), and Update().


The documentation for this class was generated from the following files: