Overview
| Comment: | Replaced Euler integration by exact solution via ppp_ystar. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | origin/master | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
40caf743c8552fc7c1b44459d2389b73 |
| User & Date: | gawthrop@users.sourceforge.net on 2002-08-27 12:33:40.000 |
| Other Links: | branch diff | manifest | tags |
Context
|
2002-08-27
| ||
| 16:09:01 | Added port_name to error message when multiple bonds are near a port. check-in: c7b42b1371 user: geraint@users.sourceforge.net tags: origin/master, trunk | |
| 12:33:40 | Replaced Euler integration by exact solution via ppp_ystar. check-in: 40caf743c8 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
| 10:48:29 | Corrected documentation check-in: f60511b828 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/lib/control/PPP/ppp_qp_sim.m
from [442bf78425]
to [3484a100c1].
|
| | | 1 2 3 4 5 6 7 8 | function [T,y,u,X,Iterations] = ppp_qp_sim (A,B,C,D,A_u,A_w,t,Q, Tau_u,Min_u,Max_u,Order_u, Tau_y,Min_y,Max_y,Order_y, W,x_0,Delta_ol,mu,movie) ## usage: [T,y,u,J] = ppp_qp_sim (A,B,C,D,A_u,A_w,t,Q, Tau_u,Min_u,Max_u,Order_u, Tau_y,Min_y,Max_y,Order_y, W,x_0,movie) ## Needs documentation - see ppp_ex11 for example of use. ## OUTPUTS ## T: Time vector ## y,u,J output, input and cost |
| ︙ | ︙ | |||
53 54 55 56 57 58 59 | ## Set up various time vectors dt = t(2)-t(1); # Time increment ## Make sure Delta_ol is multiple of dt Delta_ol = floor(Delta_ol/dt)*dt; if Delta_ol>0 # Intermittent control | | | < > > > | | | | | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
## Set up various time vectors
dt = t(2)-t(1); # Time increment
## Make sure Delta_ol is multiple of dt
Delta_ol = floor(Delta_ol/dt)*dt;
if Delta_ol>0 # Intermittent control
T_ol = 0:dt:Delta_ol; # Create the open-loop time vector
else
T_ol = [0,dt];
Delta_ol = dt;
endif
T_cl = 0:Delta_ol:t(length(t))-Delta_ol; # Closed-loop time vector
n_Tcl = length(T_cl);
n_ol = length(T_ol);
Ustar_ol = ppp_ustar(A_u,n_u,T_ol); # U* in the open-loop interval
[n,m] = size(Ustar_ol);
n_U = m/length(T_ol); # Determine size of each Ustar
# ## Discrete-time system
# csys = ss2sys(A,B,C,D);
# dsys = c2d(csys,dt);
# [Ad, Bd] = sys2ss(dsys)
x = x_0; # Initialise state
## Initialise the saved variable arrays
X = [];
u = [];
Iterations = [];
|
| ︙ | ︙ | |||
91 92 93 94 95 96 97 |
## Output constraints
[Gamma_y,gamma_y] = ppp_output_constraint (A,B,C,D,x,A_u,Tau_y,Min_y,Max_y,Order_y);
## Composite constraints
Gamma = [Gamma_u; Gamma_y];
gamma = [gamma_u; gamma_y];
| | | | < < | < < < < | < | | | < < < < < < | > > | | 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
## Output constraints
[Gamma_y,gamma_y] = ppp_output_constraint (A,B,C,D,x,A_u,Tau_y,Min_y,Max_y,Order_y);
## Composite constraints
Gamma = [Gamma_u; Gamma_y];
gamma = [gamma_u; gamma_y];
## Compute U(t) via QP optimisation
[uu, U, iterations] = ppp_qp (x,W,J_uu,J_ux,J_uw,Us0,Gamma,gamma,mu); # Compute U
## Compute the cost (not necessary but maybe interesting)
# [J_t] = ppp_cost (U,x,W,J_uu,J_ux,J_uw,J_xx,J_xw,J_ww); # cost
# J = [J J_t];
## OL Simulation (exact)
[ys,us,xs] = ppp_ystar (A,B,C,D,x,A_u,U,T_ol);
## Save values (discarding final ones)
X = [X xs(:,1:n_ol-1)]; # save state
u = [u us(:,1:n_ol-1)]; # save input
Iterations = [Iterations iterations*ones(1,n_ol-1)];
## Final values
x = xs(:,n_ol); # Final state
ut = us(:,n_ol); # Final control
endfor
## Save the last values
X = [X x]; # Save state
u = [u ut]; # Save input
Iterations = [Iterations iterations]; # Save iteration count
|
| ︙ | ︙ |