Salut tous,
j'aurais quelques questions sur les options de l'Optimization Toolbox de Matlab, en particulier celles s'appliquant à la fonction fmincon.
(La version sur laquelle je tourne en ce moment est la 7.1.0.246 (R14) Service Pack 3, avec une Optimization Toolbox en version 3.0.3)
Je vais commencer par brièvement exposer le cadre dans lequel j'essaie d'utiliser fmincon. Libre à vous de me guider vers une autre fonction méthode si vous veniez à la juger plus appropriée.
J'ai une fonction à neuf paramètres, calculée par un exécutable externe (écrit en Fortran, mais peu importe). Cette fonction est en fait une simulation très complexe (testée et déjà optimisée d'un point de vue rapidité), ce qui fait qu'une évaluation de cette fonction occupe facilement 5 minutes de calcul machine. Cette simulation renvoie un réel compris entre 0 et 100.
Cela fait beaucoup de paramètres d'entrée et poserait a priori de nombreux soucis en termes de durée de l'optimisation, mais en même temps, je n'ai pas vraiment besoin de connaître le maximum véritablement atteignable par cette fonction : je veux juste avoir une idée générale de jusqu'où il est possible d'aller (80 ? 85 ? 90 ?).
Dernière info, j'ai fixé les bornes sur X de façon à ce qu'aucune valeur comprise entre ces bornes ne soit déraisonnable (ie conduise à un mauvais résultat de façon a priori évidente), et en dehors de cette condition, trop de facteurs entrent en jeu dans la simulation pour pouvoir raisonnablement écarter ou favoriser d'autres jeux de paramètres sans les avoir effectivement essayés.
Voici à présent mes questions
-J'ai essayé de régler [B]TolFun[/B] à 0.1, pensant ainsi signaler à l'optimiseur qu'il est inutile de pousser l'optimisation trop loin (j'ai compris cette option comme indiquant l'écart minimum significatif entre les résultats de plusieurs évaluations). Ai-je eu raison ? Serait-il raisonnable de l'augmenter encore ? (en réalité, le résultat ne m'importe effectivement qu'à une précision de 2 ou 3)
-Quel est le sens des options [B]DiffMinChange[/B] et [B]DiffMaxChange[/B] ? La doc est pour le moins obscure sur ces points. Je veux dire, quelle est l'influence concrète de ces paramètres sur la façon dont l'optimisation va se dérouler ?
-Y a-t-il moyen de forcer l'optimiseur à NE PAS essayer des valeurs très proches de X ?
J'ai essayé de mettre [B]TolX[/B] à des valeurs aussi grandes que 0.5 (pour des paramètres évoluant grosso modo chacun dans [0;20]), mais l'optimiseur continue à essayer des valeurs très proches les unes des autres (du genre, il va essayer X1, puis il va essayer X2 avec norm(X2-X1) largement inférieur au seuil TolX que je pensais être le réglage correspondant à la lecture de la doc). Question corollaire, quel est alors l'effet de TolX si ce n'est pas celui-là ?
-Je sais que pour chaque "itération" (le terme consacré dans la doc matlab), l'optimiseur effectue plusieurs "évaluations" de la fonction à optimiser. En gros, il essaie plusieurs "points de départ", et regarde un peu ce qui se passe autour pour déterminer le gradient autour de chacun et déterminer la marche à suivre (encore une fois, c'est ainsi que je l'ai compris, corrigez-moi si je me trompe ). Y a-t-il moyen et intérêt à contrôler la distance minimale et/ou maximale entre deux de ces "point de départ" ?
-Enfin et dernière question, j'escompte atteindre au moins 70-75 (peut-être plus, je ne sais pas). Y a-t-il moyen, via ces options, de lui signaler qu'il est inutile de peaufiner une recherche dans une "zone" qui visiblement ne se prêterait pas à un tel résultat ?
Merci à tous pour votre aide !