IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Simulink Discussion :

Algorithme d'optimisation online par gradient


Sujet :

Simulink

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut Algorithme d'optimisation online par gradient
    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.
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    concernant ton 2ème point :
    - ZOH ne permet pas de mettre une valeur initiale
    tu dois confondre avec 1/z ou memory
    - tu peut utiliser le bloc IC pour cela

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut
    Merci pour ton aide.
    Par contre, je n'arrive toujours pas à faire fonctionner mon modèle.
    J'ai réglé l'échantillonnage à 1s cette fois à partir des blocs Unit Delay et définit également la condition initiale de mon signal x à 10.
    Voici le message d'erreur que j'obtiens :

    Nom : erreur.gif
Affichages : 1084
Taille : 19,5 Ko

    J'ai mis également la dernière version du modèle simulink en copie.

    online_optimization.zip

    Est-ce que tu aurais d'autres idées pour corriger mon modèle afin de pouvoir obtenir la simulation ?

    MErci pour ton aide.

  4. #4
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    essaye en rajoutant un memory ou un 1/z sur le signal qui reboucle la sortie de ton bloc optimisation sur la 1ere entrée du même bloc (algebric loop)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut
    Je n'ai pas bien compris.
    Penses-tu qu'il faille mettre ce memory à la place du ZOH ?
    En tout cas, je n'arrive tjs pas à simuler.
    J'ai mis le code en copie.
    Le modèle étant très petit, je serais bien interessé pour que tu jettes un coup d'oeil dessus pour voir si tu arrives à simuler.
    J'ai justement essayé de faire un modèle tout simple au départ pour arriver à voir si j'arrive à faire une optimisation on-line toute simple dans un premier temps.

    Merci pour ton aide.

  6. #6
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    Citation Envoyé par bendesarts Voir le message
    Penses-tu qu'il faille mettre ce memory à la place du ZOH ?
    non !!
    pas à la place car les 2 blocs ne font pas la même chose
    ici je te conseille un memory pour casser la boucle algébrique (ce que ne fait pas une bloc ZOH)
    et je te conseille de le mettre sur le fils qui reboucle

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut
    Cà ne fonctionne tjs pas.
    Voici le message d'erreur que j'ai.

    Nom : error.gif
Affichages : 997
Taille : 19,7 Ko

  8. #8
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    bon l'erreur a évoluée
    avant tu avais une boucle algébrique, maintenant un problème d'accès a des fichier temporaire
    efface le répertoire qui est en accès refusé et ré essaye

    Fabien

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut
    Après effacement du répertoire temporaire (qui vient de je ne sais pas où d'ailleurs), j'ai à nouveau le problème de boucles algébriques.
    Aussi, çà serait super si tu pouvais jeter un oeil au modèle sinon le "troubleshooting" pourrait être long. Au passage, le modèle est très petit.
    Je te remercie pour ton aide.

  10. #10
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    Citation Envoyé par bendesarts Voir le message
    Après effacement du répertoire temporaire (qui vient de je ne sais pas où d'ailleurs),
    c'est ta matlab function qui est compilée ...

    bon j'ai regarder ton simu rapidement
    déjà tu as 2 boucles algébrique (sur xk et yk)
    ton calcul de gradient ne peux pas s'appuyer sur le x (et le y qui va avec) qu'il n'a pas encore calculé !!
    -> tu peux mettre des 1/z sur chaque signal (à voir, il faut peut être repenser ton truc aussi ...)

    sinon dans ton gradient tu n'as rien pour empêcher la division par 0 (yk - yk-1) / (xk - xk-1)
    qu'est ce qui garanti que xk ~= xk-1 ??
    en tout cas c'est ce qui se passe si je met un 1/z sur les 2 fils entrant dans online optimization

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut
    Super. Merci.
    En effet, ma récurrence avait quelques soucis et provoquait des boucles algébriques.
    En rajoutant des retards (1/z) sur mes deux retours, l'algo permet bien le calcul du gradient numérique puis de l'algorithme du gradient.
    Le programme qui fonctionne est en copie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/03/2012, 11h29
  2. µC 8 bit => optimisation multiplication par 2.833
    Par Emcy dans le forum Mathématiques
    Réponses: 29
    Dernier message: 28/11/2007, 10h24
  3. Optimisation (descente de gradient)/Diagramme de Voronoi
    Par DarkenRahl dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 26/03/2007, 17h18
  4. Algorithme d'optimisation par colonie de fourmis
    Par floopy dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 08/11/2006, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo