begin process at 2012 05 24 21:48:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > ALGORITHMES D'OPTIMISATION NON LINÉAIRE: DESCENTE DE GRADIENT, LM, BFGS, SIMPLEXE...

ALGORITHMES D'OPTIMISATION NON LINÉAIRE: DESCENTE DE GRADIENT, LM, BFGS, SIMPLEXE...


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :Optimisation, Simplexe, Wolfe, descente gradient, Rosenbrock Niveau :Initié Date de création :29/06/2009 Date de mise à jour :30/06/2009 11:13:29 Vu / téléchargé :11 739 / 868

Auteur : Pistol_Pete

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Ce programme met en jeu plusieurs fonctions d'optimisation pour résoudre les problèmes de programmation non linéaire.
Le but est de trouver un minimum local dans la fonction à optimiser.

Différentes fonctions ont été implémentées. Toutes laissent le choix à l'utilisateur du nombre de paramètres à optimiser. Dans notre cas, nous nous situons en dimension 2 pour des problèmes de visualisation. On optimisera alors les coordonnées x et y de différentes fonctions:  

Voici la déclaration mathématique de ce problème :

(x_Optimale,y_Optimale) = argmin f(x,y)


Puissance 2 : f(x,y) = x^2+y^2
Puissance 4 : f(x,y) = x^4+y^4
Rosenbrock  : f(x,y) = (1-x^2)^2+100(y-x^2)^2
et d'autres fonctions...

Les fonctions d'optimisation utilisées sont les suivantes:
Descente de gradient, linéaire, suivant la méthode de Wolfe, BFGS, Levenberg-Marquadt (LM), Fletcher-Reeves avec relance périodique et Polack-Robiere

Ces fonctions utilisent toutes le gradient de la fonction f(x,y). Une dernière méthode a été implémenté pour la résolution de ce problème sans la connaissance du gradient de f: la méthode du simplexe (Nelder-Mead)

IHM : La navigation sur la carte a été facilité au maximum: (Manière Google Earth)

Click gauche/déplacé permet de se déplacer suivant x et y.
Mollette de la souris permet de zoomer/dé zoomer à l'endroit où se situe la souris.
Click droit, permet d'adapter l'échelle des couleurs à la fenêtre de visualisation.

Click gauche/déplacé sur le point initial permet de le déplacer et de lancer à nouveau la fonction d'optimisation sélectionnée.

Source

  • //********************************************************************************
  • //Vincent Morard
  • //20 juin 2009
  • //http://ImAnalyse.free.fr
  • //Programme : Optimisation
  • //********************************************************************************
//********************************************************************************
//Vincent Morard 
//20 juin 2009
//http://ImAnalyse.free.fr
//Programme : Optimisation
//********************************************************************************

 Conclusion

L'exe est à renommer de Optimisation.ex en Optimisation.exe

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

30 juin 2009 11:13:30 :
Ajout de deux nouvelles méthodes d'optimisation: Fletcher-Reeves avec relance périodique et Polack-Robiere

 Sources du même auteur

Source avec Zip Source avec une capture VISUALISATION DES IMAGES EN 3D SANS OPENGL
Source avec Zip Source avec une capture ANALYSE DE LA TEXTURE D'UNE IMAGE : FILTRE DE GABOR
Source avec Zip Source avec une capture VIEWER COMPLET POUR LE TRAITEMENT DE L'IMAGE : IMANALYSE
Source avec Zip Source avec une capture CLASSE GRAPH: GESTION DES GRAPHIQUES DANS LES APPLICATIONS W...
Source avec Zip Source avec une capture TRAITEMENT DE L'IMAGE: FILTRE MÉDIAN EN TEMPS CONSTANT

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CRIBLE D'ERATOSTHÈNE OPTIMISÉ par pgl10
Source avec Zip Source avec une capture OPTIMISATION DE CALCULS (WIN64) par BruNews
Source avec Zip ALGORITHME GÉNÉTIQUE RCPSP par pclover
Source avec Zip Source avec une capture TEST VITESSE SELON TYPE (WIN32, WIN64) par BruNews
Source avec Zip Source avec une capture IMPLÉMENTATION DE MINIMUM SPANNING TREE POUR UNE SOCIÉTÉ D'A... par elkasimi2007

Commentaires et avis

Commentaire de pgl10 le 29/06/2009 22:25:12

Bravo pour l'aspect démonstratif et très didactique. La méthode de Fletcher et Reeves avec relance périodique a la réputation d'être très robuste. Ce serait sympa de l'ajouter.

Commentaire de Pistol_Pete le 30/06/2009 08:19:48

Bonjour PGL10
Merci de ton commentaire. Effectivement, je voulais faire une navigation sur les courbes la plus intuitif possible. Je pense y être arrivé avec une IHM style google Maps.

Pour la méthode de Fletcher et Reeves, je ne connaissais pas, mais je vais la regarder et surement faire une petite update de cette source...

Commentaire de Pistol_Pete le 30/06/2009 11:32:05

Après une petite recherche bibliographique, j'ai ajouté deux fonctions d'optimisation à mon programme :
La méthode de Fletcher-Reeves avec relance périodique (toutes les 2 itérations! ) et celle de Polack-Robière.(qui est juste une variante de Fletcher-Reeves).

