• Aucun résultat trouvé

• Lors de la sélection des individus pour la reproduction : les configurations ont d’autant plus de chances d’être sélectionnées qu’elles violent peu les contraintes.

• Lors de la mise à jour de la population : les configurations de plus faible consistance sont retirées en premier.

L’algorithme d’orchestration sous contraintes (algorithme 8) présente, outre les aspects de pénalisation de fitness pour les configurations inconsistantes, deux particularités par rapport à sa version précédente (algorithme 4) :

• Lors de l’application des opérateurs génétiques, le crossover n’est pas nécessairement suivi d’une mutation (modification aléatoire d’une coordonnée). Nous verrons en effet au chapitre 11 qu’en présence de contraintes, la mutation est plus à même que le crosso-ver de produire des configurations inconsistantes. Elle n’est donc plus utilisée certaine-ment, mais avec une probabilité pmute, égale à la probabilité d’obtenir une configuration consistante par instanciation aléatoire. Elle est calculée sur la population initiale avant réparation.

• La mise à jour de la population (lorsque celle-ci dépasse sa taille maximale autorisée) peut se faire de deux manières différentes : soit on retire itérativement les solutions les moins consistantes jusqu’à descendre à la taille de population désirée, soit le nombre de configurations de consistance minimale excède toujours la limite de taille, et la popula-tion est alors réduite par la méthode decrease_PADE(algorithme 3).

10.6 Contraintes et évolution temporelle

Limité dans un premier temps par une vision statique du timbre instrumental, notre sys-tème ne peut a priori engendrer que des textures orchestrales stables, sans modifications temporelles. Le compositeur souhaitant reproduire un timbre évoluant dans le temps n’a donc pour l’instant d’autre choix que de morceller la cible en autant d’intervalles que nécessaire, chercher une solution pertinente pour chaque segment indépendant, et enfin de « relier les piles du pont » en orchestrant manuellement les transitions.

Au cours de ce processus long et fastidieux, les orchestrations sont recherchées indépen-damment les unes des autres, sans aucun contrôle sur le dégré de continuité à chaque transition. L’approche par contraintes peut ici apporter un regard différent sur la question de l’évolution temporelle. Selon la complexité du réseau de contraintes et le niveau de consistance d’une configuration donnée, la « réparation » de cette dernière par une méthode de satisfaction de contraintes engendre une configuration plus ou moins proche de l’état initial. On peut donc très bien considérer les contraintes comme un moyen de transformer un timbre, de le « dépla-cer » vers une autre région de l’espace. Celle-ci n’est alors plus caractérisée explicitement par un ensemble de descripteurs perceptifs, mais implicitement, par un jeu de relations logiques que les variables de l’écriture musicale doivent vérifier.

L’algorithme CDCSolver a été conçu de manière à parvenir à une configuration consistante en ne modifiant, à chaque étape du calcul, qu’une seule variable dans la configuration courante. En conservant la trace de la résolution, on obtient alors une succession de configurations « évoluant » de manière continue vers la consistance.

La figure 10.1 est un exemple d’une telle transformation. L’orchestration initiale, aux cordes, a été obtenue à partir d’une voix chantée. La recherche était contrainte par l’ensemble de contraintes suivantes :

156 CHAPITRE 10. GESTION DES CONTRAINTES

Algorithme 8 Algorithme d’orchestration sous contraintes

Arguments: Une cible d’orchestration T , les paramètres de population Ninitpop, Npop

max, Nmate, Npareto

max ,

un nombre maximal d’itérations itermax, une fonction de coût z.

1: (X, pmute) ← générer une population aléatoire de taille Ninitpop // (pmute est la proportion de configurations consistantes dansX)

2: pourK ∈ X faire

3: K ← cdcsolver(K, z) // (Réparation des configurations inconsistantes)

4: fin pour

5: C← évaluer_population(X, T )

6: P ← extract_pareto_set(C)

7: iter← 1

8: tant que iter≤ itermax faire

9: C← évaluer_population(X, T )

10: λ← tirer un jeu de poids

11: f ← kCkλ

12: f ← pénaliser_fitness(f, z)

13: M ← sélectionner Nmate individus dans X par tournoi binaire selon f

14: O← crossover(M)

15: O← 1-mutation(O, pmute) // (taux de mutation égal à la probabilité de consistance)

16: CO ← évaluer_population(O, T ) 17: X← X ∪ O 18: P ← update_pareto_set(P, CO) 19: si #P > Npareto max alors 20: P ← decrease_PADE(P, Npareto max , random) 21: fin si 22: si #X > Npop max alors 23: X ← X \ P 24: C← évaluer_population(X, T ) 25: f ← kCkλ 26: f ← pénaliser_fitness(f, z) 27: X∗← {K ∈ X | z(K) = zmin} 28: si #X∗≤ Npop max− #P alors 29: X ← les Npop

max− #P meilleurs éléments selon f // (on élimine en priorité les éléments violant le plus les contraintes. . .)

30: sinon

31: X← decrease_PADE(X∗, Npop

max−#P, f) // (. . .ensuite seulement ceux de densité maximale)

32: fin si

33: X ← X ∪ P

34: fin si

35: iter + +

36: fin tant que

10.6. CONTRAINTES ET ÉVOLUTION TEMPORELLE 157

Fig. 10.1 – Passage continu d’un accord de cordes vers un accord de vents à l’aide de CDC-Solver. Partition en Ut.

158 CHAPITRE 10. GESTION DES CONTRAINTES

<attribut=∅><opérateur=“size-min”><quantité=“4”><valeur=∅> <attribut=∅><opérateur=“size-max”><quantité=“4”><valeur=∅> <attribut=“famille”><opérateur =“at-least”><quantité=“4”><valeur =“strings”> L’évolution du timbre se fait par un « transfert » continu des cordes vers les vents, en modifiant la contrainte sur la famille d’instruments (les contraintes de cardinalité sont conservées de manière à abandonner progressivement les cordes) :

<attribut=“famille”><opérateur =“at-least”><quantité=“4”><valeur =“woodwinds”> La partition de la figure 10.1 permet de suivre la trace de cette transformation (chaque mesure correspond à une étape du calcul). L’orchestration finale étant limitée à quatre instruments, l’instanciation d’une nouvelle variable entraine systématiquement la violation de la contrainte de cardinalité maximale : une désinstanciation est alors nécessaire. L’entrée d’un instrument à vent donc est aussitôt suivie, à la mesure suivante, par le retrait d’un instrument à cordes. En ne conservant que les mesures impaires de la figure 10.1, on obtient un mouvement de timbre n’impliquant jamais que quatre instruments.

Du point de vue des contraintes, le choix d’un instrument à rajouter ou à retirer de l’or-chestration est, à fonctions de coût égales, indifférent : à la seconde mesure par exemple, la même valeur de consistance est obtenue selon qu’on insère un basson, une flûte, une clari-nette ou un hautbois dans l’orchestration. En revanche, la fitness permet de distinguer ces possibilités, en retenant la configuration de fitness maximale selon la fonction scalarisante en cours (cette dernière est calculée à l’aide des valeurs de critères obtenus pour l’orches-tration initiale). La continuité du timbre est ainsi encouragée dans le passage d’une confi-guration à la suivante. L’exemple de la figure 10.1 peut être écouté en ligne sur le site :

Chapitre 11

Tests de performances

Difficulté d’évaluer les méthodes multicritères Nécessité d’une approche multi-expert Evaluation de l’algorithme sur différentes classes de problèmes Intérêt des principaux « modules » de l’algorithme d’orchestration

Nous terminons cette partie avec un chapitre consacré à l’évaluation quantitative de notre algorithme d’orchestration. Nous commençons par montrer en quoi l’évaluation des méthodes multicritères est une tâche particulièrement délicate, et discutons brièvement les approches en général adoptées dans la littérature. Nous proposons alors un cadre multi-expert dans lequels les performances de notre méthode sont mesurées selon plusieurs « points de vue ». Nous montrons l’intérêt, selon chaque point de vue, des différents « modules » de l’algorithme d’orchestration : crossover, mutation, réparation des configurations initiales par CDCSolver, maintien de la diversité par la méthode PADE.

11.1 Evaluation des méthodes multicritères

Les méthodes multicritères récentes reposent sur la dominance de Pareto. Nous avons vu à la section 5.2 que cet ordre partiel sur l’espace de recherche empêche de comparer toute paire de configurations. Cette indécidabilité entre deux solutions se répercute, de manière décuplée, sur la comparaison des performances de métaheuristiques.

Lorsqu’on a en effet recours à des méthodes incomplètes, celles-ci ne retournent en général jamais le front de Pareo théorique du problème, mais en donnent une approximation. Se pose alors la question de comparer deux approximations PA et PB retournées par deux métaheu-ristiques différentes A et B. D’un point de vue formel, on serait tenté de dire que la méthode A est meilleure que B si et seulement si tout élément de PB est dominé par au moins un élément de PA. Or cette condition est si forte qu’en pratique elle n’est, dans un sens comme dans l’autre, presque jamais observée. Il suffit qu’un seul élément de PB ne soit dominé par aucun élément de PA(et vice versa) pour que A et B soient incomparables.

La figure 11.1 représente deux approximations du front de Pareto obtenues avec deux méthodes multicritères différentes pour le même problème. A strictement parler, A et B sont incomparables : il existe des points de A non-dominés par B comme il existe des points de B non dominées par A. Il semble pourtant que l’on puisse en dire un peu plus en abandonnant le strict cadre de la dominance de Pareto. Il est en effet clair que A est meilleur que B sur

160 CHAPITRE 11. TESTS DE PERFORMANCES critère 1 cri re 2 Approximation A Approximation B cône de dominance de l'approximation B

Fig. 11.1 – Deux approximations incomparables du point de vue de la dominance de Pareto

le critère 2, alors que B est meilleur que A sur le critère 1. En outre, il existe une portion de l’espace des critères (le cône de dominance en gris) sur laquelle B domine totalement A, alors que l’inverse n’est pas vrai. Autrement dit, il existe un ensemble de fonctions scalarisantes de Tchebycheff pour lesquelles les éléments de B obtiennent une meilleure fitness que ceux de A. Si en général deux approximations ne peuvent être comparées selon la dominance de Pareto, on peut donc choisir de les considérer selon un « point de vue » particulier. Se concentrer sur une région de l’espace des critères peut constituer un tel point de vue. Comme nous aurons l’occasion de le voir, il en existe bien d’autres. Cette approche est celle retenue par la plupart des auteurs, qui en général ne font pas intervenir la dominance de Pareto (pour les raisons évoquées ci-dessus) dans leurs processus d’évaluation, mais proposent un certain nombre de « mesures de qualité ».

Une mesure de qualité est une fonctionM (le plus souvent unaire ou binaire) sur l’ensemble des approximations, à valeurs dansR. Elle s’accompagne d’une fonction d’interprétation, en général implicite, permettant de décider, en fonction des valeurs prises par M(A) et M(B) (ouM(A, B) et M(B, A) dans le cas d’une mesure binaire), si l’approximation A est meilleure ou moins bonne que B. Lorsque le front de Pareto théorique est connu, on peut par exemple utiliser la métriqueT (appelée aussi generational distance) de Veldhuizen [vV99], qui renvoie la moyenne des distances euclidiennes entre chaque point de l’approximation et le vrai front. On rencontre de nombreuses mesures de qualité dans la littérature. Outre la métriqueT , les plus connues sont l’error ratio de Veldhuizen [vV99], les métriques S (hypervolume) et C (coverage) [ZT98b] [ZT98a] ainsi que l’epsilon indicator [ZTL+03] de Zitzler et al., et les indicateurs R1, R2 et R3 de Hansen et Jaszkiewicz [HJ97]. Certaines d’entre elles, que nous utilisons dans notre processus d’évaluation, seront détaillées à la section suivante. Pour les autres, nous renvoyons le lecteur aux travaux de Zitzler et al. [Zit99] [ZTL+03], Knowles et al. [KFTZ05], Hansen et Jaszkiewicz [HJ97], Grosan [Gro05] ou encore Deb [DJ02].