Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2020
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. function [px,py,psi,delta,E,J,lambda] = mpccar(N,kmax,P,Q,R,x0)
  2. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  3. % - Bemenetek:
  4. % N: horizont hossza (skalár)
  5. % kmax: horizontok száma (skalár)
  6. % P,Q,R: súlyozó mátrixok (P és Q 4*4-es mátrix, R skalár)
  7. % x0: első horizont kezdeti értéke (4*1 vektor)
  8. %
  9. % - Kimenetek:
  10. % px: x pozíció inercia rendszerben (kmax*1 vektor)
  11. % py: y pozíció inercia rendszerben (kmax*1 vektor)
  12. % psi: orientáció (kmax*1 vektor)
  13. % delta: kormányzási szög (kmax*1 vektor)
  14. % E: hiba-állapotvektor (kmax*4 mátrix)
  15. % J: költség (kmax*1 vektor)
  16. % lambda: sajátértékek (kmax*4 mátrix)
  17. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  18.  
  19. params;
  20. m = size(Q,1);
  21.  
  22. % 1) Diszkrétidejű szakasz:
  23. A = Acar;
  24. B = Bcar;
  25.  
  26. % 2) F, G, Rh, Qh mátrixok:
  27. F = [];
  28. G = [];
  29. Rh = [];
  30. Qh = [];
  31. for i = 1:N
  32. F = [F; A^i];
  33. Grow = [];
  34. for j = i-1:-1:0
  35. Grow = [Grow A^j*B];
  36. end
  37. for j = 1:N-i
  38. Grow = [Grow zeros(size(B))];
  39. end
  40. G = [G; Grow];
  41. Rh = blkdiag(Rh, R); %repmat([Rh R]);
  42. Qh = blkdiag(Qh, Q); %repmat([Qh Q]);
  43. end
  44.  
  45. % 3) Gamma, Phi, Psi mátrixok és KN vektor:
  46. Psi = F'*Qh*F + Q;
  47. Gamma = G'*Qh*G + Rh;
  48. Phi = G'*Qh*F;
  49. KN = [eye(m) zeros(m, (N-1)*m)] * Psi\Phi;
  50.  
  51. % 4) MPC algoritmus:
  52. for k = 1:kmax
  53.  
  54. % 4a) Optimális beavatkozó jel (vektor)
  55. [uopt,~,~,~] = ...
  56. quadprog(2*Gamma,2*Phi);
  57. % 4b) Zárt kör sajátértékei (A - B*KN)
  58. [V,D] = eig(A-B*KN);
  59. % 4c) Aktuális költség
  60. % 4d) Állapotok mentése és frissítése (első beavatkozás alkalmazása)
  61.  
  62. end
  63.  
  64. % 5) Kimenetek
  65. % px = ??
  66. % py = ??
  67. % pyi = ??
  68. % delta = ??
  69.  
  70. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement