Changeset 723 for applications/dual/src/arx1_ctrl.h
- Timestamp:
- 11/15/09 23:02:02 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
applications/dual/src/arx1_ctrl.h
r706 r723 21 21 void set_b (const double b0){b=b0;} 22 22 //! data in ctrlaction are only past outputs yt 23 vec ctrlaction(const vec &yt) {23 vec ctrlaction(const vec &yt)const{ 24 24 vec ut(1); 25 25 if (abs(b)<1e-2) { … … 63 63 public: 64 64 //! expected input is yt 65 virtual void adapt(const vec & yt){65 virtual void adapt(const vec &dt){ 66 66 //prepare data for ARX 67 Psi(0) = yt(0)-ytm;68 Psi(1) = utm;69 67 // do estimation 70 est.bayes(Psi); 68 est.bayes(vec_1(dt(0)-ytm),vec_1(dt(1))); 69 ytm = dt(0); 71 70 // save estimate b = E(b); 72 71 b = est.posterior().mean()(0); // first 73 72 } 74 73 //! same as exact control, but stores ut as utm 75 vec ctrlaction(const vec &yt){ 76 vec ut=exact_ctrl::ctrlaction(yt); 74 vec ctrlaction(const vec &dt)const{ 75 vec ut(1); 76 mat P = est.posterior().variance(); 77 ut(0) =(yr - dt(0))/(b + (b<0 ? P(0,0) : -P(0,0)));; 77 78 // remember last ut for estimation 78 utm=ut(0);79 ytm=yt(0);80 79 return ut; 81 80 } … … 92 91 V0(1,0) = b0; 93 92 V0(0,1) = b0; 94 V0(1,1) = P0 ;93 V0(1,1) = P0/6; 95 94 96 est.set_statistics(1,V0 );95 est.set_statistics(1,V0,6); 97 96 est.set_constant(false); 97 est.validate(); 98 98 validate(); 99 99 } 100 100 void validate(){ 101 101 Psi = zeros(2); 102 LIDs = zeros_i(1);103 102 } 104 virtual void log_add ( logger &L, const string &name = "" ) { 105 LIDs ( 0 ) = L.add ( RV("bhat",1) ); 103 void log_register( logger& L, const string& prefix ){ 104 est.set_log_level(1); 105 est.log_register(L,""); 106 }; 107 void log_write() const{ 108 est.log_write(); 106 109 } 107 virtual void logit ( logger &L ) {108 L.logit ( LIDs ( 0 ), b );109 }110 111 110 }; 112 111 UIREGISTER(ce_ctrl);