## Figures.m ## Makes figures for the rc_PPP exasmple. ## $Log$ ## Revision 1.2 2000/05/17 17:02:58 peterg ## Fixed documentation ## ## Revision 1.1 2000/05/17 09:14:37 peterg ## Initial revision ## system_name = "rcPPP"; ## Uncomment the following the first time ## (Or do ./Make rcPPP in this directory) ## MTT stuff for the system simulation ##system("Make rcPPP"); # ## System info par = rcPPP_numpar; simpar = rcPPP_simpar; x_0 = rcPPP_state(par); # ## Set up the input # t = [0:simpar.dt:simpar.last]; # A_w = 0; # A_u = ppp_aug(A_w,laguerre_matrix(1,2.0)) # Specify basis functions: constant & exp(-t/T) # u = ppp_ustar(A_u,1,t,0,0); # ## Simulate the system # tick=time; # [y,x] = rcPPP_sim(x_0,par,simpar,u); # Elapsed = time-tick # plot(t,y) ## Sensitivity system simulation parameters simpars = srcPPP_simpar; sympars = srcPPP_sympar; pars = srcPPP_numpar; x_0s = srcPPP_state(pars); t = [0:simpars.dt:simpars.last]; A_w = 0; A_u = ppp_aug(A_w,laguerre_matrix(1,2.0)) # Specify basis functions: constant & exp(-t/T) u = ppp_ustar(A_u,1,t,0,0); ## Setup the indices of the adjustable stuff i_ppp = [sympars.ppp_1, sympars.ppp_1s sympars.ppp_2, sympars.ppp_2s]; # PPP params i_par = [sympars.x_0, sympars.x_0s sympars.r, sympars.rs]; # State and r component ## Simulate the sensitivity system sensitivities = [i_ppp(:,2); i_par(:,2)] u = ppp_ustar(A_u,1,t,0,0); tick=time; [y,ys,x] = srcPPP_ssim(x_0s,pars,simpars,u,sensitivities); Elapsed = time-tick plot(t,y,t,ys); ### PPP parameters tau = [0.9:0.01:1]; # Optimisation interval t_ol = [0:0.01:0.2]; # Open-loop interval N = 10; # Number of open-loop intervals in simulation w = 1; # Setpoint w_s = w*ones(10,1); # The setpoint witnin the horizon ## Linear system n_Tau = round(simpars.last/simpars.dt); dtau = simpars.dt; Tau = [0:n_Tau-1]'*dtau; [n_tau,n_w] = size(w_s); tau = Tau(n_Tau-n_tau+1:n_Tau) [A,B,C,D] = rcPPP_sm(par); Q = 1; w = 1; ppp_lin_plot (A,B(:,1),C(1,:),D(1,1),A_u,A_w,tau',Q,w); psfig("rcPPP_lin"); ## Simulate non-linear PPP (on this linear system) extras.U_initial = "zero"; extras.U_next = "continuation"; extras.criterion = 1e-5; extras.max_iterations = 10; extras.alpha = 0.1; extras.verbose = 0; extras.v = 1e-5; ## -- with no optimisation using linear PPP with continuation extras.U_initial = "linear"; extras.U_next = "continuation"; extras.criterion = 1e-5; extras.max_iterations = 0; [y_c,x,u_c,t,U,U_c,U_l] = ppp_nlin_sim (system_name,i_ppp,i_par,A_u,w_s,N,extras); ## -- with no optimisation using linear PPP at each step extras.U_initial = "linear"; extras.U_next = "linear"; extras.criterion = 1e-5; extras.max_iterations = 0; [y_l,x,u_l,t,U,U_c,U_l] = ppp_nlin_sim (system_name,i_ppp,i_par,A_u,w_s,N,extras); ## -- with optimisation using nonlinear PPP with continuation extras.U_initial = "zero"; extras.U_next = "continuation"; extras.criterion = 1e-5; extras.max_iterations = 100; [y,x,u,t,U,U_c,U_l] = ppp_nlin_sim (system_name,i_ppp,i_par,A_u,w_s,N,extras); ## Plots title(""); ## U, U_c and U_l I = [1:N]'; IU1 = [I U(:,1)]; IU1_c = [I U_c(:,1)]; IU1_l = [I U_l(:,1)]; gset grid; xlabel "Interval" gplot IU1 title "U_1", IU1_c title "U_c1", IU1_l title "U_l1" psfig("rcPPP_U1"); IU2 = [I U(:,2)]; IU2_c = [I U_c(:,2)]; IU2_l = [I U_l(:,2)]; gset grid; xlabel "Interval " gplot IU2 title "U_2", IU2_c title "U_c2", IU2_l title "U_l2" psfig("rcPPP_U2"); ## y & u gset grid; xlabel "Time (sec)" ty = [t y] ; tu = [t u]; gplot ty title "Output", tu title "Input" psfig("rcPPP_yu"); gset grid; xlabel "Time (sec)" ty_c = [t y_c] ; ty_l = [t y_l] ; ty = [t y] ; tu = [t u]; gplot ty_c title "Continuation", ty_l title "Linear", ty title "Optimisation" psfig("rcPPP_ylco");