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 :

Optimisation de boucle while


Sujet :

MATLAB

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Par défaut Optimisation de boucle while
    Bonjour!

    J'ai un problème qui porte sur le temps d'exécution d'une routine matlab...
    temps qui est bien trop long. La partie de code problématique est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Ci;			% conditions initiales, matrice 3x3
    Cf;			% conditions finales, matrice 3x3
     
    while (max(A) < Adispo) && (max(B) < Bdispo)
     
    <div style="margin-left:40px">T = T - dt;
    Results = fonction1(Ci,Cf,T); 	           % Results matrice 9x(0:0.15:T)
    (A,B) = fonction2(Results); 	           % A et B deux matrices 4x(0:0.15:T)</div>
    end
     
    Tmini = T;
    L'objectif est donc de déterminer la valeur mini de T. La valeur de Tmini peut variée de 1 à 100, suivant les paramètres d'entrées Ci et Cf (et il est impossible d'avoir une idée du résultat avant calcul).
    Les fonctions 1 et 2 sont lourdes et je ne peux pas les modifier.

    J'aurai souhaité remplacer cette boucle "while" par une fonction d'optimisation, mais pour l'instant je n'ai pas trouvé de solution adéquat à mon problème.

    Sinon, en créant une sorte de dichotomie sur "dt", avec une suite de plusieurs boucles while j'ai pu améliorer le temps d'exécution, mais ce n'est tout de même pas terrible et vraiment pas élégant dans le code...
    J'ai Tinit = 100, je commence la première boucle avec dt = 25, puis je diminue jusqu'à avoir une précision de 0,15 sur T.

    Donc ce que je souhaiterai
    - dans le meilleur des cas, trouver une fonction d'optimisation permettant d'éviter une succession de boucle while
    - sinon, une manière élégante de faire une dichotomie pour converger rapidement vers le résultat

    Voilà! Merci de votre aide!
    vincent

  2. #2
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    pour être sûr, utilises profiler pour vérifier les parties de code qui prennent beaucoup de temps.


  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Par défaut
    Citation Envoyé par kmaniche Voir le message
    pour être sûr, utilises profiler pour vérifier les parties de code qui prennent beaucoup de temps.

    déjà fait
    les fonctions 1 et 2 sont "longues" à s'exécuter, c'est la raison pour laquelle je voudrais éviter d'avoir des boucles faisant beaucoup de fois appel aux fonctions

Discussions similaires

  1. Optimisation Boucle While
    Par Fooshi dans le forum C
    Réponses: 15
    Dernier message: 28/06/2010, 11h55
  2. [PHP 5.0] Optimisation boucle while pour envoi d'e-mails
    Par renaud26 dans le forum Langage
    Réponses: 1
    Dernier message: 18/02/2010, 08h22
  3. optimiser une boucle while imbriquer dans une boucle for
    Par bakaratoun dans le forum MATLAB
    Réponses: 0
    Dernier message: 28/01/2010, 15h35
  4. optimisation d'une requête+deux curseurs+deux boucles while
    Par jawadi95 dans le forum Développement
    Réponses: 1
    Dernier message: 10/07/2008, 10h59
  5. Optimisation de boucle 'while..do'
    Par delphi5user dans le forum Delphi
    Réponses: 10
    Dernier message: 25/07/2006, 22h37

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