Identification paramétrique avec la méthode du gradient
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Identification paramétrique avec la méthode du gradient



  1. #1
    invite1c4eae30

    Identification paramétrique avec la méthode du gradient


    ------

    Bonjour,

    J'aurais besoin d'un petit coup de pouce pour appliquer la méthode du gradient conjugué (enfin la méthode du gradient dans un premier cas déjà) à mon cas. J'ai essayé d'appliquer cette méthode à mon problème de minimisation d'une fonction coût mais je n'obtiens pas les résultats attendus. En même temps je n'ai jamais eu de cours sur les techniques d'optimisations et je m'en remet donc à vous pour analyser mes éventuelles erreurs.

    Le problème physique et le suivant : j'ai des données de mesure dans le domaine fréquentiel (Amplitude et phase en fonction de la fréquence). Je sais que mon système est un système du deuxième ordre avec une fonction de transfert du type :


    Mon but sera de déterminer les paramètres p6, p7 et p2. Il s'agit donc d'une identification paramétrique basée sur la méthode des gradients.

    Il faut donc trouver ces paramètres tels que l'écart quadratique entre l'amplitude et la phase du système réel et l'amplitude et la phase du système théorique H(s) soit minimal. Ainsi on aura les paramètres p2, p6, p7.

    La fonction coût à minimiser peut donc se mettre de la forme suivante :


    le vecteur paramètre à déterminer est le suivant :

    avec H(jw,p) la fonction de transfert calculée à partir du modèle pour les paramètres p2, p6 et p7, l'amplitude de la fonction de transfert expérimentale à la fréquence i, la phase expérimentale à la fréquence i. On somme donc toutes les contributions pour tous les points discrets i.

    Le gradient de cette fonction s'écrit :


    avec



    Ces calculs devraient être bons, ils sont issus d'un article scientifique dont le but est de faire la même chose que moi. J'ai par ailleurs reconduits les calculs qui mènent à la fonction coût et au gradient de ce dernier et ça devrait être tout bon. Le problème est maintenant d'implémenter en pratique l'algorithme du gradient conjugué pour ce cas (ceci n'est plus détaillé dans l'article scientifique, seuls les résultats sont ensuite présentés :/).

    J'ai programmé un premier algorithme test sous matlab pour avoir si j'arrive à sortir les bonnes valeur p2, p6, p7. Je l'applique donc à cas un cas ou je connais les réels valeurs inconnues pour vérifier que ça marche.

    Je procède de la manière suivante :

    Je fixe un premier vecteur solution initial (pas trop loin de la vraie solution pour essayer) :

    Je met à jour ensuite la valeur du vecteur inconnu de la manière suivante, à chaque itération l :


    Je sais qu'il existe des manières de bien choisir la valeur du pas de descente p pour assurer une rapide convergence, mais pour essayer je prend un valeur de p suffisamment faible.

    Lorsque j'exécute pour programme, les valeurs du vecteur p inconnu successifs semblent faire n'importe quoi et diverger. Bref j'ai donc du rater quelque chose. Avez-vous une idée de ce qui ne va pas ?

    Merci.

    PS : lorsque j'exécute un algorithme en utilisant la fonction fminsearch pour minimiser la même fonction cout P, j'arrive bien à converger vers la bonne valeur du vecteur p inconnu. Cette fonction coût est donc bien définie. Le problème est qu'il faut que j'implémente quelque chose de facilement transposable dans un autre code et il m'est donc interdit d'utiliser fminsearch.

    -----

  2. #2
    invite1c4eae30

    Re : Identification paramétrique avec la méthode du gradient

    Pour essayer de cerner le problème, j'ai fixé deux paramètres et j'ai essayé d'uniquement d'approcher un seul paramètre . Voici l'évolution de la fonction coût en fonction du nombre d'itération :

    cout.png

    La fonction coût passe bien par un minimum qui est atteint pour le bon paramètre que je cherche à déterminer. Néanmoins on voit que l'algorithme continue et que la fonction coût augmente après.

    J'ai aussi tracé la norme du gradient pour voir comment il se comporte lorsque le nombre d'itérations augmente :

    grad.png

    Et là on remarque des anomalies. Déjà le gradient de la fonction coût est toujours positif alors qu'il devrait s'approcher de plus en plus de zéro de manière à ce que ma valeur du inconnue converge non ? Comment régler le problème ? :/

Discussions similaires

  1. Méthode du gradient conjuguée pour Ax=b
    Par invite00c73359 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 01/12/2012, 02h48
  2. MATLAB: méthode de Newton, ou du gradient, (ou autre) pour une fonction à plusieurs variables
    Par invitea29b3af3 dans le forum Programmation et langages, Algorithmique
    Réponses: 15
    Dernier message: 18/10/2011, 23h04
  3. Implémentation de la méthode du gradient conjugué
    Par invitedae33d52 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 03/02/2010, 10h31
  4. Identification paramétrique
    Par invite0084ae4b dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 31/12/2006, 10h10
  5. valeur max (méthode gradient)
    Par invite3569df15 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 09/07/2005, 23h19