Les algorithmes d’optimisation cherchent à déterminer le jeu de paramètres d’entrée d’une fonction donnant à cette fonction la valeur maximale ou minimale. On cherchera par exemple la découpe optimale d’une tôle pour en fabriquer le plus grand nombre de boîtes de conserve possible (ou d’un tissu pour en faire le plus grand nombre de chemises possibles, etc.). Cette optimisation peut se faire sans contrainte ou sous contrainte, le second cas se ramenant au premier dans le cas des fonctions dérivables par la méthode du multiplicateur de Lagrange (et des fonctions non-dérivables par l’algorithme d’Everett).
Algorithmes
Le problème est insoluble en tant que tel si l’on ne connaît rien de la fonction (il existe peut-être une combinaison très particulière de valeurs d’entrées lui donnant ponctuellement une valeur extrêmement haute ou basse, qui pourrait échapper à l’algorithme. Aussi existe-t-il plusieurs classes d’algorithmes liés aux différentes connaissances qu’on peut avoir sur la fonction. Si celle-ci est dérivable, l’une des plus performantes est celle du gradient conjugué.
Aucune méthode connue en 2004 (à part l’énumération exhaustive ou l’analyse algébrique) ne permet de trouver avec certitude un extremum global d’une fonction. Les extrema déterminables sont toujours locaux à un domaine, et demandent souvent même en ce cas quelques caractéristiques à la fonction, par exemple dans certains cas la continuité.
Les métaheuristiques sont une classe d’algorithmes d’optimisation qui tentent d’obtenir une valeur approchée de l’optimum global dans le cas de problèmes d’optimisation difficile. Elles ne donnent cependant aucune garantie sur la fiabilité du résultat.
Détails
- Soit A l’algorithme du problème d’optimisation associé au problème de décision P.
- est la solution optimale pour l’instance i du problème P.
- est la valeur k' de la solution j.
- A est polynomial et on a :
- A : , tel que .
- c, constante ne dépendant pas de i, telle que: