Overview
| Comment: | Split up outtput into controlled and constrained |
|---|---|
| Downloads: | Tarball | ZIP 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.000 |
| 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 \
|
| ︙ | ︙ |