Overview
Comment: | Replaced Euler integration by exact solution via ppp_ystar. |
---|---|
Downloads: | Tarball | ZIP archive | SQL 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 |
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 |
︙ | ︙ |