• Aucun résultat trouvé

L’optimisation

Dans le document Courtage sémantique de services de calcul (Page 146-149)

Le second domaine qui nous a intéressé est l’optimisation. Comme l’algèbre linéaire, il n’est pas utilisé que par des spécialistes du domaine. Le bénéfice de l’approche est moindre car les services décrits et requis sont des services élémentaires de minimisation et maximisation. De plus, les compositions de service sont plus rares et les équations ont ici un rôle limité dans la mesure où, dans notre représentation, elles ne sont appliquées que sur les contraintes.

Néanmoins, notre algorithme permet toujours de renvoyer plusieurs solutions en te-nant compte des spécificités du domaine. Il permet également de connaître les services qui résolvent notre problème sans avoir à connaître les noms des fonctions.

5.3.1 Formalisation du domaine

Les problèmes d’optimisation sont des problèmes de minimisation et maximisation de fonctions. Les types et opérateurs sont donc ceux décrivant les fonctions et contraintes.

Comme dans le cas de l’algèbre linéaire, nous nous positionnons dans l’ensembe des réels R, mais la description s’étend sans difficulté au cas complexe.

5.3.1.1 Les types

Les principaux types sont ceux décrivant les fonctions (funVector->Vector, ...), les contraintes (constraint) et les éléments manipulés par les fonctions et les contraintes (Real,

Matrix, ...).

L’ensemble des types est développé dans l’annexe C.1 (page 167).

5.3.1.2 Les opérateurs

Les opérateurs sont les opérateurs de minimisation et maximisation (min, max, ...), les opérateurs permettant de décrire les fonctions (->), ceux qui décrivent les contraintes (<=, &, ...) et ceux qui agissent sur les éléments manipulés (*, +, ...).

L’ensemble des opérateurs et leurs signatures est disponible dans l’annexe C.2 (page 167).

5.3.1.3 Les équations

Les équations (annexe C.3, page 169) sont celles qui permettent de manipuler les contraintes. Elles comportent l’associativité de l’opérateur d’addition des contraintes (&) et la manipulation des contraintes vides.

5.3.2 Les bibliothèques

Les principaux services que les bibliothèques d’optimisation permettent de résoudre sont :

– la résolution de problèmes non linéaires, avec ou sans contraintes :

min x f (x)

– la résolution de problèmes linéaires, avec contraintes :

min x cTx

– la résolution des problèmes aux moindres carrés, avec ou sans contraintes :

min x

1

2kCx − dk2 2

– la résolution de problèmes quadratiques, avec ou sans contraintes :

min x

1

2xTHx + fTx

Dans le cas où il y a des contraintes, celles-ci sont de type : – Ax ≤ b

– Ax = b

– l ≤ x ≤ u

Nous nous sommes plus particulièrement intéressés à deux bibliothèques : la boîte à outils d’optimisation de Matlab2et le paquetage E04 de NAG3.

5.3.2.1 La boîte à outils matlab

La boîte à outils Matlab est intéressante car très utilisée. Elle permet notamment : – la résolution de problèmes non linéaires :

– uni-variable avec contraintes (f minbnd)

– multi-variables avec contraintes (f mincon)

– multi-variables sans contrainte (f minunc)

– la résolution de problèmes linéaires avec contraintes (linprog)

– la résolution des problèmes aux moindres carrés avec contraintes (lsqlin ou lsqnonneg)

– la résolution de problèmes quadratiques (quadprog)

La description de ces services dans notre formalisme se trouve en annexe C.4 (page 169). Remarquons que certains services apparaissent plusieurs fois avec des paramètres différents. Cela est lié au fait que certains paramètres sont optionnels.

5.3.2.2 E04 - NAG

Le paquetage E04, Minimizing or Maximizing a Function, du NAG, Numerical

Algo-rithms Group est la seconde bibliothèque qui nous a intéressée. C’est également une librairie

très utilisée. Elle illustre, tout comme le BLAS ou LAPACK, le fait que le nom de la pro-cédure n’est pas toujours intuitif et ne peut pas servir de base à une recherche. Ces noms répondent à une norme spécifique de la librairie à laquelle ils appartiennent. Mais chaque librairie ayant la sienne, d’éventuels critères généraux ne peuvent pas être dégagés simple-ment pour être utilisés dans un cadre générique.

Ce paquetage permet notamment :

– la résolution de problèmes non linéaires :

– uni-variable avec contraintes (E04ABF ou E04BBF )

– multi-variables avec contraintes (E04JY F )

2http://www.mathworks.com/access/helpdesk/help/toolbox/optim/optim.shtml

3

– multi-variables sans contrainte (E04DGF )

– la résolution de problèmes linéaires avec contraintes (E04M F F )

– la résolution des problèmes aux moindres carrés avec contraintes (E04N CF )

– la résolution de problèmes quadratiques (E04N F F )

La description de ces services dans notre formalisme se trouve en annexe C.5 (page 170). Ces services sont en fait plus complexes et résolvent plusieurs types de problèmes. Pour fixer le type de problème que nous souhaitons traiter, il faut préalablement faire appel à une autre procédure, en fixant les paramètres décrivant le problème à résoudre. Nous avons choisi de décrire le cas par défaut.

5.3.3 Exemples

Nous allons maintenant donner quelques exemples d’utilisation. Les recherches sont effectuées dans les deux bibliothèques que nous avons décrites.

5.3.3.1 Exemple 1

L’utilisateur veut minimiser une fonctionf uni-variable sur l’intervalle [a, b].

L’algorithme va alors trouver comme solution avec le paquetage E04 : p1=?;

E04ABF(f, ?, ?, a, b, ?, ?, p1, ?); p1;

Sif est dérivable, l’algorithme va trouver comme solutions :

p1=?;

E04ABF(f, ?, ?, a, b, ?, ?, p1, ?); p1;

qui est celle du cas général et : p1=?;

E04BBF(f, ?, ?, a, b, ?, ?, p1, ?, ? ); p1;

qui utilise un algorithme diffèrent basé sur la dérivée def .

Dans ces deux cas, l’algorithme doit être paramétré avec : – nombre d’équations autorisées : 0

– taille maximale des transformations : 0 – profondeur de composition : 0

Dans les deux cas, les solutions sont obtenues instantanément et l’algorithme ne trouve pas d’autre solution.

5.3.3.2 Exemple 2

L’utilisateur veut minimiser une fonctionf multi-variables sur « l’intervalle » [a, b].

L’algorithme va alors trouver comme solutions :

p1 = fmincon(f, ?, [ ], [], [ ], [], a, b ); p1;

et p1=?;

E04JYF(?, ?, f, a, b, ?, p1, ?, ?, ?, ?, ?, ?, ? ); p1;

L’algorithme doit être paramétré avec : – nombre d’équations autorisées : 4 – taille maximale des transformations : 1 – profondeur de composition : 0

La solution est obtenue instantanément. L’algorithme ne trouve pas d’autres solutions.

5.3.4 Conclusion

L’utilisation de notre mécanisme en optimisation montre d’abord que le choix de décrire les domaines à l’aide d’un type abstrait algébrique, qui est naturel pour l’algèbre linéaire, est également adapté à d’autres domaines.

Même si les équations sont, sur nos exemples, utilisées dans un unique sens, elles le sont dans le sens le moins naturel : celui qui « complique » le terme. Appliquées dans ce sens, elles ne permettraient pas de construire un système de réécriture convergent et une forme normale ne pourrait pas être utilisée. Donc, notre approche du traitement des équations se justifie dans ce contexte également.

Dans le document Courtage sémantique de services de calcul (Page 146-149)