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 :

Solver ODE pour systèmes automatiques MIMO non linéaires à "contrôle variable"


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut Solver ODE pour systèmes automatiques MIMO non linéaires à "contrôle variable"
    Bonjour,

    Je travaille sur un système, qui, simplifié au maximum (linéarisé) peut se mettre sous la forme :

    Je peux donc écrire une fonction matlab qui calcule la dérivée en fonction des autres paramètres

    Jusque là, tout va bien, on peut faire des simulation avec lsim.

    Maintenant, dans ma fonction, je remplace mon modèle linéaire par un modèle non linéaire, j'inclue des saturations actionneurs, et je veux faire des analyses sur ce modèles nécessitant des commandes bien spécifiques. La forme de ma fonction reste cependant la même :

    Je me suis donc dit chouette il existe ODE45 qui permet de résoudre ce type d'équations, je me penche donc dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [T,Y] = solver(odefun,tspan,y0)
    [T,Y] = solver(odefun,tspan,y0,options)
    [T,Y,TE,YE,IE] = solver(odefun,tspan,y0,options)
    sol = solver(odefun,[t0 tf],y0...)
    Et là blocage : il n'y a aucun solver parmis ceux-là qui me permette de spécifier la commande que je souhaite (qui n'est pas un simple step ni impulse). Du moins c'est l'impression que j'ai.

    J'en arrive à ma question : quelqu'un connaît-il un solveur qui prennent en compte des commandes tarabiscotées et des conditions initiales non nulles pour les états et les commandes et qui permettent donc de simuler un système "réel" complet ? Ou bien faut-il se le coltiner soi-même ?

    Je travaille sur Matlab.

    Cordialement,
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  2. #2
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    As tu envisagé l'utilisation de simulink?
    Cet outil est particulièrement adapté aux simulations temporelles que tu cherches à faire : modèle non linéaire, saturation des actionneurs, signal de commande... et tu peux choisir ton solveur.

  3. #3
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Bonjour,

    Oui, j'y ai pensé... mais ça ne me plaît pas

    Pour être plus sérieux (désolé si je raconte ma vie, mais ça va te permettre de comprendre pourquoi je préfèrerais rester en matlab), mon projet consiste à développer un outil d'analyse&synthèse des PA (pilotes automatiques) orientées normes... j'ai déjà développé toute une série d'outil en GUI matlab dans un environnement bien intégré qui permet à un utilisateur "lambda" de régler le PA d'une manière "simplifiée" sur des modèles linéarisés. L'utilisateur ne se préoccupe pas du modèle, il sait juste sur quel système il travaille car c'est lui qui l'a défini. L'outil s'occupe de mettre en condition le modèle pour effectuer les analyses. Je vois donc mal comment je pourrais m'y prendre pour intégrer un modèle simulink dans un gui développé en matlab... mais si c'est simple à faire, pourquoi pas. J'ai développé le gui à la main.

    Mais d'ailleurs c'est une question que je me suis posé : si on peut le faire en simulink, pourquoi on ne pourrait pas le faire en matlab ?

    Par ailleurs, la rapidité des calculs est un paramètre important. J'ai toujours eu l'impression que les calculs simulink et les affichages des résultats associés étaient toujours plus long... dans mon environnement unifié, les réglages, simulations et analyse des résultats se font actuellement "à la volée"... ce qui est un avantage considérable. Pour faire simple, avec cet outil, on peut effectuer une dizaine d'analyses et de configurations différents en 5 minutes... et avant, pour effectuer ces analyses... ils mettaient environ des semaines pour les faire.

    Tout bien réfléchi, je pense que si personne ne connaît de solveur type ODE45 (ou autre) prenant en compte des consignes, je vais le développer moi-même en m'inspirant des solveurs existants. Quelqu'un dans mon service a déjà fait un projet similaire (mais qui n'était pas complet pour certains aspects) : donc c'est faisable au pire. C'est juste que s'il existait déjà, je ne me prendrais pas la tête à le faire.

    Cordialement,

    [EDIT] Bon finalement je l'ai implémenté, ce n'est pas si dur que ça en fait étant donné que les méthodes sont offertes sur wikipedia. J'ai juste rajouté la prise en compte des commandes dans les équations.

    Il ne me reste plus qu'à l'utiliser... et donc faire la fonction (oui j'ai menti je n'ai pas encore écrit ma fameuse fonction dX = f(t,X,u) bouh c'est pas bien mais sur le principe, je l'ai, il faut juste le faire )

    Bref merci quand même.
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  4. #4
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    En effet j'imagine que tout ce que Simulink peut faire, Matlab le peut aussi. Le développement Simulink est toutefois bien plus rapide (généralement on n'a qu'à faire glisser des blocs depuis les librairies), plus intuitif et facile à reprendre grâce au visuel.
    On pourrait comparer les temps d’exécution d'une simulation temporelle simple Matlab et Simulink, Matlab gagnerait surement, mais ce qui coûte à nos boites est beaucoup plus le temps de réalisation que le temps d’exécution - ce qui est surement différent dans ton cas ou tes utilisateurs exécutent souvent ton code.
    Bref, bon courage pour ton implémentation!
    Florent

  5. #5
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 881
    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 881
    Points : 3 429
    Points
    3 429
    Par défaut
    je confirme, simulink est très adapté à ce genre de probleme
    et pour piloter et retrouver ses résultats sous un gui, pas de soucis

  6. #6
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Tu as très bien résumé FLB. L'objectif final est d'offrir la possibilité de faire une étude très poussée d'un réglage multi-objectifs sous contraintes, et pas seulement une simple simulation : la simulation n'est pour moi qu'un "pauvre outil de base". Il faut juste que celle-ci soit la plus rapide et exacte possible pour faciliter la suite.

    De plus, sous matlab, j'utilise toute la puissance de l'orienté objet (ou du moins j'ai l'impression d'en profiter en grande partie), que je me vois mal utiliser sous simulink...
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

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

Discussions similaires

  1. [MySQL] probleme de add1 et add2 pour systéme lu et non lu
    Par je_suis_tres_gentil dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/04/2009, 17h15
  2. Solveur de systèmes d'équations non linéaires
    Par teska dans le forum Langage
    Réponses: 5
    Dernier message: 11/12/2008, 18h07
  3. Réponses: 0
    Dernier message: 01/10/2008, 16h14
  4. Réponses: 1
    Dernier message: 14/02/2007, 12h12

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