Overview
Comment: | Split up outtput into controlled and constrained |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
15390c620e61e45b94a31322c7b07d76 |
User & Date: | gawthrop@users.sourceforge.net on 2003-11-02 23:34:57 |
Other Links: | branch diff | manifest | tags |
Context
2003-11-03
| ||
01:07:16 | Previous version wrong for x_0 ne 0; this version now correct check-in: a08be0e007 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
2003-11-02
| ||
23:34:57 | Split up outtput into controlled and constrained check-in: 15390c620e user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
21:21:51 | More parameters in p_c and p_o check-in: 7079cabfcc user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/lib/control/PPP/ppp_lin_run.m from [1a9ee50b74] to [c8c82444b3].
︙ | ︙ | |||
17 18 19 20 21 22 23 24 25 26 | ##Defaults if nargin<1 # Default name to dir name names = split(pwd,"/"); [n_name,m_name] = size(names); Name = deblank(names(n_name,:)); endif ## System sys = mtt2sys(Name); # Create system | > > > > > > > > | > > > > > > > > > > > > > > | > < < < < < < < | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | ##Defaults if nargin<1 # Default name to dir name names = split(pwd,"/"); [n_name,m_name] = size(names); Name = deblank(names(n_name,:)); endif if nargin<6 p_c.N = 50; endif if nargin<7 p_o.sigma = 1e-1; endif ## System sys = mtt2sys(Name); # Create system [A,B,C_0,D_0] = sys2ss(sys); # SS form ## Extract matrices for controlled and constrained outputs. if !struct_contains(p_c,"I_0") # Indices for controlled outputs p_c.I_0 = 1:n_y endif if !struct_contains(p_c,"I_1") # Indices for constarined outputs p_c.I_1 = 1:n_y endif C = C_0(p_c.I_0,:) C_c = C_0(p_c.I_1,:); D = D_0(p_c.I_0,:) D_c = D_0(p_c.I_1,:); [n_x, n_u, n_y] = abcddim(A,B,C,D); # Dimensions [n_x, n_u, n_y_c] = abcddim(A,B,C_c,D_c); # Dimensions if nargin<2 Simulate = 1; endif if nargin<3 ControlType = 2; endif if nargin<4 w = ones(n_y,1);; endif if nargin<5 x_0 = zeros(n_x,1); endif if !struct_contains(p_c,"delta_ol") p_c.delta_ol = 0.5; # OL sample interval endif if !struct_contains(p_c,"T") p_c.T = 10; # Last time point. |
︙ | ︙ | |||
132 133 134 135 136 137 138 | if !struct_contains(p_o,"method") ##p_o.method = "continuous"; p_o.method = "intermittent"; endif | < | 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | if !struct_contains(p_o,"method") ##p_o.method = "continuous"; p_o.method = "intermittent"; endif ## Check w. [n_w,m_w] = size(w); if ( (n_w!=n_y) || (m_w!=1) ) error(sprintf("ppp_lin_run: w must a column vector with %i elements",n_y)); endif ## Initialise |
︙ | ︙ | |||
172 173 174 175 176 177 178 | ##Sanity check A_u [p_c.n_U,M_u] = size(p_c.A_u); if (p_c.n_U!=M_u) error("A_u must be square"); endif ## Checks | < | < | 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | ##Sanity check A_u [p_c.n_U,M_u] = size(p_c.A_u); if (p_c.n_U!=M_u) error("A_u must be square"); endif ## Checks cl_poles = eig(A - B*k_x) t_max = 1/min(abs(cl_poles)) t_min = 1/max(abs(cl_poles)) endif ## Initial control U U = zeros(p_c.n_U,1) ## Short sample interval dt = p_c.delta_ol/p_c.N; ## Observer design G = eye(n_x); # State noise gain sigma_x = eye(n_x); # State noise variance |
︙ | ︙ | |||
277 278 279 280 281 282 283 | else ## Input constraints [Gamma_u, gamma_u] = \ ppp_input_constraints(p_c.A_u,p_c.Tau_u,p_c.Min_u,p_c.Max_u); ## Output constraints [Gamma_y,gamma_y] = \ | | | 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 | else ## Input constraints [Gamma_u, gamma_u] = \ ppp_input_constraints(p_c.A_u,p_c.Tau_u,p_c.Min_u,p_c.Max_u); ## Output constraints [Gamma_y,gamma_y] = \ ppp_output_constraints(A,B,C_c,D_c,x_est,p_c.A_u,\ p_c.Tau_y,p_c.Min_y,p_c.Max_y); ## Composite constraints - t=0 Gamma = [Gamma_u; Gamma_y]; gamma = [gamma_u; gamma_y]; [u_qp,U] = ppp_qp \ |
︙ | ︙ |