• Aucun résultat trouvé

2.4 Revue de la litt´erature

2.4.2 Sch´emas de branchement

Les m´ethodes exactes qui ont ´et´e d´evelopp´ees `a ce jour pour le RCPSP sont toutes des proc´edures de recherche arborescente : PSE en recherche op´erationnelle ou backtracking en programmation par contraintes. Toutes font donc le choix d’un sch´ema de branchement. On peut retrouver un ´etat de l’art r´ecent des proc´edures arborescentes pour le RCPSP dans [N´eron 1999, Brucker 1999, Demeulemeester 2002]. Nous ´etudions ces m´ethodes suivant le clas- sement ´etablit dans [N´eron 1999], en adoptant un point de vue moins intuitif mais plus proche du backtracking pour les CSP : la strat´egie de branchement est pr´esent´ee, quitte `a remod´eliser le pro- bl`eme, comme la s´eparation du domaine d’une unique variable. Dans les sch´emas chronologiques par exemple, cette s´eparation est dissimul´ee par la prise en compte implicite des contraintes de pr´e-

c´edence au moment du branchement ou l’utilisation de r`egles de dominance telles que left-shift (un ordonnancement optimal est cal´e au plus tˆot). Notre objectif est de mieux comprendre comment il serait possible d’adapter les m´ethodes du RCPSP aux proc´edures bas´ees sur l’apprentissage, de type backtracking dynamique ou resolution search (chapitre5).

Nous utilisons pour cela la notation formelle des CSP avec X l’ensemble des variables et D les domaines associ´es. Un branchement se traduit par la s´eparation du domaine Dk d’une variable Xk

en deux ou plusieurs sous-domaines. Un backtrack intervient si tous les domaines sont r´eduits `a un singleton ou si le domaine d’une variable est vide.

Sch´emas chronologiques

Les sch´emas chronologiques construisent progressivement des ordonnancements partiels, en fixant `a chaque noeud de l’arbre de recherche, la date de d´ebut d’une ou de plusieurs activit´es le plus tˆot possible par respect des contraintes de pr´ec´edence et des contraintes de ressources. En r´ealit´e, la s´eparation ne se fait pas sur une d´ecision du type (Si = t ou Sj = t) mais plutˆot

sur (Si ≤ Sj ou Si ≤ Sj). Par inf´erence logique (consistance des contraintes de pr´ec´edence,...),

la d´ecision impose que i ou j doit commencer `a la date t. En g´en´eral, les arbres chronologiques sont explor´es en profondeur d’abord en choisissant d’ex´ecuter `a un instant t des activit´es qui « remplissent » la ressource ou encore des activit´es qui doivent ˆetre ex´ecut´ees au plus vite compte tenu de leurs fenˆetres de temps.

• S´equencements r´ealisables

Le sch´ema de branchement propos´e initialement par Patterson et al. [Patterson 1990] puis am´e- lior´e par Sprecher [Sprecher 1996] consiste `a ajouter une par une les activit´es `a un ordonnancement partiel. En fait, il s’agit d’une ´enum´eration implicite de l’ensemble des s´equencements r´ealisables : les permutations (X0, . . . , Xn+1) du vecteur (0, 1, . . . , n + 1) telles qu’il existe un ordonnancement

r´ealisable S avec SX0 ≤ SX1 ≤ . . . ≤ SXn+1. On part de la s´equence (X0 = 0) avec les domaines

Di = {0} si i = 0, Di = {1, . . . , n + 1} sinon. On ´etend progressivement cette s´equence en bran-

chant dans l’ordre sur X1, X2, jusque Xn+1. On branche sur une variable Xk en l’instantiant `a

chacune des valeurs j du domaine Dk, r´eduit pr´ealablement par consistance des contraintes de

pr´ec´edence et de ressources avec les d´ecisions d´ej`a prises pour (X1, . . . , Xk−1). Comme plusieurs

s´equencements peuvent correspondre `a un mˆeme ordonnancement, des r`egles de dominance sont aussi propag´ees pour ´eliminer ces s´equencements redondants. Enfin, `a partir d’un s´equencement r´ealisable, on d´etermine un ordonnancement r´ealisable par calcul de plus long chemin.

Baptiste et Le Pape [Baptiste 1999] emploient un sch´ema similaire mais d´eveloppent un arbre binaire en s´eparant le domaine d’une variable Xk en deux sous-domaines {j} et Dk\ {j}.

Stinson [Stinson 1978] et Mingozzi et al. [Mingozzi 1998] ´etendent un ordonnancement partiel `a chaque noeud en y int´egrant plusieurs activit´es `a la fois. Le sch´ema de branchement est sem- blable au pr´ec´edent puisqu’il construit un s´equencement, non plus d’activit´es, mais d’ensembles admissibles (section2.3.2) d’activit´es. Les activit´es sont donc ordonnanc´ees par « tron¸cons ». Le branchement sur une variable se fait en l’instantiant `a chacune des valeurs de son domaine, au- trement dit, `a chaque ensemble admissible possible compte tenu des contraintes de dur´ee et de non-pr´eemption des activit´es d´eja plac´ees. Ce sch´ema est en relation directe avec la formulation lin´eaire de Mingozzi2.3.2pour le calcul d’une borne inf´erieure.

• D´ecalages minimaux et cut-set

Les sch´emas chronologiques par blocs peuvent ˆetre consid´er´es d’une autre mani`ere au moyen des variables X0, X1, . . . , XT instanci´ees dans cet ordre, o`u chaque Xtrepr´esente l’ensemble admis-

et al. [Christofides 1987] sur lequel est bas´ee la m´ethode performante de Demeulemeester et Her- roelen [Demeulemeester 1997], on d´efinit une variable Xt pour mod´eliser `a la fois l’ensemble It

