Show
Ignore:
Timestamp:
01/26/12 12:23:52 (12 years ago)
Author:
jabu
Message:

BaseTrafficAgentCt? - zaklad agenta pro rizeni delky cyklu
Master, Observer - rizeni centralnim agentem Master, Observer jen posila data

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • applications/doprava/QuadraticMinimalizator.h

    r1420 r1422  
    2525            e << Q << endl; 
    2626            it_warning(e.str()); 
     27                        return false; 
    2728        } 
    2829        if ( !isDiagonal(R) ) { 
     
    3132            e << R << endl; 
    3233            it_warning(e.str()); 
     34                        return false; 
    3335        } 
    3436        if ( !isPositiveDefinite(Q) ) { 
     
    3739            e << Q << endl; 
    3840            it_warning(e.str()); 
     41                        return false; 
    3942        } 
    4043        if ( !isPositiveDefinite(R) ) { 
     
    4346            e << R << endl; 
    4447            it_warning(e.str()); 
     48                        return false; 
    4549        } 
     50                return true; 
    4651    } 
    4752 
     
    5661    } 
    5762 
    58  
    59     /** 
    60      * x(t+1) = Ax(t) + Bu(t) + C 
    61      * @param horizont 
    62      * @param C 
    63      * @return L: u(t) = L [ x(t) 1 ] 
    64      */ 
    65     mat L( const int horizont, const mat & C ) { 
    66         it_warning("Nijak se tam C neprojevuje!!!"); 
    67         int xdim = A.cols(); 
    68         int udim = B.cols(); 
    69         mat sqQ = sqrt(Q); 
    70         mat sqR = sqrt(R); 
    71         mat M0, M; 
    72         mat qrQ; 
    73         mat Lall, Lc1, Lc2, Lc3, Lx1, Lx2, Lu, L; 
    74         M0 = concat_vertical( 
    75                 concat_vertical( 
    76                     concat_horizontal( sqQ * B,   concat_horizontal( sqQ * A,             zeros(xdim, udim) ) ), 
    77                     concat_horizontal( sqR,       concat_horizontal( zeros( udim, xdim ), zeros(udim, udim) ) ) 
    78                 ), 
    79                 concat_horizontal( zeros( xdim, xdim + udim ) , sqQ * C) 
    80             ); 
    81  
    82         M = M0; 
    83         for (int h = horizont; h >= 0; h --) { 
    84             qr(M, Lall); 
    85  
    86             Lu  = Lall(0, udim-1, 0,         udim-1     ); 
    87             Lx1 = Lall(0, udim-1, udim,      udim+xdim-1); 
    88             Lc1 = Lall(0, udim-1, udim+xdim, udim+xdim  ); 
    89             Lx2 = Lall(udim, udim+xdim-1,  udim, udim+xdim-1); 
    90             Lc2 = Lall(udim, udim+xdim-1,  udim+xdim, udim+xdim); 
    91             Lc3 = Lall(udim+xdim, udim+xdim+xdim-1,  udim+xdim, udim+xdim); 
    92             M = concat_vertical( 
    93                     M0, 
    94                     concat_vertical( 
    95                         concat_horizontal( Lx2 * B, concat_horizontal( Lx2 * A, Lc2 ) ), 
    96                         concat_horizontal( zeros(xdim, xdim + udim), Lc3 ) 
    97                     ) 
    98                 ); 
    99         } 
    100         L = concat_horizontal( - inv(Lu) * Lx1, - inv(Lu) * Lc1); 
    101         return L; 
    102     } 
    10363    /** 
    10464     * x(t+1) = Ax(t) + Bu(t) 
     
    13494    } 
    13595 
     96        /* 
    13697    double maxDif( const mat & M1, const mat & M2 ) { 
    13798        return max(max(abs(M1 - M2), 1)); 
     
    150111            return false; 
    151112    } 
    152  
     113*/ 
    153114    bool isDiagonal(  const mat M ) { 
    154115        mat D = abs(M); 
     
    162123        return true; 
    163124    } 
     125         
    164126 
    165127    bool isPositiveDefinite( const mat M ) {