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:
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! :ccool:
vincent