root/applications/pmsm/pmsm_estim.cpp @ 357

Revision 357, 1.5 kB (checked in by mido, 15 years ago)

mnoho zmen:
1) presun FindXXX modulu do \system
2) zalozeni dokumentace \doc\local\library_structure.dox
3) presun obsahu \tests\UI primo do \tests
4) namisto \INSTALL zalozen \install.html, je to vhodnejsi pro uzivatele WINDOWS, a snad i obecne
5) snaha o predelani veskerych UI podle nove koncepce, soubory pmsm_ui.h, arx_ui.h, KF_ui.h, libDS_ui.h, libEF_ui.h a loggers_ui.h ponechavam
jen zdokumentacnich duvodu, nic by na nich jiz nemelo zaviset, a po zkontrolovani spravnosti provedenych uprav by mely byt smazany
6) predelani estimatoru tak, aby fungoval s novym UI konceptem
7) vytazeni tridy bdmroot do samostatneho souboru \bdm\bdmroot.h
8) pridana dokumentace pro zacleneni programu ASTYLE do Visual studia, ASTYLE pridan do instalacniho balicku pro Windows

Line 
1
2/*!
3\file
4\brief Multi-Estimator (developped for PMSM)
5
6
7 */
8
9#include "user_info.h"
10#include "stat/loggers.h"
11
12using namespace bdm;
13int main ( int argc, char* argv[] ) {
14        const char *fname;
15        if ( argc>1 ) {fname = argv[1]; }
16        else { cout << "Missing configuration file.\n Usage: \n $> estimator config_file.cfg"<<endl; abort(); }
17        UI_File F ( fname );
18
19        logger* L = UI::build <logger>( F, "logger" );
20        DS * pDS = UI::build<DS> ( F, "system" );
21        Array<BM*> Es;                  // array of estimators
22        UI::get( Es, F, "estimator" );
23        int nE = Es.length();   //number of estimators
24        int Ndat;                               //number of data records
25        F.lookupValue ( "experiment.ndat",Ndat );
26               
27        pDS->log_add ( *L );
28        string nic="";
29        for (int i=0; i<nE; i++){
30                Es(i)->log_add(*L,nic); // estimate
31        }
32        L->init();
33
34        vec dt=zeros ( pDS->_drv()._dsize() );   //data variable
35        Array<datalink*> Dls(nE); 
36        for (int i=0; i<nE; i++){
37                Dls(i)=new datalink( Es(i)->_drv(),pDS->_drv() ); //datalink between a datasource and estimator
38        }
39       
40        // Main cycle
41        for ( int tK=1;tK<Ndat;tK++ ) {
42                // Data Source
43                pDS->step();                                                    // simulator step
44                pDS->getdata ( dt );                                    // read data
45                pDS->logit ( *L );
46               
47                // Estimators
48                for (int i=0; i<nE; i++){
49                        Es(i)->bayes ( Dls(i)->pushdown ( dt ) );               // update estimates
50
51                        Es(i)->logit (*L);
52                }
53                // Regulators
54                L->step();
55        }
56
57        L->finalize();
58
59        delete L;
60        delete pDS;
61        for (int i=0; i<nE; i++){
62                delete Dls(i);
63                delete Es(i);
64        }
65        return 0;
66}
Note: See TracBrowser for help on using the browser.