• Aucun résultat trouvé

7.2 Structure et fonctionnement de la LNS proposée

7.2.1 Opérateurs de destruction

Nous proposons dans cette section deux opérateurs de destruction visant à accroître le nombre de tâches affectées tout en maximisant l’équité parmi les employés. Puisqu’une solution est entièrement définie par la liste des affectations tâche-employé, le processus de destruction se réduit ici à sup- primer une partie de cette liste. La sélection des affectations à supprimer doit permettre de gagner un maximum de flexibilité, de manière à permettre l’obtention de solutions améliorantes, mais avec un minimum d’affectations supprimées, de manière à bénéficier d’un filtrage efficace tout en limi- tant la taille du voisinage. Pour cela, il est important de prendre en compte la structure du problème.

Un opérateur de destruction fondé sur le temps : Top

L’opérateur de destruction Top, détaillé à l’Algorithme 7.2, permet de désaffecter un ensemble de tâches positionnées sur un créneau horaire donné, ce qui offre l’opportunité de répartir ces tâches de manière plus appropriée. Cet opérateur sélectionne tout d’abord une tâche non affectée, notée ti, puis

supprime l’affectation des tâches temporellement proche de ti, dans la limite de la portée définie.

Le créneau horaire correspondant aux tâches désinstanciées de cette manière n’est pas forcément centré autour de ti, ce qui permet d’obtenir plusieurs espaces de recherche différents autour d’une

même tâche. Lorsque toutes les tâches sont affectées, Top commence par supprimer une affectation aléatoirement. Dans tous les cas, Top supprime toutes les affectations de l’employé fictif (dernière ligne de l’Algorithme 7.2).

L’intérêt de l’opérateur Top est illustré à la Figure7.2. Sur cet exemple, la solution courante com- prend 3 employés, notés n1 à n3 et 11 tâches dont une tâche non affectée, notée t (cf. Figure 7.2a). Chaque employé est affecté à au moins une tâche concomitante à t, ce qui fait que t ne peut être directement affectée à un employé. L’opérateur Top permet de supprimer les affectations des tâches proches de t, comme par exemple les tâches t1 à t6. Puisque la LNS repose sur le modèle PPC||U,∆, les horaires de travail des employés sont déduits à partir de l’affectation des tâches. Autrement dit, l’opérateur de destruction Top permet également de redonner une certaine flexibilité aux horaires des employés. À partir de ce voisinage, il est possible d’obtenir une meilleure affectation des tâches, comme cela est illustré par la Figure 7.2b. Cet opérateur peut également permettre de réduire l’in- équité entre les employés.

Pour résumer, l’opérateur Top permet de désaffecter un ensemble de tâches positionnées sur une plage horaire donnée, mais il ne permet pas de modifier les horaires de travail des employés en profondeur. Par exemple, il peut être difficile, voire impossible, de remplacer une journée de repos par une journée de travail, en raison des horaires de travail fixés avant et après la plage horaire sélectionnée. Pour les mêmes raisons, un horaire de travail de nuit peut être difficile à remplacer par un horaire de travail d’après-midi ou de matin. Autrement dit, l’opérateur Top ne suffit pas à couvrir l’ensemble des modifications potentiellement nécessaires à l’amélioration de la solution courante.

7.2. STRUCTURE ET FONCTIONNEMENT DE LA LNS PROPOSÉE 111

Obtenir une solution initiale via PPC||U,∆ Initialiser les paramètres de la LNS Détruire une partie de la solution courante

(Utiliser les opérateurs Top & Pop)

Chercher une solution

Solution trouvée

?

Utiliser H∆ sur les solutions complètes Mettre à jour les solutions Mettre à jour les paramètres de la LNS

Temps écoulé

?

Utiliser H∆ sur la meilleure solution

Fin (Phase 1) (Phase 2) Oui Non Oui Non

Algorithme 7.2: Top : création d’un voisinage sur la dimension temps.

Données :

T, l’ensemble des tâches

PTop, la portée actuelle du voisinage Top

1 t ← selectionnerTâche(T ) //Si possible non affectée 2 supprimerAffectation(t, n)

3 p+ ←nombreAleatoire(1, PTop) //Tirage aléatoire entre 1 et PTop 4 p← PTop − p+ 5 supprimerAffectationsAmont(t, p+) 6 supprimerAffectationsAval(t, p−) 7 supprimerToutesLesAffectationsFictives() Affectations déconstruites t3 t6 t1 t4 t2 t5 t Employés n1 n2 n3 fictif Temps (a) Voisinage de la solution courante (3 employés et 11 tâches dont 1 non affectée)

t3 t5 t1 t t6 t2 t4 Employés n1 n2 n3 Temps Affectation fixée Affectation libre

(b) Solution espérée, toutes les tâches sont affectées

7.2. STRUCTURE ET FONCTIONNEMENT DE LA LNS PROPOSÉE 113

Un opérateur de destruction fondé sur le personnel : Pop

Pour modifier en profondeur les horaires de travail des employés, il est nécessaire de modifier les affectations sur plusieurs jours, voire sur toute la semaine. Dans ce cas, il ne semble pas raisonnable de considérer l’ensemble des employés, car cela conduirait à un voisinage trop grand. Autrement dit, il s’agit de choisir un sous-ensemble d’employés et de supprimer toutes les tâches qui leur sont affectées. Pour cela, nous proposons l’opérateur Pop, dont le fonctionnement détaillé est donné à l’Al- gorithme7.3. Notons également que Pop supprime toutes les affectations de l’employé fictif (dernière ligne de l’Algorithme 7.3).

L’intérêt de l’opérateur Pop est illustré sur un exemple à 13 tâches et 3 employés (cf. Figure7.3). Sur cet exemple, la solution courante comprend 3 employés, notés n1 à n3 et 13 tâches dont une non affectée, notée t (cf. Figure 7.3a). L’affectation actuelle est telle que les employés sont tous en repos durant la plage horaire de réalisation de t. Autrement dit, il n’est pas possible d’affecter la tâche t aux employés sans modifier les horaires de travail d’au moins un employé. L’opérateur Pop permet de supprimer toutes les affectations des tâches sur un sous-ensemble d’employés, comme par exemple les employés n1 et n2, ce qui conduit à supprimer l’affectation des tâches t1 à t8. À partir de ce voisinage, il est possible d’obtenir une meilleure affectation des tâches, comme cela est illustré par la Figure7.3b. Cet opérateur peut également permettre de réduire l’inéquité entre les employés. Pour résumer, l’opérateur Pop permet de modifier les horaires de travail de quelques employés, en désaffectant toutes les tâches d’un sous-ensemble d’employés. De cette manière, les opérateurs Pop et Top permettent de couvrir l’ensemble des modifications potentiellement nécessaires à l’amélioration de la solution courante.

Algorithme 7.3: Pop : création d’un voisinage sur la dimension personnel.

Données :

T, l’ensemble des tâches N, l’ensemble des employés W, un sous-ensemble d’employés

PPop, la portée actuelle du voisinage Pop

1 W ←selectionerEmployées(N , PPop)

2 pour (w ∈ W) faire

3 supprimerToutesLesAffectations(w) 4 supprimerToutesLesAffectationsFictives()

Documents relatifs