Voici mes commentaires :
Ce sont deux méthodes très correctes, mais pas aussi bien que la méthode BFGS. D'ailleurs Fletcher-Reeves date de 1964 et la méthode BFGS de 1970. Le F de BFGS est pour ... Fletcher!

La méthode BFGS est donc une amélioration de la méthode de Fletcher-Reeves.

Commentaire de shenron666 le 30/06/2009 19:46:27

et sinon, concrètement, ça sert à quoi ?
désolé si la question vous parait bête mais comme ce n'est pas mon domaine ce serai sympa d'avoir quelques explications sur l'application réelle de ce programme ;-)

Commentaire de pgl10 le 30/06/2009 20:00:48

Bonjour Pistol_Pete
Je suis bien d'accord avec tes commentaires. L'ancienne méthode de Davidon Fletcher Powell, qui n'est pas là, est complètement surpassée par BFGS, on peut l'oublier. Mais si BFGS est le plus souvent la meilleure en rapidité,je crois que la méthode de Flechter et Reeves avec relance périodique peut dans certains cas être plus robuste. C'est justement pour cela que ton application est très utile pour faire divers essais et comparaisons. Donc encore bravo.

Commentaire de pgl10 le 30/06/2009 20:18:18

Les méthodes de calcul dont on parle ici ont pour but de trouver le minimum d'une fonction à plusieurs variables en principe sans contraintes, c'est à dire sans limites du domaine à explorer, mais avec un nombre d'appel à la fonction et/ou son gradient le plus faible possible. Cela sert en économie pour optimiser un gain en fonction de paramètres, cela sert pour résoudre des équations non linéaires, ainsi que de nombreux autres problèmes.

Commentaire de Pistol_Pete le 01/07/2009 11:11:03

>PGL10 Effectivement au niveau de la stabilité la méthode Fletcher-Reeves avec relance périodique est très bonne.
Pour Shenron666, ces fonctions sont largement utilisé en chimie, en mécanique, en mathématique... en fait, presque toutes les disciplines.

Pour être concret, voici ma problématique; On sait que des particules d'un matériaux sont des parallélogrammes 3D. La problématique est de trouver la largeur, la longueur et l'épaisseur de ces particules: (L, l et e).
Ce sont donc mes trois paramètres que je vais optimiser par ces méthodes en minimisant une fonction "résidu" bien déterminé. Une fois la convergence atteinte, je connaitrais les paramètres optimaux (L*, l* et e*) de mes particules.



Commentaire de pgl10 le 01/07/2009 16:33:07 9/10

=> SHENRON666 : pour continuer encore un peu sur les utilisations de toutes ces méthodes on peut citer en géométrie 3d l'ajustement automatique d'une surface au meilleur voisinage d'un nuage de points. Qu'il s'agisse soit d'une surface implicite, exemple une sphère définie par son centre et son rayon, soit d'une surface paramétrique, exemple une surface de Bézier définie par un tableau de points de contrôle, dans tous les cas la fonction à minimiser est la somme des distances, ou de leurs carrés, des points du nuage à la surface provisoire et les variables sont les valeurs qui définissent cette surface. On en déduit la surface optimum.
=> PISTOL_PETE : merci d'avoir mis côte à côte ces diverses méthodes ayant des caractéristiques différentes et qui peuvent convenir plus ou moins à certains types de problèmes ou à certains cas particuliers. ( je n'ai pas 10 parce que cela ne se compile pas sur mon vieux VC6 !! )

Commentaire de shenron666 le 02/07/2009 11:09:59

Merci à vous tous pour ces explications détaillées des cas pratiques ;-)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Optimisation... :) [ par CodeNeo ] Hello tout le monde !!Question ! Est ce que quelqu'un saurait comment raccourcir le code suivant ?bool __fastcall TForm1::InitBouton ( void ) { Spe [C++] Optimisation de pile [ par guiguikun ] optimisation [ par ifren ] Comment est ce que je peux optimiser le temps d'execution de mon application, quel sont les differents type de pistesmerci soyant heureux faisant fort optimisation affichage opengl [ par xian240482 ] J'ai reussis a affiché un fichier .ASE , mais c'est lent! En cherchant un peu partout, j'ai trouvé plusieur voie :Les gll optimisation de code [ par yakalelo ] Salut J' aimerais optimiser un programme en langage C pour le faire tourner plus vite. Il est constitue principalement de conditions if-else. est ce optimisation d un code asm [ par sajid_morad ] salut tout le monde j aimerai bien savoir comment optimiser un code en assembleur ( le temps d execution des instruction le plus optimal ), et esqu il systeme non lineaire+optimisation d'une fonction non lineaire [ par correcte ] Bonjour,Je cherche un programme ecrit en c++ qui permet de resoudre un systeme d'equations non lineaire.Je cherche egalement un programme qui fait le optimisation [ par arf63 ] Salut j aimerai savoir s il y a moyen d optimiser ca avec un switch case je le maitrise moyenement si quelqu un pourait m aider if (iMat[iPosy][iPosx] pb d'optimisation [ par pipow1 ] Bonjour à tous Je recherche la méthode la plus rapide pour copier un tableau 3D dans un tableau 1D, en évitant bien sur de passer par u optimisation de la memoire en c++ [ par ebooserge ] salut a tous,voila j'ai une question un peu bete mais je me lance quand meme.lorsqu'on declare une variable a l'interieur d'une fonction qui appartien


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,508 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales