Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2017:01_09

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
commit:2017:01_09 [2017/01/09 12:09] wauteletcommit:2017:01_09 [2017/01/09 13:29] – [Fichiers ajoutés/supprimés] wautelet
Line 22: Line 22:
  
 Si la matrice hessienne n'est pas définie positive, nous avons dès lors d'une direction de croissance de la fonction objective. Il suffit tout simplement de prendre l'opposé dans ce cas de figure pour régler le problème ! Si la matrice hessienne n'est pas définie positive, nous avons dès lors d'une direction de croissance de la fonction objective. Il suffit tout simplement de prendre l'opposé dans ce cas de figure pour régler le problème !
-Si la direction obtenue est presque perpendiculaire au gradient ou si la matrice hessienne est semi-définie positive (singulière), il suffit de prendre comme direction l'opposé du gradient locale (Steepest descent method !).+Si la direction obtenue est presque perpendiculaire au gradient ou si la matrice hessienne est semi-définie positive (singulière), il suffit de prendre comme direction l'opposé du gradient local (Steepest descent method !).
  
 Dans le cas d'une minimisation d'une fonction non linéaire, l'utilisation d'un line search exact est totalement inefficace d'où la formulation des conditions dites de Wolfe pour garantir une décroissance suffisante de la fonction objective et de sa courbure. [[http://reference.wolfram.com/language/tutorial/UnconstrainedOptimizationLineSearchMethods.html|Inexact Line Search Methods]] Dans le cas d'une minimisation d'une fonction non linéaire, l'utilisation d'un line search exact est totalement inefficace d'où la formulation des conditions dites de Wolfe pour garantir une décroissance suffisante de la fonction objective et de sa courbure. [[http://reference.wolfram.com/language/tutorial/UnconstrainedOptimizationLineSearchMethods.html|Inexact Line Search Methods]]
Line 38: Line 38:
 === Modification de la matrice hessienne === === Modification de la matrice hessienne ===
  
-Afin de continuer à utiliser la procédure de Newton-Raphson et toujours garantir une diminution de la fonction objective, j'ai implémenté une méthode qui rend la matrice définie positive tout en conservant une matrice bien conditionnée. L'idée est tout simple : on ajoute à la matrice initiale, un multiple de la matrice identité (Ceci s'apparente fortement aux méthodes dites "Trust Region". Elle marche dans le cas d'une matrice définie négative et semi-définie positive. En général, il faut combiner cette méthode avec un backtracking line search et une méthode qui limite la taille de la correction (obligatoire !!) : en effet une division par un nombre proche de la précision machine donne un très grand nombre ! En général, pour une matrice de dimension supérieure à 2, il faut passer par une décomposition Cholesky spéciale qui donne une matrice définie positive, même si la matrice initiale ne l'est pas !+Afin de continuer à utiliser la procédure de Newton-Raphson et toujours garantir une diminution de la fonction objective, j'ai implémenté une méthode qui rend la matrice définie positive tout en conservant une matrice bien conditionnée. L'idée est tout simple : on ajoute à la matrice initiale, un multiple de la matrice identité (Ceci s'apparente fortement aux méthodes dites "Trust Region". Elle marche dans le cas d'une matrice définie négative et semi-définie positive. En général, il faut combiner cette méthode avec un backtracking line search et une méthode qui limite la taille de la correction (obligatoire !!) : en effet une division par un nombre proche de la précision machine donne un très grand nombre ! En général, pour une matrice de dimension supérieure à 2, il faut passer par une décomposition Cholesky spéciale qui donne une matrice définie positive, même si la matrice initiale ne l'est pas ! (cf. a revised modified cholesky factorization algorithm, Schnabel R.B. and Eskow E., 1999).
  
 === Résumé === === Résumé ===
Line 73: Line 73:
  
 On peut demander aussi à calculer les tangentes et les normales par la même occasion. On peut demander aussi à calculer les tangentes et les normales par la même occasion.
 +
 +==== Line Search Exact ====
 +
 +J'ai juste ajouté un interface pour modifier les paramètres du line search exacte. L'algorithme reste inchangé !
  
 ==== Cas Test ==== ==== Cas Test ====
Line 82: Line 86:
  
 <code> <code>
-[a]:+[a]:mtMath/InexactLineSearch.cpp 
 +[a]:mtMath/InexactLineSearch.h
 [r]: [r]:
 </code> </code>
commit/2017/01_09.txt · Last modified: 2017/01/09 13:30 by wautelet

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki