Bonjour,
Je souhaiterais réaliser un algorithme de commande prédictive de type Dynamic Matrix command.
Après m'être documenté sur internet j'ai vu que si je souhaitais réaliser par exemple un algorithme avec un horizon de prédiction de t+10 et une commande allant jusqu'à t+5, il me faudrait une première matrice dynamique G valant:
y0 0 0 0 0
y1 y0 0 0 0
y2 y1 y0 0 0
y3 y2 y1 y0 0
y4 y3 y2 y1 y0
...
y9 y8 y7 y6 y5
Avec yn étant la réponse indicielle à l'instant n
Afin de réaliser cette matrice, j'ai écrit le script suivant:
Puis, une fois cette matrice obtenue, il me faudrait une matrice de commande s'obtenant grâce à la formule suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 //Algorithme de commande prédictive DMC //Horizon de prediction = 10 //Horizon de commande = 5 //Création de la matrice G de dimension 10*5 G=zeros(10,5); for i=1:10 G(i,1)=y(i); if i >1 then j=5; while j>=2 G(i,j)=G((i-1),(j-1)); j=j-1; end end end
K=(G^T G+λI)^-1 G^T
Mon problème vient du fait que je ne sais pas comment créer la matrice λI.
Il me semble que celle ci contient des coefficients de pondérations et qu'elle détermine la dynamique du système en boucle fermé mais je ne sais pas quelle taille celle ci doit faire et surtout, comment choisir ses valeurs.
Pourriez vous m'expliquer ?
Merci d'avance pour votre aide
Partager