• Aucun résultat trouvé

Chapitre III : Workforce Scheduling and Routing Problem

4. Méthodes exactes pour le WSRP (modèles PLNE et PPC)

4.1. PLNE pour le WSRP (Garaix et al., 2018b)

Cette section introduit un modèle PLNE pour le WSRP (Garaix et al., 2018b). La première partie de la section concerne les variables, la seconde partie la fonction objectif et la troisième partie se focalise sur les contraintes.

4.1.1. Les variables pour le modèle PLNE

Le modèle PLNE utilise quatre variables binaires et une variable continue. Les variables , et associées à la visite , ne sont pas conservées dans la formulation PLNE car la position et la durée des temps d’attente des employés ne sont pas prises en compte dans la fonction objectif. Par conséquent, l’employé peut attendre où il souhaite, et afin de réduire le

nombre de variables ainsi que l’espace des solutions, il est décidé que l’employé ne peut jamais attendre sur le sommet d’origine. La date de fin de la visite est directement déduite de la

date de début ( = + , avec le processing time de ). La date de départ de la

visite est égale à la date de fin de la visite ( = ). En effet, il n’y a pas de coût d’attente associé à l’employé, donc l’employé peut toujours partir au plus tôt et attendre une fois arrivée à la prochaine visite avant de débuter cette dernière. La date d’arrivée de l’employé sur une visite est calculée à partir de la date de départ de la visite précédente : = + , (où

, est le temps de transport de la visite à la visite ), or = = + , donc = +

+ ,.

Les variables binaires :

, = 1 si l’employé se déplace de la visite ∈ à la visite ∈ ; , = 0 sinon.  = 1 si l’employé réalise la visite ∈ qui est située en dehors de sa zone

géographique de préférences ; = 0 sinon.

 = 1 si l’employé viole sa fenêtre de temps lorsqu’il effectue la visite ∈ ; = 0 sinon.

 = 1 si la visite n’est pas réalisée. Les variables continues :

 est la date de début de la visite ∈ .

Par ailleurs, est une constante entière suffisamment grande.

4.1.2. La fonction objectif pour le modèle PLNE

La fonction objectif est définie par (Laesanklang et al., 2015b; Garaix et al., 2018b) et repose sur quatre critères : les coûts de production, un coût de préférence entre clients et employés, des pénalités en fonction des violations des fenêtres de temps et des zones géographiques souhaitées par les employés, et une pénalité en fonction des visites non effectuées. Cette fonction objectif est une somme agrégée de ces quatre critères. Elle est très différente des fonctions objectifs « classiques » des problèmes de tournées de véhicules ou des problèmes d’ordonnancement qui portent régulièrement sur des critères de durée et/ou de délais. La fonction objectif définie par (Laesanklang et al., 2015b) permet d’obtenir une solution qui est un compromis entre les coûts opérationnels, la qualité de service pour les employés et les clients, et enfin le nombre de visites effectuées.

= , + , ∈ ∪ ∈ ∪ + 3 − , ∈ ∪ + ( + ) +

, + , représente le coût opérationnel si un employé réalise les visites et où , est la distance entre ces deux visites et est le coût si l’employé effectue la visite . Ce critère est minimisé. Ce critère de coût opérationnel est la somme d’un critère issu des problèmes de tournées de véhicules et d’un critère issu des problèmes d’ordonnancement, respectivement la somme des distances parcourues et le coût de production.

∈ [0 ; 3] est un critère de qualité de service défini entre le client de la visite ∈ et l’employé (cf. section 2.1). Un proche de 3 signifie que l’association entre et est pleinement satisfaisante. Une valeur proche de 0 signifie au contraire que cette association n’est pas appréciée. L’objectif est de maximiser les préférences, et par conséquent, cela se traduit dans la fonction objectif par minimiser 3 − .

La troisième partie de la fonction objectif concerne la qualité de service de l’employé. et sont des variables binaires valant 1, respectivement, si l’employé réalise la visite qui est située en dehors de sa zone de préférence géographique, et si l’employé effectue une visite en dehors de sa propre fenêtre de temps (voir la section 3.2). Ces pénalités sont à minimiser.

est une variable binaire valant 1 si la visite n’est pas réalisée, sinon elle vaut 0. La somme des est à minimiser. Ce terme permet de maximiser le nombre de visites effectuées.

Le fait que certaines visites puissent ne pas être traitées, et le fait de prendre en compte un critère de qualité de service pour les employés, sont des différences importantes par rapport aux problèmes classiques de tournées de véhicules de la littérature.

Les quatre critères sont hiérarchisés par les coefficients , , et , avec < < < . La priorité la plus basse est accordée à la minimisation du coût opérationnel, et la priorité la plus haute est accordée à la maximisation du nombre de visites effectuées.

4.1.3. Les contraintes pour le modèle PLNE

Les contraintes de type flot

Les contraintes (1), (2) et (3) de type flot garantissent la faisabilité des tournées des employés. Ces contraintes sont typiques des modèles mathématiques des problèmes de tournées de véhicules.

La contrainte (1) garantit qu’il n’y a qu’un seul arc sortant du sommet ∈ , c’est-à-dire qu’au maximum un employé peut effectuer la visite .

, ∈ ∪

≤ 1 ∀ ∈ , ∀ (1)

La contrainte (2) certifie qu’il y a au plus un arc entrant en chaque sommet ∈ du graphe.

, ∈ ∪

≤ 1 ∀ ∈ , ∀ (2)

La contrainte (3) impose qu’il y ait autant d’arcs sortants (un au maximum d’après la contrainte (1)) que d’arcs entrants (un au maximum d’après la contrainte (2)) : un employé réalisant la visite doit obligatoirement repartir.

, ∈ ∪

= ,

∈ ∪

Les contraintes de pénalités

La contrainte (4) calcule le de l’employé pour la visite et la variable = 1 si la visite ∈ n’est pas située dans la zone de préférence de . La variable intervient dans la fonction objectif.

= 0 signifie que la visite n’est pas dans une zone géographique souhaitée par l’employé , et dans ce cas doit valoir 1. Si l’employé effectue la visite avec = 0, alors la contrainte (4) peut se réécrire ≥ ∑ ∈ ∪ , et il existe une visite ∈ telle que

, = 1, donc ∑ ∈ ∪ , = 1, et par conséquent ≥ 1. Si = 1 alors la contrainte est

trivialement respectée, car elle peut s’écrire + ≥ ∑ ∈ ∪ ,, et la fonction objectif

impose = 0 (car l’objectif est de minimiser la somme des ).

+ . ≥ ,

∈ ∪

∀ ∈ , ∀ ∈ (4)

Les contraintes (5) et (6) vérifient si un employé ne respecte pas sa fenêtre de temps en réalisant une visite. La contrainte (5) est dédiée à la violation de la fenêtre de temps inférieure de l’employé. Si l’employé ∈ effectue la visite ∈ , alors ∑ ∈ ∪ , = 1 et la

contrainte (5) peut se réécrire : . ≥ − . Si la date de début de la visite est

strictement plus petite que la borne inférieure de la fenêtre de temps, alors − > 0, ce qui implique que = 1. Le même raisonnement peut s’appliquer à la contrainte (6). Si

l’employé ∈ effectue la visite ∈ , alors ∑ ∈ ∪ , = 1 et (6) devient : . ≥ +

− . Si la date de fin ( + ) est strictement supérieure à la fenêtre de temps de

l’employé alors + − > 0 et impose que = 1.

. ≥ − + , ∈ ∪ − 1 . ∀ ∈ , ∀ ∈ (5) . ≥ + − + , ∈ ∪ − 1 . ∀ ∈ , ∀ ∈ (6)

La contrainte (7) assure qu’un employé ∈ ne peut réaliser qu’une visite ∈ qui

est autorisée d’après le contrat. Dans ce cas = 1. Si = 0, alors ne peut pas

réaliser la visite , et ∑ ∈ ∪ , ≤ 0 impose que ∀ ∈ , , = 0.