des activit´es termin´ees avant ou au temps t et un certain ensemble DAt (´eventuellement vide)

d’activit´es `a d´ecaler, c.-`a-d. devant d´ebuter apr`es le temps t + 1. `A chaque noeud de l’arbre est associ´e un temps t tel que toutes les variables Xs, s < t, sont instanci´ees (Ds = {Is} × {DAs})

et Xt est partiellement instanci´e dans le sens o`u It est d´efini mais il existe plusieurs alternatives

DAtavec DAt∩ It= ∅. De nouveau, les contraintes de pr´ec´edence, de ressources ou encore la r`egle

du left-shift permettent de r´eduire le nombre d’alternatives : on ne consid`ere que les ensembles DAtd’activit´es ayant tous leurs pr´ed´ecesseurs dans Itet dont l’ordonnancement au plus tˆot (par

respect des pr´ec´edences et des DAspour s < t) produit un conflit de ressources. D’apr`es une autre

r`egle de dominance [Demeulemeester 1992], on peut encore restreindre l’ensemble des alternatives aux seules alternatives minimales pour cette d´efinition. S’il existe plusieurs alternatives (donc non vides), on branche sur chacune d’elles. La contrainte de d´ecaler les activit´es de DAtau moins au

temps t + 1 permet d’ordonnancer (au plus tˆot) d’autres activit´es, n’appartenant pas `a Itdonc se

terminant apr`es le temps t + 1. Soit Jtles nouvelles activit´es ordonnanc´ees qui se terminent le plus

tˆot et t0 leur date de fin, on pose alors D

s= {It} × {∅}, pour tout temps s = t, . . . , t0− 1 et on

it`ere la recherche sur la variable Xt0 avec It0 = It∪ Jt.

Une r`egle de dominance particuli`ere est utilis´ee dans [Demeulemeester 1992], la r`egle du cut-set, bas´ee sur les r`egles de [Stinson 1978, Talbot 1978]. Par son efficacit´e, elle a souvent ´et´e mise en oeuvre depuis pour am´eliorer les proc´edures arborescentes pour le RCPSP. Elle s’apparente, en fait, `a une technique d’apprentissage o`u les ordonnancements partiels sont m´emoris´es. Un ordon- nancement partiel est alors ´elimin´e de la recherche d`es qu’il est identifi´e comme ´etant domin´e par un autre pr´ec´edement construit. La gestion des ordonnancements partiels est g´en´eralement assez sommaire et il serait int´eressant de la comparer avec des techniques de backtrackings intelligents plus ´evolu´es.

Fenˆetres de temps

Carlier et Latapie [Carlier 1991] ont propos´e un tout autre sch´ema de branchement en s´eparant sur les fenˆetres de temps des activit´es. Il s’agit d’un backtracking sur un mod`ele CSP o`u les variables X sont les dates de d´ebut des activit´es et les domaines D, les fenˆetres de temps [ES, LS]. Un branchement est effectu´e pour une activit´e i en s´eparant sa fenˆetre par dichotomie : [ESi, LSi−

bMi/2c] et [ESi+ dMi/2e, LSi], avec Mi= LSi− ESi. Cette m´ethode d´epend fortement du choix

de l’activit´e `a un noeud donn´e. L’activit´e est s´electionn´ee de fa¸con `a maximiser l’am´elioration de la borne inf´erieure bas´ee sur des probl`emes `a m machines.

Plus r´ecemment, Dorndorf et al. [Dorndorf 2000] ont utilis´e un sch´ema de branchement binaire similaire mais en s´eparant la fenˆetre de temps d’une activit´e i selon la d´ecision Si = ESi ou

Si> ESi.

Sch´emas d’ordonnancement

Un autre sch´ema non-chronologique est propos´e par Brucker et al. [Brucker 1998]. Il s’appuie aussi sur une formulation CSP bas´ee sur le s´equencement relatif des paires activit´es : les paires en pr´ec´edence ou conjonction (C), en disjonction (D), ou en parall`ele (P ). Il est ainsi possible de cr´eer un arbre binaire ou ternaire. Dans la version binaire, on branche sur la d´ecision i − j ∨ i k j, tandis que dans la version ternaire, on branche sur i → j ∨j → i∨i k j. Comme pour le sch´ema pr´ec´edent, le choix de la paire d’activit´es `a consid´erer est important et est d´etermin´e selon l’am´elioration d’une borne inf´erieure.

`

A chaque noeud de l’arbre correspond un sch´ema d’ordonnancement (C, D, P ), et `a chaque feuille, un sch´ema d’ordonnancement tel que C ∪ D ∪ P = V . En effet, quand toutes les paires d’ac- tivit´es sont li´ees par une relation (pr´ec´edence, disjonction ou parrall´elisme), les auteurs montrent qu’il est possible, en temps polynomial, soit de construire un ordonnancement r´ealisable domi- nant tout autre ordonnancement repr´esent´e par le mˆeme sch´ema (C, D, P ), soit de prouver qu’il n’existe pas de tels ordonnancements r´ealisables. L’algorithme construit une orientation transitive de (C, D, P ), en orientant arbitrairement toutes les disjonctions de sorte que le graphe de pr´ec´e- dence ainsi obtenu soit transitif. Si une telle orientation existe, alors elle correspond `a un unique ordonnancement dominant obtenu par calcul des plus longs chemins `a partir de 0.