Bonjour,
Je cherche à réaliser une optimisation online (par un algorithme du gradient) d'un système dynamique.
Pour celà, je commence sur un cas simple. Il s'agit de déterminer le minimum d'une fonction y=f(x)=x^2.
La difficulté est de faire cette optimisation online c'est-à-dire dans une boucle de régulation constituée de signaux dépendant du temps.
Pour faciliter la compréhension, voici la boucle d'optimisation que je cherche à réaliser :
Mes points bloquants sont les suivants :
1) Calcul du gradient numérique
Sachant que la fonction à minimiser est donnée sous la forme d'un signal, il est seulement possible d'obtenir le gradient de la fonction que de manière numérique.
Pour ce faire: dy/dx = gk = (yk+1 - yk)/(xk+1 - xk)
Or pour calculer le signal x au moment k soit xk, je dois le calculer par xk = xk-1 - alpha*gk
Comment est-ce que je peux faire sachant que pour calculer gk, j'ai besoin du signal x au moment d'après soit xk+1 ?
2) Initialisation de la valeur de départ
Où est-ce que je peux initialiser la valeur de départ du signal x ?
Dans certains programmes, la fonction ZOH (Zero Order Hold) permet de rentrer une valeur initiale mais dans mon cas je ne vois pas où.
Je vous remercie pour vos conseils.
PS: Le modèle simulink est en pièce jointe dans un zip car sinon il me semble que l'on ne peut envoyer de modèles.
Partager