, ∈ ∪

∀ ∈ , ∀ (7)

La contrainte (8) compte le nombre de visites non effectuées. Si la visite n’est pas réalisée, alors la somme des flots entrant sur cette visite est nulle (∑ ∈ ∪ , = 0), ce qui implique que

= 1.

+ ,

∈ ∪

Les contraintes sur les dates :

La contrainte (9) impose que la date de début de la visite ∈ , succédant à la visite

∈ dans la tournée de l’employé ( = 1), soit supérieure à la date de fin ( + )

plus le temps de transport ( , ) de vers . Cette contrainte définit implicitement la date d’arrivée de l’employé au plus tôt sur la visite .

+ + , ≤ + , − 1 . ∀( , ) ∈ | ≠ , ∀ ∈ (9)

Les contraintes (10) et (11) garantissent que la date de début de la visite est comprise dans la fenêtre de temps [ ; ] de la visite.

≥ ∀ ∈ , ∀ ∈ (10)

∀ ∈ , ∀ ∈ (11)

4.2. Modèle de PPC pour le WSRP

La PPC permet de modéliser des problèmes sous forme non linéaire, et est basée sur des algorithmes de filtrage et de propagation de contraintes. Brièvement, un modèle PPC est défini par : l’ensemble des variables du problème = { , , … , } ; l’ensemble des domaines

associés à chaque variable = { , , … , } ; et l’ensemble des contraintes =

{ , , … , } (Régin, 2004; Bourreau et al., 2019b, 2020).

La résolution d’un modèle PPC est équivalente à un parcours arborescent d’un arbre binaire. Chaque nœud de l’arbre correspond à une solution partielle où :

 Un sous-ensemble de variables ⊆ où les variables sont instanciées, c’est-à-dire, qu’elles prennent une unique valeur déterminée. Leur domaine est réduit à un singleton.  Un sous-ensemble de variables ⊆ où les variables ne sont pas instanciées, c’est-à-dire

que leur domaine comporte plusieurs valeurs.

∪ = et ∩ = ∅ : chacune des variables doit appartenir à un unique sous-ensemble.

Lorsque toutes les variables sont instanciées à une unique valeur, alors ce nœud représente une solution. Deux nœuds de l’arbre sont reliés par un branchement correspondant : 1) à la sélection d’une variable dont le domaine n’est pas un singleton ; 2) à l’affectation d’une valeur à cette variable ; 3) au filtrage des domaines des variables ayant une contrainte en commun avec la variable sélectionnée ; et 4) à la propagation des modifications des domaines aux autres variables. Un nœud contenant une ou plusieurs variables avec un domaine vide est une solution partielle qui ne permet par d’obtenir une solution entière respectant toutes les contraintes du modèle et les branchements précédemment faits.

La force des solveurs de PPC réside dans leur capacité, après branchement d’une variable , à filtrer le domaine des variables ∈ qui ont une contrainte en commun avec , puis de propager les éventuelles modifications en filtrant les domaines des variables ∈ qui ont une contrainte en commun avec . Le filtrage et la propagation permettent de réduire les domaines des variables, et donc de réduire la taille de l’arbre de recherche.

La Figure 13 illustre le principe de la PPC sur un problème à quatre variables binaires. Les nœuds 1, 2 et 3, par exemple, représentent des solutions partielles tandis que le nœud 4 est

une solution finale (et complète). Le nœud 6 est une feuille de l’arbre car le domaine d’une variable est vide à cause des branchements et .

1 2 3 6 7 4 Branchement :

1) sélection d’une variable 2) choix de la valeur 3) filtrage

4) propagation

Solution

Solution impossible car un domaine est vide Modèle PPC avec quatre variables a b 5 Solution partielle Figure 13 Principe de la PPC

Un problème très contraint permet généralement de bons filtrages et propagations, et la PPC est souvent très performante pour fournir rapidement des solutions de bonne qualité (Bockmayr and Hooker, 2005; Pour et al., 2018; Bourreau et al., 2020).

