Overview
Comment: | Added "test" parameter to call to qp_mu. (Adrian's QP interior point alg.) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
e495f1f8c5f697c3a0b53895c77bdc28 |
User & Date: | gawthrop@users.sourceforge.net on 2002-11-04 23:41:41 |
Other Links: | branch diff | manifest | tags |
Context
2002-11-06
| ||
21:09:45 | New operational amplifier component check-in: 043231dc86 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
2002-11-04
| ||
23:41:41 | Added "test" parameter to call to qp_mu. (Adrian's QP interior point alg.) check-in: e495f1f8c5 user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
23:40:04 | Prunes inf and -inf from constraint list. check-in: 71ec8badbf user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Modified mttroot/mtt/lib/control/PPP/ppp_qp.m from [7d027370b3] to [fa82338072].
|
| | | 1 2 3 4 5 6 7 8 | function [u,U,iterations] = ppp_qp (x,W,J_uu,J_ux,J_uw,Us0,Gamma,gamma,mu,test) ## usage: [u,U] = ppp_qp (x,W,J_uu,J_ux,J_uw,Gamma,gamma) ## INPUTS: ## x: system state ## W: Setpoint vector ## J_uu,J_ux,J_uw: Cost derivatives (see ppp_lin) ## Us0: value of U* at tau=0 (see ppp_lin) |
︙ | ︙ | |||
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | ## Copyright (C) 1999 by Peter J. Gawthrop ## $Id$ if nargin<9 mu = 0 endif ## Check the sizes n_x = length(x); [n_U,m_U] = size(J_uu); if n_U != m_U error("J_uu must be square"); endif [n,m] = size(J_ux); if (n != n_U)||(m != n_x) error("J_ux should be %ix%i not %ix%i",n_U,n_x,n,m); endif if length(gamma)>0 # Constraints exist: do the QP algorithm ## QP solution for weights U | > > > > | | 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 | ## Copyright (C) 1999 by Peter J. Gawthrop ## $Id$ if nargin<9 mu = 0 endif if nargin<10 test=0; endif ## Check the sizes n_x = length(x); [n_U,m_U] = size(J_uu); if n_U != m_U error("J_uu must be square"); endif [n,m] = size(J_ux); if (n != n_U)||(m != n_x) error("J_ux should be %ix%i not %ix%i",n_U,n_x,n,m); endif if length(gamma)>0 # Constraints exist: do the QP algorithm ## QP solution for weights U [U,iterations] = qp_mu(J_uu,(J_ux*x - J_uw*W),Gamma,gamma,mu,[],[],0,test); ##U = qp(J_uu,(J_ux*x - J_uw*W),Gamma,gamma); # QP solution for weights U ##U = pd_lcp04(J_uu,(J_ux*x - J_uw*W),Gamma,gamma); # QP solution for weights U u = Us0*U; # Control signal else # Do the unconstrained solution ## Compute the open-loop gains iterations = 0; |
︙ | ︙ |
Modified mttroot/mtt/lib/control/PPP/ppp_qp_sim.m from [986b2d0d8d] to [9da3cf8d4e].
1 2 3 | 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, \ | | | | > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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,test,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 ## Copyright (C) 1999 by Peter J. Gawthrop ## $Id$ if nargin<19 # No intermittent control Delta_ol = 0; endif if nargin<20 # Mu mu = 0; endif if nargin<21 test=0 endif if nargin<22 # No movie movie = 0; endif test = test ## Check some sizes [n_x,n_u,n_y] = abcddim(A,B,C,D); [n_x0,m_x0] = size(x_0); if (n_x0 != n_x)||(m_x0 != 1) error(sprintf("Initial state x_0 must be %ix1 not %ix%i",n_x,n_x0,m_x0)); endif |
︙ | ︙ | |||
109 110 111 112 113 114 115 | Gamma = [Gamma_u; Gamma_y]; gamma = [gamma_u; gamma_y]; ## Current Setpoint value w = W(:,floor(t/dt)+1); ## Compute U(t) via QP optimisation | | | 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | Gamma = [Gamma_u; Gamma_y]; gamma = [gamma_u; gamma_y]; ## Current Setpoint value w = W(:,floor(t/dt)+1); ## Compute U(t) via QP optimisation [uu, U, iterations] = ppp_qp (x,w,J_uu,J_ux,J_uw,Us0,Gamma,gamma,mu,test); # 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); |
︙ | ︙ |