IFT575 Modèles de recherche opérationnelle (RO). Programmation en nombres entiers a. Modélisation
Terminologie de base Programmation en nombres entiers Programmation linéaire avec certaines variables contraintes à prendre des valeurs entières Programmation non linéaire en nombres entiers Programmation non linéaire (sec. 7) avec certaines variables entières Programmation pure en nombres entiers toutes les variables sont entières Programmation (mite) en nombres entiers certaines variables sont entières Programmation 0- (binaire) les variables entières sont à valeurs 0 ou (binaires). Programmation entiers
Eemple : California Mfg (H&L,.) Choisir de nouveau emplacements pour construire des usines et des entrepôts Deu emplacements : LA et SF On ne peut construire un entrepôt que dans une ville où l on a aussi une usine On ne peut construire plus d un entrepôt On associe à chaque construction (d une usine ou d un entrepôt dans chacun des lieu envisagés) Sa valeur estimée Son coût de construction Objectif : maimiser la valeur totale estimée, en ne dépassant pas une limite maimum sur les coûts. Programmation entiers
Eemple (suite). Usine à LA. Usine à SF. Entrepôt à LA. Entrepôt à SF Limite maimum Valeur estimée (millions $) 9 5 6 - Coût de construction (millions $) 6 5 0. Programmation entiers
Modèle California Mfg Variables : j 0 si la décision si la décision Objectif : maimiser la valeur estimée totale ma Contraintes fonctionnelles Limite maimum sur les coûts de construction On ne peut construire plus d un entrepôt j est approuvée ( oui) j n'est pas approuvée ( non) Z 9 5 6 6 5 0. Programmation entiers 5
Modèle California Mfg (suite) Contraintes fonctionnelles (suite) Entrepôt à LA seulement si usine à LA Entrepôt à SF seulement si usine à SF Contraintes 0- (intégralité) Ou encore j { 0,}, j,,, 0 j et j entier, j,,,. Programmation entiers 6
. Programmation entiers 7 Modèle California Mfg : résumé entier,,, 0,,,,,, 0 0 0 5 6 6 5 9 ma Z
Modélisation avec Ecel On applique la même approche que pour la PL Ecel Solver permet deu tpes de contraintes particulières pour modéliser les variables entières : bin : pour représenter les variables 0- ent : pour représenter les variables entières générales Ecel Solver résout les modèles de programmation en nombres entiers par l algorithme de branch-andbound (voir plus loin) Voir l eemple California Mfg. Programmation entiers 8
Utilisation des variables binaires Le modèle illustre deu cas classiques d utilisation des variables binaires Alternatives mutuellement eclusives : on ne peut construire plus d un entrepôt Décisions contingentes : on ne peut construire un entrepôt que là ou on a construit une usine Voons d autres eemples utilisant des variables 0-. Programmation entiers 9
Contraintes mutuellement eclusives Prenons l eemple de deu contraintes L une ou l autre des deu contraintes doit être satisfaite, mais pas les deu simultanément! soit 8 soit 6 Soit M un très grand nombre; le sstème précédent est équivalent à soit 8 soit 6 M 8 M 6. Programmation entiers 0
Contraintes mutuellement eclusives En introduisant une variable binaire, on obtient un sstème équivalent 8 6 M La signification de cette variable est :, si la première contrainte est satisfaite 0, si la deuième contrainte est satisfaite C est un autre eemple d alternatives mutuellement eclusives M ( ). Programmation entiers
Contraintes mutuellement eclusives On aurait pu aussi introduire deu variables binaires, si la première contrainte est satisfaite, si la deuième contrainte est satisfaite On doit avoir Pour se ramener au modèle précédent, il suffit de poser et - C est un cas particulier de la situation suivante : K parmi N contraintes doivent être satisfaites Dans ce cas plus général, on introduit N variables binaires. Programmation entiers
K contraintes parmi N Soit les N contraintes : f (,,..., n) dj, j,,..., j On introduit alors N variables binaires : j, si la j ème contrainte est satisfaite f j(,,..., n) dj M ( j ), j,,..., Il reste à spécifier que seulement K de ces contraintes peuvent être satisfaites : N j j K N N. Programmation entiers
Fonction aant N valeurs possibles Soit la contrainte : f (, ou,..., n) d ou d ou... dn On introduit alors N variables binaires : j, si la fonction vaut d j La contrainte s écrit alors ainsi : f (,,..., N j j n ) N j d j j. Programmation entiers
Fonction aant N valeurs possibles Eemple Wndor Glass Supposons que le temps de production maimum à l usine n est pas toujours 8h, mais pourrait être également 6h ou h Cette contrainte s écrit alors : On introduit alors variables binaires : 8 6 ou ou... ou 6 8. Programmation entiers 5
Objectif avec coûts fies Supposons que le coût associé à un produit j est composé de deu parties : Un coût fie initial k j encouru dès qu une unité de j est produite Un coût c j proportionnel au nombre d unités de j produites Le coût total associé à la production de j unités est: fj( j ) { k si > j c j j j 0 0 sij 0. Programmation entiers 6
Objectif avec coûts fies Supposons que l objectif consiste à minimiser la somme de n fonctions avec coûts fies : min n On introduit alors n variables binaires : Z j L objectif s écrit alors ainsi : min Z j ( fj j ) { si > j 0 0 sij 0 n j ( c j j k j. Programmation entiers 7 j )
Objectif avec coûts fies Mais comment représenter la relation entre j et j? Les valeurs de j et de j dépendent l une de l autre : il s agit d un eemple de décisions contingentes On doit donc avoir une contrainte qui précise que j vaut 0 si j 0 Mais contrairement à la situation dans notre eemple California Mfg, les deu variables ne sont pas binaires: j peut être quelconque Que faire?.... Programmation entiers 8
Objectif avec coûts fies Soit M j une borne supérieure sur la valeur de j On écrit la relation entre les deu variables ainsi : Alors : Si j 0, alors j 0 Si j, alors j M j Si j > 0, alors j j Mj j Si j 0, alors toute solution optimale satisfait j 0 lorsque k j > 0 (si k j 0, la variable j est inutile). Programmation entiers 9
Objectif avec coûts fies minz n Les contraintes originales du problème j ( M j j c j j j kjj) { } j n 0,,,,..., j. Programmation entiers 0
Variables entières en variables 0- Soit une variable entière générale bornée : Soit N l entier tel que 0 u N u < La représentation binaire de est N Intérêt de cette transformation : les méthodes de programmation 0- souvent plus efficaces que les méthodes de programmation en nombres entiers Mais augmentation du nombre de variables! j 0 j j N. Programmation entiers
Eemple Trois tpes de produits Deu usines Profit/unité de produit (000 $) Ventes potentielles par produit (unités/semaine) Capacité de production par usine (h/semaine) Pas plus de deu produits peuvent être fabriqués Une seule des deu usines doit être eploitée. Programmation entiers
Eemple (suite) Produit tps production (h/unité) Produit tps production (h/unité) Produit tps production (h/unité) Capacité de production (h/semaine) Usine 0 Usine 6 0 Profit/unité 5 7 (000 $) Ventes potentielles 7 5 9 (/semaine). Programmation entiers
Eemple (suite) Variables : j nombre d unités fabriquées du produit j Pour représenter la contrainte «Pas plus de deu produits», on doit introduire des variables 0- : j { si > j 0 0 sij 0 Pour représenter la contrainte «Une seule des deu usines», on doit ajouter une variable 0- : { si l' usine est choisie 0 sinon. Programmation entiers
Eemple (suite) Objectif : maz 5 Ventes potentielles : Pas plus de deu produits : 7 7, 5, Relation entre variables continues et variables 0- : 9, 9 5, 7. Programmation entiers 5
. Programmation entiers 6 Eemple (suite) Une seule des deu usines : En utilisant la variable 0- (et M très grand) : 0 6 soit 0 soit 0 6 ) ( 0 M M
Eemple : résumé ma Z 5 7, 9 5, 7 6 0 M ( 0 M,, 0 ) j { 0,}, j,,,. Programmation entiers 7
Eemple Trois tpes de produits Cinq annonces publicitaires Maimum de trois annonces/produit Nombre d annonces Produit profit, millions $ Produit profit, millions $ Produit profit, millions $ 0 0 0 0 0 -. Programmation entiers 8
Eemple : premier modèle? Variables : i nombre d annonces du produit i L hpothèse de proportionnalité est violée! On ne peut représenter l objectif sous forme linéaire uniquement avec ces variables! Nous verrons deu modèles possibles pour contourner cette difficulté. Programmation entiers 9
Eemple : premier modèle Variables : sii j 0 sinon Objectif : maz Eactement cinq annonces Définition des variables 0- ij j i j ij jij, i 5,,. Programmation entiers 0
Eemple : deuième modèle Variables : Cette définition implique : i 0 i 0, Ou encore : i i i ij i j sii j 0 sinon i i i, i, i i 0, 0,, i i i 0 0, i, i ij, i,,, 0 j ( ),. Programmation entiers
Eemple : deuième modèle (suite) Supposons que ( annonces pour le produit ) Le profit associé à cette valeur doit être Mais veut dire que chaque variable binaire associée au produit vaut Comment comptabiliser correctement la contribution de ces trois variables au profit? Solution : le profit associé à la variable ij est c ij -c ij Dans notre eemple, le profit associé à est -0 est - est - 0. Programmation entiers
Eemple : deuième modèle (suite) Objectif : maz Eactement cinq annonces i j ij 5 Définition des variables 0- ),,,, j i i ( j ij,. Programmation entiers
Eemple Une compagnie aérienne veut affecter trois équipages à des séquences de vols Il a un coût associé à chaque séquence de vols La compagnie cherche à minimiser les coûts d affectation des équipages au séquences de façon à assurer le service sur chacun de ses vols Eemple : vols et séquences de vols. Programmation entiers
. Programmation entiers 5 Eemple (suite) 9 8 9 9 8 7 5 7 6 Coût 0 9 8 7 6 5 0 9 8 7 6 5 Vol
Eemple (suite) Variables : j Objectif : ma si la séquence de vols j 0 sinon Z 7 Affecter trois équipages 7 8 8 9 j j 9 9 6 0 7 8 5 est affectée 5 9 6. Programmation entiers 6
. Programmation entiers 7 Eemple (suite) Le service doit être assuré sur chacun des vols : Et ainsi de suite (voir détails dans H&L, sec..) 0 9 7 9 6 8 5 0 7
Eemple (suite) C est un eemple de problème de recouvrement d ensemble I : un ensemble d objets (ici, les vols) J : une collection de sous-ensembles de I (ici, les séquences de vols) Ji, i Variables j I Contraintes : : les sous-ensembles dans J qui contiennent i si le sous- ensemblej est choisi 0 sinon j Ji Partitionnement d ensemble : j, i I j Ji. Programmation entiers 8 j, i I