La résolution des modèles PPC est fortement dépendante des contraintes utilisées pour modéliser les relations entre les variables (certaines contraintes permettent plus de propagations que d’autres), et de l’ordre de branchement (sélection de la variable). Si le branchement de la Figure 13 permet de nombreuses propagations, alors la taille du sous-arbre ayant pour racine le nœud 2 sera petite. Enfin la résolution dépend également du choix de la valeur de la variable sélectionnée.

De nombreux articles de problèmes d’ordonnancement ou de tournées de véhicules proposent des modélisations PPC et/ou des méthodes hybridées avec une partie en PPC. Récemment, (Zhao and Li, 2014) et (Wang et al., 2015) proposent des modèles PPC pour la planification, respectivement, d’opérations chirurgicales et des blocs opératoires. (Topaloglu and Ozkarahan, 2011) introduisent une génération de colonnes avec le sous-problème résolu par PPC pour un problème d’affectation d’étudiants à des stages. Dans le même courant, (He and Qu, 2012) formulent une génération de colonnes avec le sous-problème résolu en PPC pour le nurse rostering problem. (Novas and Henning, 2014) utilisent la PPC pour résoudre un problème de production avec transport. (Gacias et al., 2010) étudient les algorithmes de type raisonnement énergétique pour la PPC sur un problème d’ordonnancement de machines parallèles avec des contraintes de précédences et des temps d’installation. (Pour et al., 2018) proposent l’utilisation de la PPC pour obtenir rapidement une solution qui est utilisée comme point de départ pour la résolution PLNE d’un problème de planification d’équipe de maintenance sur le réseau ferroviaire danois. (Gedik et al., 2018) introduisent un modèle PPC pour le non-preemptive unrelated parallel machine scheduling problem. (Hojabri et al., 2018) utilisent la PPC comme recherche locale pour un problème de tournées de véhicules avec contraintes de synchronisation. Cette recherche locale est insérée dans un schéma de résolution

globale de type métaheuristique. Tous ces articles démontrent l’intérêt et la capacité de la PPC à résoudre des problèmes de types tournées de véhicules, affectation, ou planification, et laissent penser que la PPC peut être également performante sur le WSRP.

Pour plus de détails sur la PPC, le lecteur peut approfondir le sujet avec l’ouvrage de (Rossi et al., 2006) ou les ouvrages de (Bourreau et al., 2019b, 2020).

4.2.1. Principes de la modélisation du WSRP avec la PPC

La modélisation en PPC d’un problème de WSRP s’apparente à la modélisation PPC des problèmes de tournées de véhicules et notamment du VRP (Vehicle Routing Problem) (Hojabri et al., 2018; Bourreau et al., 2019a, 2020).

Chaque visite est représentée par un nœud et est associée à quatre variables ( , , et ) définissant la date d’arrivée ( ) de l’employé, la date de début de la visite ( ), la date de fin ( ) de la visite, et la date ( ) de départ de l’employé ; et à trois variables ( , et ) permettant de définir les tournées. Les dates , , et nécessitent d’être explicites, car une tournée n’est pas uniquement définie par l’ordre des visites, mais également par ces dates. La présence explicite de ces dates est fréquente pour les problèmes de tournées de véhicules avec des critères de qualité de service où la solution n’est pas semi-active : (Cordeau and Laporte, 2003; Gondran et al., 2018).

Les quatre variables classiques des problèmes de tournées de véhicules liées aux dates de la visite sont (Figure 14) :

 = : la date d’arrivée de l’employé sur le sommet .

 = : la date de début de service sur le sommet .  = : la date de fin de service sur le sommet .

 = : la date de départ de l’employé du sommet .

Visite i Arrivée du véhicule Début du service Fin du service Départ du véhicule Ai = dai Ci = dfi Bi = sti Di = ddi Ei Li

Figure 14 Variables liées aux dates de la visite

De plus, une visite est caractérisée par :  , son affectation à un véhicule (ou employé).  , le successeur de la visite dans la tournée.

 , sa position (ou rang) dans la tournée du véhicule (ou de l’employé).

