Show
Ignore:
Timestamp:
11/15/09 23:02:02 (15 years ago)
Author:
smidl
Message:

Big commit of LQG stuff

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/tests/testsuite/LQG_test.cpp

    r722 r723  
    55using namespace bdm; 
    66 
    7 TEST ( LQG_test ) { 
     7TEST(LQG_test) { 
    88        LQG reg; 
    9         shared_ptr<StateSpace<fsqmat> > stsp = new StateSpace<fsqmat>; 
     9        shared_ptr<StateSpace<chmat> > stsp=new StateSpace<chmat>; 
    1010        // 2 x 1 x 1 
    11         stsp-> set_parameters ( eye ( 2 ), ones ( 2, 1 ), ones ( 1, 2 ), ones ( 1, 1 ), /* Q,R */ eye ( 2 ), eye ( 1 ) ); 
    12         reg.set_system ( stsp ); // A, B, C 
    13         reg.set_control_parameters ( eye ( 1 ), eye ( 1 ),  vec_1 ( 1.0 ), 6 ); //Qy, Qu, horizon 
     11        stsp-> set_parameters(eye(2), ones(2,1), ones(1,2), ones(1,1), /* Q,R */ eye(2), eye(1)); 
     12        reg.set_system(stsp); // A, B, C 
     13        reg.set_control_parameters(eye(1), eye(1),  vec_1(1.0), 6); //Qy, Qu, horizon 
     14        reg.validate(); 
    1415 
    1516        reg.redesign(); 
    16         double reg_apply = reg.ctrlaction ( "0.5, 1.1", "0.0" ) ( 0 ); /*convert vec to double*/ 
    17         CHECK_CLOSE ( reg_apply, -0.248528137234392, 0.0001 ); 
     17        double reg_apply=reg.ctrlaction("0.5, 1.1","0.0")(0); /*convert vec to double*/ 
     18        CHECK_CLOSE(reg_apply, -0.248528137234392, 0.0001); 
    1819} 
    1920 
    20 TEST ( to_state_test ) { 
     21TEST(to_state_test) { 
    2122        mlnorm<fsqmat> ml; 
    22         mat A = "1.1, 2.3"; 
    23         ml.set_parameters ( A, vec_1 ( 1.3 ), eye ( 1 ) ); 
    24         RV yr = RV ( "y", 1 ); 
    25         RV ur = RV ( "u", 1 ); 
    26         ml.set_rv ( yr ); 
    27         yr.t_plus ( -1 ); 
    28         ml.set_rvc ( concat ( yr, ur ) ); 
    29  
    30         shared_ptr<StateCanonical > Stsp = new StateCanonical; 
    31         Stsp->connect_mlnorm ( ml ); 
    32  
    33         /* results from 
     23        mat A="1.1, 2.3"; 
     24        ml.set_parameters(A, vec_1(1.3), eye(1)); 
     25        RV yr=RV("y",1); 
     26        RV ur=RV("u",1); 
     27        ml.set_rv(yr); 
     28        yr.t_plus(-1); 
     29        ml.set_rvc(concat(yr, ur)); 
     30         
     31        shared_ptr<StateCanonical > Stsp=new StateCanonical; 
     32        Stsp->connect_mlnorm(ml); 
     33         
     34        /* results from  
    3435        [A,B,C,D]=tf2ss([2.3 0],[1 -1.1]) 
    3536        */ 
    36         CHECK_CLOSE_EX ( Stsp->_A().get_row ( 0 ), vec ( "1.1" ), 0.0001 ); 
    37         CHECK_CLOSE_EX ( Stsp->_C().get_row ( 0 ), vec ( "2.53" ), 0.0001 ); 
    38         CHECK_CLOSE_EX ( Stsp->_D().get_row ( 0 ), vec ( "2.30" ), 0.0001 ); 
     37        CHECK_CLOSE_EX(Stsp->_A().get_row(0), vec("1.1"), 0.0001); 
     38        CHECK_CLOSE_EX(Stsp->_C().get_row(0), vec("2.53"), 0.0001); 
     39        CHECK_CLOSE_EX(Stsp->_D().get_row(0), vec("2.30"), 0.0001); 
    3940} 
    4041 
    41 TEST ( to_state_arx_test ) { 
    42         mlnorm<fsqmat> ml; 
    43         mat A = "1.1, 2.3"; 
    44         ml.set_parameters ( A, vec_1 ( 1.3 ), eye ( 1 ) ); 
    45         RV yr = RV ( "y", 1 ); 
    46         RV ur = RV ( "u", 1 ); 
    47         ml.set_rv ( yr ); 
    48         yr.t_plus ( -1 ); 
    49         ml.set_rvc ( concat ( yr, ur ) ); 
    50  
    51         shared_ptr<StateFromARX> Stsp = new StateFromARX; 
    52         Stsp->connect_mlnorm ( ml ); 
    53  
    54         /* results from 
     42TEST(to_state_arx_test) { 
     43        mlnorm<chmat> ml; 
     44        mat A="1.1, 2.3, 3.4"; 
     45        ml.set_parameters(A, vec_1(1.3), eye(1)); 
     46        RV yr=RV("y",1); 
     47        RV ur=RV("u",1); 
     48        ml.set_rv(yr); 
     49        ml.set_rvc(concat(yr.copy_t(-1), concat(ur, ur.copy_t(-1)))); 
     50         
     51        shared_ptr<StateFromARX> Stsp=new StateFromARX; 
     52        RV xrv; RV urv; 
     53        Stsp->connect_mlnorm(ml,xrv,urv); 
     54         
     55        /* results from  
    5556        [A,B,C,D]=tf2ss([2.3 0],[1 -1.1]) 
    5657        */ 
    57         cout << "---" << endl; 
     58        CHECK_CLOSE_EX(Stsp->_A().get_row(0), vec("1.1, 3.4, 1.3"), 0.0001); 
     59        CHECK_CLOSE_EX(Stsp->_B().get_row(0), vec("2.3"), 0.0001); 
     60        CHECK_CLOSE_EX(Stsp->_C().get_row(0), vec("1, 0, 0"), 0.0001); 
    5861} 
    5962 
    60 TEST ( arx_LQG_test ) { 
    61         mlnorm<fsqmat> ml; 
    62         mat A = "1.81, -.8189, .00468, .00438"; 
    63         ml.set_parameters ( A, vec_1 ( 0.0 ), 0.00001*eye ( 1 ) ); 
    64         RV yr = RV ( "y", 1 ); 
    65         RV ur = RV ( "u", 1 ); 
    66         RV rgr = yr.copy_t ( -1 ); 
    67         rgr.add ( yr.copy_t ( -2 ) ); 
    68         rgr.add ( yr.copy_t ( -2 ) ); 
    69         rgr.add ( ur.copy_t ( -2 ) ); 
    70         rgr.add ( ur.copy_t ( -1 ) ); 
    71  
    72         ml.set_rv ( yr ); 
    73         ml.set_rvc ( rgr ); 
     63TEST(arx_LQG_test){ 
     64        mlnorm<chmat> ml; 
     65        mat A="1.81, -.81, .00468, .00438"; 
     66        ml.set_parameters(A, vec_1(0.0), 0.00001*eye(1)); 
     67        RV yr=RV("y",1); 
     68        RV ur=RV("u",1); 
     69        RV rgr = yr.copy_t(-1); 
     70        rgr.add(yr.copy_t(-2)); 
     71        rgr.add(yr.copy_t(-2)); 
     72        rgr.add(ur.copy_t(-1)); 
     73        rgr.add(ur); 
     74         
     75        ml.set_rv(yr); 
     76        ml.set_rvc(rgr); 
    7477        ml.validate(); 
    75  
    76         shared_ptr<StateCanonical > Stsp = new StateCanonical; 
    77         Stsp->connect_mlnorm ( ml ); 
    78  
     78         
     79        shared_ptr<StateFromARX> Stsp=new StateFromARX; 
     80        RV xrv; RV urv; 
     81        Stsp->connect_mlnorm(ml,xrv,urv); 
     82         
    7983        LQG L; 
    80         L.set_system ( Stsp ); 
    81         L.set_control_parameters ( eye ( 1 ), eye ( 1 ), vec_1 ( 0.0 ), 100 ); 
     84        L.set_system(Stsp); 
     85        L.set_control_parameters(eye(1), sqrt(1.0/1000)*eye(1), vec_1(0.0), 100); 
    8286        L.validate(); 
    83  
     87         
    8488        L.redesign(); 
    85         cout << L.to_string() << endl; 
     89        cout << L.to_string()<<endl; 
    8690}