Show
Ignore:
Timestamp:
11/28/09 14:38:48 (15 years ago)
Author:
smidl
Message:

Working unitsteps and controlloop + corresponding fixes

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • applications/bdmtoolbox/mex/controlloop.cpp

    r723 r744  
    77digraph estimation{ 
    88        node [shape=box]; 
    9         {rank="same"; "Data Source"; "Bayesian Model"} 
    10         "Data Source" -> "Bayesian Model" [label="data"]; 
    11         "Bayesian Model" -> "Result Logger" [label="estimated\n statistics"]; 
     9        subgraph cl0 { 
     10        "Data Source" -> "Controller" [label="observations"]; 
     11        "Controller" -> "Data Source" [label="actions"]; 
     12        } 
     13        {rank="same"; "Controller"; "Result Logger"} 
     14        "Controller" -> "Result Logger" [label="internals"]; 
    1215        "Data Source" -> "Result Logger" [label="Simulated\n data"]; 
    1316} 
     
    8790                if ( n_input>3 ) { 
    8891                        Cfg.addGroup ( input[3],"logger" ); 
    89                 }/*else{ 
    90                 // define logger as mexlog 
    91                 Setting &S=Cfg.getRoot(); 
    92                 S.add("logger",Setting::TypeGroup); 
    93                 S["logger"].add("class",Setting::TypeString); 
    94                 S["logger"]["class"]="mexlog"; 
    95                 S["logger"].add("maxlen",Setting::TypeInt); 
    96                 int maxlen; 
    97                 S["experiment"].lookupValue("ndat",maxlen); 
    98                 S["logger"]["maxlen"]=maxlen; 
    99         }*/ 
     92                } 
    10093        } catch ( SettingException e ) { 
    10194                it_error ( "error: "+string ( e.getPath() ) ); 
     
    116109#endif 
    117110 
     111        RNG_randomize(); 
     112         
    118113        shared_ptr<DS> Ds = UI::build<DS> ( Cfg, "system" ); 
    119114        Array<shared_ptr<Controller> > Cs; 
    120115        UI::get ( Cs,Cfg, "controllers" ); 
    121116        int Ndat=100; 
     117        int burnin=10; 
    122118        if ( Cfg.exists ( "experiment" ) ) { 
    123119                if ( Cfg.getRoot().lookupValue ( "experiment.ndat",Ndat ) ) { 
     
    178174        } 
    179175 
     176        vec ut(Ds->_urv()._dsize()); 
    180177        for ( int tK=0;tK<Ndat;tK++ ) { 
    181178                Ds->getdata ( dt );                                     // read data 
     
    186183                                Cs(i) -> redesign(); 
    187184                                Cs(i) -> adapt( Dlsc(i) ->pushdown(dt)); 
    188                                 vec ut=Cs ( i )->ctrlaction ( Dlsc(i) ->pushdown(dt) );         // update estimates 
    189                                 Ds->write(ut, vec_1(0)); 
     185                        } 
     186                        if (tK > burnin){ 
     187                                vec uti=Cs ( i )->ctrlaction ( Dlsc(i) ->pushdown(dt) );                // update estimates 
     188                                Dlsu(i)->filldown(uti, ut); 
    190189                        } else { 
    191                                 Ds->write(0.001*randn(Ds->_urv()._dsize())); 
     190                                ut = 0.1*randn(Ds->_urv()._dsize()); 
    192191                        } 
    193192                         
    194193                        Cs ( i )->log_write (); 
    195194                } 
     195                Ds->write(ut); 
    196196                 
    197197                L->step();