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

MATLAB Discussion :

mise en place d'un problème type moindre carrés [Débutant]


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut mise en place d'un problème type moindre carrés
    Bonjour tous,

    Comme mon titre l'indique j'ai un problème d'optimisation type moindre carrés:

    J'ai une courbe experimentale et je fais des simulations qui me donnent une courbe simulée. Je veux faire varier les parametres de simulation jusqu'à que les deux courbes soit pratiquement les mêmes et l'a j'en deduirai mais bon parametres de simulation.

    [voir piece jointe]



    j'utilise un algorithme (qui fonctionne tres bien pas de probleme de ce coté là) qui me minimise l'erreur entre le courbe simulée et la courbe expérimentale pour en deduire les parametres.

    Le problème que j'ai est le suivant:

    Je veux optimiser l'allure de la courbe seulement sans tenir compte du déphasage.
    En effet un des parametres de calcul induit un dephasage et influe sur la forme également.

    Actuellement lorsque j'optimise je considere que les deux courbes sont en phases et je fais varier les parametres, donc ce parametre devient quasi nul car sinon le fait de dephaser la simulation augmenterai l'erreur bien qu'il ameliorerai l'allure de la courbe

    Le soucis est que ce parametre est très influant sur l'allure de la courbe mais il ne varie pas dans mon optimisation car je l'ai bridé en disant au deux courbe d'etre en phase.


    ==> Ma question:

    Savez vous comment mettre en place une optimisation qui prend en compte que l'allure des courbe mais s'en ce soucier du dephasage?


    J'espere que vous pourrez m'aider car je dois rendre des resultats début de semaine prochaine et la je bloque vraiment.
    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Lors de l’optimisation je demande à l’algorithme de minimiser l’erreur entre les deux courbes donc ce dernier est obligé de ne pas ou peu déphaser la courbe de simulation pour minimiser l’erreur, le problème est que cela bride la valeur de la partie visqueuse car c’est elle qui représente ce déphasage.
    Le fait de brider cette partie visqueuse a une grande influence car cela n’autorise pas certaines modifications de formes de la courbe.


    Il faut donc à présent mettre en place un nouveau système d’optimisation en ne prenant en compte que la forme sans tenir compte du déphasage entre les deux courbes.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Si vous avez besoin de plus d'informations n'hésiter pas à me le signaler

    merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Salut 21Did,

    Tu pourrais nous monter comment tu appliques ta méthode des moindres carrées (le code).

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Salut merel, merci de prendre encore le tps de me repondre

    c'est à dire, quel est l'algorithme utilisé?

    ==> C'est un algorithme de Levenberg Marquardt mis en place où je fais mon stage et il comporte de nombreuses sécurités pour être sur de ne pas planter, il a été utilisé sur de nombreux cas donc je suis certains qu'il ne contient pas d'erreurs.

    Sinon concernant ma méthode le programme est très long (500lignes) car il y a de nombreux calculs intermédiaires mais j'ai pu vérifier que ma méthode fonctionne sur des cas où il n'y a pas de dephasages.


    ==> En fait le programme optimise une courbe par rapport à une courbe reference sans qu'il y ai déphasage entre les deux.

    Le probleme à present est que je non plus optimiser deu courbes entre elles mais seulement l'allure de ces courbes sans tenir en compte leur dephasage.

    Et c'est là que je ne vois pas comment faire dans le principe...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Sinon pour résumer mon problème:
    1°) J'ai deux courbes d'allure sinusoidale, l'une est une reference et l'autre est calculé en fonction d'un parametre
    2°) Je veux trouver le parametre qui me permet d'avoir deux courbes le plus similaire possible
    3°) Le probleme est que ces deux courbes sont déphasés donc la methode qui consiste à minimiser la différence des deux courbes ne fonctionne pas.
    4°) Le second probleme est que ce dephasage n'est pas quelque chose de fixe mais fonction du parametre à optimiser

    ==> Je cherche en fait dans un premier temps seulement un principe de resolution de type moindre carrés qui ne comparerait que des formes entre elles sans tenir compte de la position des deux courbes.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 40
    Points
    40
    Par défaut
    Bonjour, je comprend globalement le problème mais pas l'histoire du déphasage.

    Ton algorithme devrait te donner le set de paramètres permettant d'obtenir ta courbe référence, quel qu'elle soit. Peux tu donner ce que tu obtiens et ce que tu voudrais avoir?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Je dirais que mathématiquement tu essayes de résoudre un problème non réalisable. Les moindes carrés vont minimiser l'écart entre différents points deux par deux. Si tu as donc un déphasage entre tes points, l'équation mathématique en tiendra compte en minimisant cet écart.

    Après, d'un point de vue algorithmique, tu peux tromper ton équation. Essaye de calculer ton déphasage avant ta méthode des moindres carrés pour recaler les courbes. Une fois que le déphasage est nul, tu appliques tes moindres carrés puis tu appliques à nouveau ton déphasage dans l'autre sens.

    A ce moment là, ca devrait fonctionner.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Merel Voir le message
    Je dirais que mathématiquement tu essayes de résoudre un problème non réalisable. Les moindes carrés vont minimiser l'écart entre différents points deux par deux. Si tu as donc un déphasage entre tes points, l'équation mathématique en tiendra compte en minimisant cet écart.

    Après, d'un point de vue algorithmique, tu peux tromper ton équation. Essaye de calculer ton déphasage avant ta méthode des moindres carrés pour recaler les courbes. Une fois que le déphasage est nul, tu appliques tes moindres carrés puis tu appliques à nouveau ton déphasage dans l'autre sens.

    A ce moment là, ca devrait fonctionner.
    oui je vais essayer de faire un truc dans ce genre mais je ne sais pas trop comment m'y prendre car le dephasage depend du parametre à optimiser.
    C'est à dire que je dois trouver à chaque nouveau pas d'optimisation le dephasage et recaller ma courbe en fonction de cela pour chaque nouveau jet parametre.

    Je vais voir ce que je peux faire, si vous avez des exemples de problemes dans mon genre deja traité ca pourrait m'aider...

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Fiabulu Voir le message
    Bonjour, je comprend globalement le problème mais pas l'histoire du déphasage.

    Ton algorithme devrait te donner le set de paramètres permettant d'obtenir ta courbe référence, quel qu'elle soit. Peux tu donner ce que tu obtiens et ce que tu voudrais avoir?
    voici en piece jointe un exemple

    le dessin 1 represente le probleme, la figure rouge est la reference et en noir la courbe calculé

    il faut que j'arrive à decaler mon dessin noir pour chaque jeu de nouveaux parametre et le comparer au dessin rouge pour l'optimisation.

    le probleme est que ca va atre un peu dure à mettre en place je pense....

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Voici mes resultats dont je me sert pour l'optimisation:

    1°)Fonction reference:

    les ordonnées de cette fonction sont dans un vecteur {Yexp}

    2°)Fonction calculée

    les ordonnées de cette fonction sont dans {Y}

    Les calculs sont pour les mêmes temps (abscisses)

    ==> Actuellement mon erreur est determinée par la somme des composantes de {Yexp}-{Y}
    c'est à dire la différence entres deux points situés à la meme abscisse or moi ce n'est pas deux points à la meme abscisse qui l'interesse puisqu'il y a un dephasage

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    le dephasage depend du parametre à optimiser.
    en théorie ca ne devrait pas être le cas. Ou du moins pas directement. Ton déphasage est pris en compte pendant l'utilisation de tes moindres carrés pour minimiser la distance entre tes courbes. Donc oui, ton déphasage est pris en compte pour le calcul de distance.

    Par contre, si tu fais un recallage avant de faire tes moindres carrés, ton déphasage sera très petit et surement négligeable si les courbes se resemblent déjà fortement.


    1°)Fonction reference:

    les ordonnées de cette fonction sont dans un vecteur {Yexp}

    2°)Fonction calculée

    les ordonnées de cette fonction sont dans {Y}

    Les calculs sont pour les mêmes temps (abscisses)
    Si tes vecteurs Yexp et Y sont de la même grandeur, calculs tes MC non pas pour les mêmes temps en abscisse mais pour les mêmes indices de vecteur. Pas besoin dans ce cas là de calculer un déphasage...

    Si tes vecteurs n'ont pas la même taille (Yexp<Y), dans ce cas, il faut trouver quel indice de Yexp correspond au premier indice de Y pour calculer ton déphasage. Par contre, tu ne feras la méthode des MC que sur la longueur de Yexp. Inversement pour Yexp>Y

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    je crois que j'ai trouvé comment faire pour recaller le modele à chaque itération

    je vais super poser la courbe experimental à celle calculé et non le contraire comme je le faisait actuellement mais je ne superpose pas avec un critere de temps mais de valeur maximal.


    merci pour l'aide

    A+

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    je regarde tous cela et je te tiens au courant

    A+

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 40
    Points
    40
    Par défaut
    Oui je pensais à un truc dans le genre en regardant le schéma que tu a donné en pièce jointe:
    tu regarde un point particulier des deux courbes (par exemple le max) et grâce à cela tu les recale.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Fiabulu Voir le message
    Oui je pensais à un truc dans le genre en regardant le schéma que tu a donné en pièce jointe:
    tu regarde un point particulier des deux courbes (par exemple le max) et grâce à cela tu les recale.
    je suis en train d'effectuer cela et en effet ca va marcher si tous ce passe bien, merci tous!!!

    remarque: le seul probleme est qu'il faut que mon programme je le revise entierement à present car ca va engendrer des consequences malheureuse sur la suite de mes calculs....


    merci Fiabulu et merel

    A+

  17. #17
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    bonjour 21did21,

    Je suis actuellement en stage moi aussi et je galère pas mal avec mon programme.

    Comme toi, je dois faire une optimisation de plusieurs paramètres en utilisant la méthode des moindre carrés sur Matlab.

    Pourrais-tu me faire voir ton code pour que je puisse voir un peu ce quíl en est. Je devrais l´adapter bien sur mais étant plus que novice sur ce logiciel, ca me ferait un bon point de départ. Si tu ne veux pas le diffuser sur le forum, envoie le moi en mp si tu préfères.

    Je te remercie d´avance,

    À bientot.

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par doudy22 Voir le message
    bonjour 21did21,

    Je suis actuellement en stage moi aussi et je galère pas mal avec mon programme.

    Comme toi, je dois faire une optimisation de plusieurs paramètres en utilisant la méthode des moindre carrés sur Matlab.

    Pourrais-tu me faire voir ton code pour que je puisse voir un peu ce quíl en est. Je devrais l´adapter bien sur mais étant plus que novice sur ce logiciel, ca me ferait un bon point de départ. Si tu ne veux pas le diffuser sur le forum, envoie le moi en mp si tu préfères.

    Je te remercie d´avance,

    À bientot.
    salut,

    desolé j'ai pris un optimisateur tout pret finalement....
    (c'est plus robuste)

  19. #19
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Pour l'optimiseur Matlab, c'est fminsearch qui te faut. Attention à bien lui retourner le tableau des résidus bruts et pas seulement la RMSE

    Pour ta question de déphasage, je te suggère de passer tes deux fonctions en transformée de Fourrier, et de retourner à fminsearch uniquement les différences entre les puissances (abs) en ignorant les phases. Je ne suis pas certain à 100% que ça marche, mais dans des cas proches du tien, ça marche super bien.

    Si ça marche pas super, alors tu peux re-poster ici et je te donnerai une piste à suivre qui marchera à tous les coups, toujours en passant par la transformée de Fourrier.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/03/2007, 17h45
  2. Problème mise en place Apache avec mod_ssl
    Par Le fut dans le forum Apache
    Réponses: 3
    Dernier message: 19/12/2006, 15h04
  3. Problème de mise en place de datasource pour Hibernate
    Par K-Kaï dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 27/07/2006, 11h41
  4. Problème de mise en place de la log4j
    Par pitit777 dans le forum Logging
    Réponses: 2
    Dernier message: 28/03/2006, 16h17

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