Télécharger optimise1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier optimise1.dgibi
  2. * section : mathematique, optimisation
  3. *----------------------------------------------------------------------*
  4. * O P T I M I S E 1 . D G I B I *
  5. *----------------------------------------------------------------------*
  6. * Objet :
  7. * -------
  8. *
  9. * Exemple d'utilisation de la procedure OPTIMISE avec l'identification
  10. * des coefficients d'un polynome d'ordre 2.
  11. *
  12. * La "simulation" est dans ce cas une fonction polynomiale, realisee
  13. * par la procedure Gibiane "poly", definie en debut de fichier.
  14. *
  15. * Puis, on definit une solution de reference a partir d'un jeu de
  16. * coefficients donne.
  17. *
  18. * La procedure OPTIMISE est ensuite lancee avec un autre jeu de
  19. * coefficents. L'objectif est de determiner un jeu de coefficients qui
  20. * donne une solution egale a la solution de reference a la precision
  21. * pres. Les methodes mises en oeuvre ne garantissent pas que les 2 jeux
  22. * de coefficients (reference et donnes par OPTIMISE) sont identiques.
  23. *
  24. * La procedure OPTIMISE est lancee 2 fois :
  25. * - une 1ere fois pour tester le fonctionnement de l'algorithme de
  26. * Levenberg-Marquardt ;
  27. * - une 2eme fois pour tester la methode des moindres carres.
  28. *
  29. * Description :
  30. * -------------
  31. *
  32. * Type de calcul : identification des coefficients d'un polynome
  33. * Mode de calcul : sans objet
  34. * Type d'element : sans objet
  35. * Chargement : sans objet
  36. *
  37. *----------------------------------------------------------------------*
  38. *
  39. * Pour dessins, mettre ig1 a VRAI :
  40. ig1 = faux ;
  41.  
  42. *----------------- Definition d'une fonction polynome -----------------*
  43.  
  44. * Procedure Gibiane de simulation :
  45. debp poly lree0*listreel lree1*listreel ;
  46. a0 = lree1 extr 1 ;
  47. a1 = lree1 extr 2 ;
  48. a2 = lree1 extr 3 ;
  49. lx0 = prog (dime lree0) * 1. ;
  50. lx1 = lree0 ;
  51. lx2 = lx1 * lx1 ;
  52. lree2 = (a0 * lx0) + (a1 * lx1) + (a2 * lx2) ;
  53. finp lree2 ;
  54.  
  55. *------------------------ Solution de reference -----------------------*
  56.  
  57. lxref1 = prog -2. pas 1. 2. ;
  58. lpref1 = prog -3. 2. 1. ;
  59. lsref1 = poly lxref1 lpref1 ;
  60.  
  61. * Affichage :
  62. si ig1 ;
  63. evref1 = evol vert manu 'x' lxref1 'f(x)' lsref1 ;
  64. dess evref1 titr 'Solution de refence' ;
  65. fins ;
  66.  
  67. *-------------------------- Appel a OPTIMISE --------------------------*
  68. *------------------------- Levenberg-Marquardt ------------------------*
  69.  
  70. * Table d'entrees de la procedure OPTIMISE :
  71. tab1 = table ;
  72. tab1 . simulation = mot poly ;
  73. tab1 . parametres_initiaux = prog 1. 1. 1. ;
  74. tab1 . points_de_mesure = lxref1 ;
  75. tab1 . valeurs_objectif = lsref1 ;
  76. tab1 . bornes_inf = prog -5. -5. -5. ;
  77. tab1 . bornes_sup = prog 5. 5. 5. ;
  78. tab1 . precision = 1.e-5 ;
  79. tab1 . dessin_evol = ig1 ;
  80.  
  81. * Appel a OPTIMISE :
  82. tab2 = optimise tab1 ;
  83.  
  84. * Affichage comparaison solution apres optimisation / reference :
  85. si ig1 ;
  86. evopt1 = evol oran manu styl noli marq rond 'x' lxref1 'f(x)' tab1 . valeurs_solution ;
  87. dess (evref1 et evopt1) titr 'Solution determinee par Levenberg-Marquardt (orange) et reference' ;
  88. fins ;
  89.  
  90. *----------------------- Validation optimisation ----------------------*
  91.  
  92. * Critere : racine carre de la somme des ecarts au carre,
  93. * divisee par norme euclidienne du vecteur solution
  94. err1 = (somm (((tab2 . valeurs_solution) - lsref1) ** 2)) ** 0.5 ;
  95. err1 = err1 / ((somm (lsref1 ** 2)) ** 0.5) ;
  96.  
  97. * Test de validation :
  98. si (err1 '>' (tab1 . precision)) ;
  99. erre 5 ;
  100. fins ;
  101.  
  102. *-------------------------- Appel a OPTIMISE --------------------------*
  103. *--------------------------- MOINDRE_CARRES ---------------------------*
  104.  
  105. * Appel a l'option :
  106. tab1 . methode_optimisation = mot moindre_carres ;
  107. tab2 = optimise tab1 ;
  108.  
  109. * Affichage comparaison solution apres optimisation / reference :
  110. si ig1 ;
  111. evopt1 = evol azur manu styl noli marq rond 'x' lxref1 'f(x)' tab1 . valeurs_solution ;
  112. dess (evref1 et evopt1) titr 'Solution determinee par moindre carres (bleu) et reference' ;
  113. fins ;
  114.  
  115. *----------------------- Validation optimisation ----------------------*
  116.  
  117. * Critere : racine carre de la somme des ecarts au carre,
  118. * divisee par norme euclidienne du vecteur solution
  119. err2 = (somm (((tab2 . valeurs_solution) - lsref1) ** 2)) ** 0.5 ;
  120. err2 = err2 / ((somm (lsref1 ** 2)) ** 0.5) ;
  121.  
  122. * Test de validation :
  123. si (err2 '>' (tab1 . precision)) ;
  124. erre 5 ;
  125. fins ;
  126.  
  127. *---------------- F I N O P T I M I S E 1 . D G I B I ---------------*
  128. fin ;
  129.  
  130.  
  131.  
  132.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales