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 :

Précision/pas de temps


Sujet :

Simulink

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur calculs et simulations
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur calculs et simulations
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Points : 66
    Points
    66
    Par défaut Précision/pas de temps
    Bonjour,

    Je suis occupé à utiliser Simulink pour la première fois, et j'ai un petit problème : lorsque je lance ma simulation, tout marche très bien, du moment que mon temps de simulation est assez faible. Or, je dois faire une simulation qui dure 86400 secondes (24h)!

    J'ai une piste : Simulink m'indique un warning lorsque je lance ma simulation :
    Warning: Using a default value of 1692.0 for maximum step size. The simulation step size will be equal to or less
    than this value. You can disable this diagnostic by setting 'Automatic solver parameter selection' diagnostic to
    'none' in the Diagnostics page of the configuration parameters dialog
    Lorsque je lance ma simulation sur 86400 secondes (avec des résultats incohérents à la clé), j'obtiens un calcul avec 179 pas. Lorsque je lance ma simulation sur 2000 secondes (avec des résultats logiques à la clé), j'obtiens un calcul sur 52 pas.

    On voit donc clairement qu'il faudrait que je puisse diminuer la taille de mon pas de temps pour résoudre mon problème... mais je ne vois pas comment pratiquement....

    NB : je gère mon modèle avec la commande 'sim' de Matlab. Dans cette routine matlab, j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    options = odeset('RelTol',1e-8,'AbsTol',1e-8);
    mais peut être faudrait il que j'inscrive cette commande autre part.


    Merci à vous et bonne année!

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Essaye de changer la propriété MaxStep de ton modèle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    options = odeset('MaxStep',10);
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur calculs et simulations
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur calculs et simulations
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Points : 66
    Points
    66
    Par défaut
    Bonsoir,

    Tout d'abord, merci pour votre réponse.

    Je pense que la commande à utiliser est bien celle que vous évoquez.

    Néanmoins, cela ne donne toujours rien (j'ai toujours le même "warning" m'annonçant un pas maximal très grand).

    Peut-être est-ce du à la façon dont j'écris mon "odeset". Je remarque que je n'avais sans doute pas été très clair dans mon intervention précédente.

    Voici le fichier maître "matlab" gérant mon modèle "simulink"

    Initialement, plutôt que de fixer un pas maximal, j'avais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    time=86400;
    options = odeset('RelTol',1e-8,'AbsTol',1e-8);
    [t,x,outputsim]=sim('mon_modele',[time]);
    Après votre recommandation, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    time=86400;
    options = odeset('MaxStep',60);
    [t,x,outputsim]=sim('mon_modele',[time]);
    Je suppose que le fait que, malgré ces commandes, le pas maximal soit très grand (1728) est du au fait que je ne mets pas les "options" correctement dans mon fichier .m.

    Merci pour votre attention et bonne soirée.

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Autant pour moi, je n'avais pas fait attention .

    Il ne faut pas utiliser ODESET avec Simulink mais mettre directement les paramètres dans la commande SIM.

    Dans un premier temps, essaye avec les tolérances de cette façon là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sim('mon_modele', 'StopTime', num2str(time),'RelTol','1e-8','AbsTol','1e-8');
    Attention, les valeurs des paramètres doivent être des chaines de caractères.

    D'autre part, le warning que tu obtiens n'est pas "grave", il signifie juste que ton modèle ne spécifie pas de pas de calcul et donc que par défaut Simulink prend un pas de calcul (qui en plus peut varier durant la simulation). Fie toi plutôt à la qualité des résultats.
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur calculs et simulations
    Inscrit en
    Novembre 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur calculs et simulations
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 61
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    Je pense que la commande donnée dans le message juste au dessus doit marcher. Seulement, je n'ai sans doute pas défini mon simulateur de manière adéquate. J'ai donc une erreur de type :
    block_diagram does not have a parameter named 'time'
    Une connaissance m'a fourni une autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    time=86400;
    myopts = simset('RelTol',1e-8,'AbsTol',1e-8);
    [t,x,outputsim] = sim('mon_modele',[time], myopts);
    Et cela donne les résultats attendus !

    Un grand merci pour votre aide et bonne journée!

  6. #6
    Membre expérimenté Avatar de lecteur1001
    Inscrit en
    Mai 2009
    Messages
    1 526
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 1 526
    Points : 1 554
    Points
    1 554
    Par défaut
    Je me permets d'intervenir dans cette discussion pourtant close.
    Si j'ai bien compris, tu souhaites réduire le nombre de pas de temps mais avec une durée de simulation inchangée ? Si c'est le cas, tu peux définir le pas de temps maximal souhaité dans la boîte de dialogue ConfigurationParameters de ton modèle Simulink : dans l'onglet "solver", définis le pas de temps maximal souhaité dans le champ "Max step size".
    À lire avant de poster : qu'est ce qu'un ECM (Exemple Complet Minimal) ?
    Règles des forums LaTeX. Quand votre problème est réglé, mettez votre discussion en
    Pour débuter en LaTeX je conseille fortement Tout ce que vous avez toujours voulu savoir sur LaTeX sans jamais oser le demander (merci Woody Allen ), livre téléchargeable gratuitement ou en vente dans le commerce pour 15 €

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

Discussions similaires

  1. [C#] label n'a pas le temps de s'afficher.
    Par Isher dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/08/2007, 09h30
  2. Pas le temps de voir fenetre
    Par bonofred dans le forum Dev-C++
    Réponses: 2
    Dernier message: 20/06/2007, 17h10
  3. [TP] Pas le temps de voir les résultats à l'écran
    Par bonomsoleil dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 08/02/2006, 22h49
  4. [Début.C#] Je n'ai pas le temps de voir se qui s'affiche!!!!
    Par sylvain_c42 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/06/2005, 16h48

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