Ces variables , et sont communément utilisées pour modéliser des problèmes de type tournées de véhicules en programmation par contraintes et proposent des modélisations efficaces (Rousseau et al., 2013; Hojabri et al., 2018; Bourreau et al., 2019a, 2019b, 2020). La

variable permet d’obtenir l’employé (ou le véhicule, suivant le contexte) affecté à la visite , cette valeur est un entier. La variable est le successeur de la visite dans la tournée. Ces deux variables ( et ) « traduisent » les variables binaires de type , fréquentes dans les modélisations PLNE des problèmes de tournées de véhicules et de manière plus générale dans les problèmes de flot dans un graphe. Le nombre de variables et est de l’ordre 2| | (où est l’ensemble des visites) tandis que le nombre de variables , dans les modèles PLNE est de l’ordre | || |² (où est l’ensemble des employés). De plus, toutes les variables et traduisent directement des informations tandis que la majorité des variables , est nulle dans la solution. Les variables permettent d’éviter les sous-tours : si deux visites et se suivent

dans une tournée ( = ), alors = et = + 1.

La Figure 15 illustre les variables liées aux tournées pour les problèmes de tournées de véhicules. Dans cet exemple, il y a cinq visites et deux employés (ou véhicules), chacun effectuant une tournée. La visite 1 est affectée à l’employé ( = ), son successeur est la visite 3 ( = 3), et son rang dans la tournée est 1 ( = 1) car c’est la première visite de l’employé . La visite 5 est la dernière visite de la tournée de et est en position 3 ( = 3). Ces variables entières et les contraintes non linéaires (qui sont présentées en section 4.2.3) permettent une modélisation efficace des problèmes de tournées de véhicules (Rousseau et al., 2013; Hojabri et al., 2018; Bourreau et al., 2019a, 2019b, 2020).

1

3

5

2

4

Dépôt

a

3

=w

1

s

3

=5

p

3

=2

a

5

=w

1

s

5

=Dépôt

p

5

=3

a

1

=w

1

s

1

=3

p

1

=1

a

2

=w

2

s

2

=4

p

2

=1

a

4

=w

2

s

4

=Dépôt

p

4

=2

w

1

w

1

w

1

w

1

w

2

w

2

w

2

Figure 15 Variables liées aux tournées de véhicules en PPC

Les visites sont numérotées de 1 à | |. Les dépôts du WSRP peuvent être tous différents (incluant le dépôt de départ et le dépôt d’arrivée d’un même employé). Chacun des dépôts est

donc numéroté de | |+ 1 à | | + 2| |. Les dépôts numérotés de = | | + 1 à = | | +

| | sont les dépôts de départ des employés. Enfin, les dépôts numérotés de = | | + | | + 1 à = | | + 2| | sont les dépôts d’arrivée des employés. Les dépôts de l’employé sont | | + (dépôt de départ) et | | + | | + (dépôt d’arrivée). La Figure 16 présente deux tournées effectuées par deux employés où leurs dépôts de départ et d’arrivée sont différents (ils peuvent être situés sur des lieux géographiquement différents). L’employé débute sa tournée au dépôt 6 et la finit au dépôt 8.

1 3 5 2 4 6 a3=w1 s3=5 p3=2 a5=w1 s5=8 (Dépôt) p5=3 a1=w1 s1=3 p1=1 a2=w2 s2=4 p2=1 a4=w2 s4=9 (Dépôt) p4=2 w1 w1 w1 w1 w2 w2 w2 7 8 9 a6=w1 s6=1 p6=0 a8=w1 s8=/ p8=4 a7=w2 s7=2 p7=2 a9=w2 s9=/ p9=3

Figure 16 Numérotation des dépôts de départ et d’arrivée

Un modèle de PPC est défini par l’ensemble des variables, la définition de leur domaine, les contraintes et la fonction objectif. Le domaine de chaque variable est introduit dans la section 4.2.2, les contraintes sont présentées dans la section 4.2.3 et la fonction objectif est définie dans la section 4.2.4. De plus, quelques contraintes permettant de renforcer la modélisation PPC sont présentées dans la section 4.2.5.

4.2.2. Définition des variables pour le modèle PPC

Afin de rendre le modèle plus facile à la lecture et plus efficace, deux variables supplémentaires sont introduites : les variables et les variables (Bourreau et al., 2019a, 2020).

La variable est la distance entre la visite et son successeur : = , . Cette variable permet d’élaborer des stratégies de parcours de l’arbre, basées sur les distances entre les visites.

La variable est « l’inverse » de la variable du successeur ( ), et désigne le prédécesseur de . Cet ensemble de variables n’est pas obligatoire, mais celles-ci servent à renforcer le modèle en propageant les informations en « remontant » le long des tournées. Si une information est déduite sur une visite , les variables successeurs et les contraintes associées transmettent l’information vers les visites succédant dans la tournée, mais cette information ne peut pas être transmise vers les visites qui précédent dans la tournée. Grâce aux variables , l’information contenue sur une visite peut être propagée aux visites la précédant. La création de la variable impose de former des tournées « fermées », afin d’obtenir une bijection entre les successeurs et les prédécesseurs. La bijection permet une modélisation efficace pour les solveurs PPC. Le successeur d’un dépôt d’arrivée est le dépôt de départ et le prédécesseur d’un dépôt de départ est le dépôt d’arrivée (voir Figure 17).

6

8

Tournée de w

1

s

6

=1

pred

6

=8

1

5

s

8

=6

pred

8

=5

Dépôt de

départ

Dépôt

d’arrivée

Figure 17 Tournée « fermée »

En résumé, les variables du modèle PPC sont les suivantes :  , l’affectation de la visite à un employé.

 , le successeur de la visite .

 , la position de la visite dans sa tournée.  , le prédécesseur de la visite .

 , la date d’arrivée de l’employé sur le sommet .  , la date de début de service sur le sommet .  , la date de fin de service sur le sommet .  , la date de départ de l’employé du sommet .  , la distance entre et son successeur .  , la distance totale à minimiser.

est une constante entière suffisamment grande, représentant l’horizon de temps.

Afin de faciliter la compréhension, la déclaration des domaines des variables est divisée en trois parties : la définition des variables pour les visites, suivie de la définition des variables pour les dépôts de départ, et enfin la définition des variables pour les dépôts d’arrivée. Les déclarations des variables sont différentes, car certaines valeurs sont impossibles suivant le type du nœud : par exemple, le successeur d’un dépôt de départ ne peut pas être un autre dépôt de départ. Dans un souci de clarté, les définitions des domaines sont notées (DV), et les contraintes du modèle PPC sont numérotées (PPC).

Le sommet 0 est fictif. Toutes les variables du sommet 0 sont initialisées à 0 (DV 1).

{ ; ; ; ; ; ; ; ; } = 0 (DV 1)

Définition des variables pour les visites

Les définitions des variables concernant les visites (hors dépôts) sont numérotées de (DV 2) à (DV 12).

Une visite peut être affectée à n’importe quel employé numéroté de 1 à | | (DV 2). Le successeur = d’une visite est soit une autre visite ( ∈ ) soit un dépôt d’arrivée ( ∈ ) (DV 3). Le rang d’une visite dans une tournée varie entre 1 (car le dépôt de départ est au rang 0) et | | qui est le nombre de visites (cas où toutes les visites sont dans la même tournée)

(DV 4). Le prédécesseur = d’une visite est soit une autre visite ( ∈ ), soit un dépôt de départ ( ∈ ) (DV 5).

(DV 6) définit la date d’arrivée de l’employé sur la visite . Celle-ci doit être inférieure à borne supérieure de la fenêtre de temps de la visite ([ ; ]). L’employé peut arriver sur la visite avant sa borne inférieure, mais il ne peut commencer celle-ci avant la date d’ouverture de la fenêtre de temps (DV 7).

La date de fin de la visite doit être dans la fenêtre de temps [ + ; + ] (DV