0% ont trouvé ce document utile (0 vote)
63 vues54 pages

Cours 2

Transféré par

monarka.yanno
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
63 vues54 pages

Cours 2

Transféré par

monarka.yanno
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Christelle CAILLOUET

([email protected])
Aide à la décision
Utilisation d'information :
— On a beaucoup de données et une puissance de calcul énorme.
Comment les utiliser pour obtenir l'aide à la décision voulue?

1. Réfléchir rigoureusement aux problèmes d’optimisation :


— Qu'est-ce qu'on veut faire? Qu'est-ce qui nous empêche de le faire?
Quelles réalités influencent ou limitent nos actions?
— Autrement, il s'agit de la bonne modélisation.

2. Utiliser le logiciel disponible :


— modélisation efficace
— utilisation intelligente du logiciel

— Ces deux aspects sont inséparables.

2
Aide à la décision
— Dans les entreprises où on hésite à utiliser les
méthodes ou outils d'optimisation, c'est souvent à
cause de :
— un manque de temps (pour formuler un modèle, pour
attendre qu'un logiciel résolve le modèle, pour modifier,
affiner, et résoudre le modèle, etc.)
— un manque d'argent (pour la main d’œuvre nécessaire
à ce qui est dit au point précédent, pour payer un
logiciel, pour payer des consultants, etc.)

— C'est pour les situations dans lesquelles on prend les


décisions stratégiques (à long terme) où ces raisons
sont moins compréhensibles.
3
Outils et logiciels pour
l’optimisation
— Utiliser l’outil informatique pour prendre les
meilleures décisions.

— Un logiciel d’optimisation est composé de :


— un solveur : le moteur qui fait l'optimisation
— une langue de modélisation : l'interface qui nous
permet de communiquer le modèle au solveur
— un environnement de développement : des éditeurs
et autres logiciels qui nous permettent de créer le
modèle que le solveur va lire.

4
Langage de modélisation
— La langue est composée du vocabulaire, de la syntaxe,
etc., qui définissent un modèle pour le solveur, et qui
donnent au solveur les commandes de résoudre le
modèle et de sortir des données.

— Important: Il s'agit toujours d'une langue formelle. Le


solveur comprend exactement ce que vous lui
communiquez et non pas ce que vous voulez
communiquer!

5
Environnement de développement
— Aide l'utilisateur aux activités suivantes :
— écrire un modèle correctement dans la langue associée
— utiliser la bonne syntaxe
— trouver et corriger des erreurs
— lancer le solveur
— sortir et analyser les résultats, etc.

6
Solveur
— C'est le module qui fait le calcul mathématique.

— Nous allons étudier certaines méthodes qu'emploient


les solveurs :
— Programmation linéaire,
— Optimisation de flots des réseaux,
— Algorithmes de plus courts chemins,
— Problème du voyageur de commerce,
— etc.

7
Outils et logiciels pour
l’optimisation
— Logiciels commerciaux :
— Spécifiques à un secteur d’activité (transport - TMS, livraison
– tournées, planning, emploi du temps, etc.)
— Le solveur est lui-même commercial ou l’algorithme
implémenté est opaque.
— La langue de modélisation est spécifique au logiciel.
— L’environnement de développement est ergonomique pour
une utilisation la plus large possible.

— Les logiciels ont souvent des coûts de licence exorbitants et


pour rentabiliser leur exploitation, il faut avoir un nombre
important de données à gérer.
8
Outils et logiciels pour
l’optimisation
— Dans cette ressource :
— Environnement de développement : Eclipse ou IntelliJ

— Langage de modélisation : Java

— Solveur : IBM CPLEX


https://www.ibm.com/fr-fr/products/ilog-cplex-
optimization-studio
disponible gratuitement pour les académiques

9
C. Caillouet M213 - POO 10
Eléments d'un modèle
— La modélisation par la programmation mathématique
exige de bien préciser :
— les décisions qu'on peut prendre;
— les limites sur ces décisions, et les relations entre ces décisions
et leurs limites;
— notre objectif;
— les données qu'il nous faut avoir pour pouvoir prendre les
meilleures décisions possibles.
— La connaissance de ces éléments est indispensable pour la
gestion efficace d'une entreprise. En effet, posséder des
données ne nous aidera pas si on ignore quelles données
sont importantes et comment les utiliser !

11
1er travail :
avoir une modélisation efficace
— Formulations correctes et précises :
— Il faut que la formulation intègre toutes les facettes
importantes du problème, sans contenir trop de détails.

— Formulations raisonnables :
— Il faut que la formulation comprenne toutes les facettes
importantes du problème, sans contenir trop de détails.

— Formulations alternatives :
— Il faut que la formulation aide les solveurs à résoudre le
problème aussi bien que possible.

12
Questions utiles pour définir un
modèle pertinent et correct
— Quel est notre objectif à atteindre ?
— Quelles sont les décisions que l'on peut prendre ?
Qu'est-ce qu'on peut/doit modifier ou changer ?
— Quelles sont les données nécessaires pour prendre et
évaluer nos décisions?
— Quelles sont les contraintes imposant des limites sur
les décisions possibles?

13
Eléments nécessaires à un
programme mathématique
— Données
— Variables
— Objectif
— Contraintes

14
C. Caillouet M213 - POO 15
La Programmation Linéaire
§ Problème d’optimisation consistant à :
n maximiser (ou minimiser) une fonction objectif

linéaire
n de n variables de décision

n soumises à un ensemble de contraintes exprimées

sous forme d’équations ou d’inéquations linéaires


§ La terminologie est due à George B. Dantzig,
inventeur de l’algorithme du simplexe (1947)

16
Mise en forme Mathématique
n Définir les variables de décision
n ensemble des variables qui régissent la situation à modéliser
n variables réelles, entières, binaires
n Préciser la fonction objectif
n fonction mathématique composée des variables de décision qui
représente le modèle physique modélisé
n fonction linéaire
n Préciser les contraintes du problème
n ensemble des paramètres qui limitent le modèle réalisable
n équations ou inéquations composées des variables de décision
n Préciser les paramètres du modèle
n constantes associées aux contraintes et à la fonction objective

17
Attention à :
• Donner une définition précise des variables en vérifiant
qu’elles sont positives (unités des variables, période
d’observation,…)
• Vérifier l’homogénéité des contraintes linéaires (paramètre
de même unité)
• Préciser le type d ’optimisation recherchée

18
Formulation mathématique
n Fonction Objectif
n Maximiser ou minimiser z = c1x1 + c2x2 + c3x3 + … + cnxn

n Contraintes
n a11x1 + a12x2 + a13x3 + … + a1nxn (£, =, ³) b1

n a21x1 + a22x2 + a23x3 + … + a2nxn (£, =, ³) b2

n am1x1 + am2x2 + am3x3 + … + amnxn (£, =, ³) bm

n Contraintes de non-négativité
n xj ³ 0 ; j = 1, 2, 3, … n

n avec
n xj variables de décision (inconnues)
n aij, bi, cj paramètres du programme linéaire

19
Classification des contraintes
Contraintes de capacités
Contraintes de temps
Contraintes d’approvisionnement
Contraintes de stockage
Contraintes de marché
Contraintes de sous-traitance

20
Terminologie de la solution
n Solution réalisable
n Solution où toutes les contraintes du modèle sont
satisfaites
n Zone de solution
n Ensemble de toutes les solutions réalisables
n Solution optimale
n Solution réalisable où la fonction objectif atteint la
meilleure valeur, maximum ou minimum
n Plusieurs solutions optimales possibles

21
Terminologie du problème
n Problème irréalisable
n s'il n'admet pas de solutions réalisables
n Problème non borné
n si aucune des solutions réalisables n'est optimale
nProblème sous forme standard (ou canonique)
Max (c1x1 + c2x2 + c3x3 + … + cnxn)
ai1x1 + ai2x2 + ai3x3 + … + ainxn £ bi; i = 1, 2, 3, … m
xj ³ 0 ; j = 1, 2, 3, … n
Par quelques transformations simples tout programme
linéaire peut se ramener à un programme sous forme
canonique.
22
Transformation d ’un problème
Cas d ’une variable négative x : on pose y=-x
Cas d ’une variable de signe quelconque x : on introduit
deux variables positives x1 et x2 en posant x=x1-x2
Cas d ’une recherche de minimum : On remarque que
Min(Z)= -Max(-Z)
Cas d ’une contrainte de type ³ on prend l ’opposé de
l ’inégalité et on obtient une contrainte linéaire de type £

23
Exemple

MAX: 350X1 + 300X2

T.Q.: 1X1 + 1X2 <= 200


9X1 + 6X2 <= 1566
12X1 + 16X2 <= 2880
X1 >= 0
X2 >= 0

24
Solution Réalisable
Posons X2 = 0
1ère contrainte : 1X1 <= 200
2è contrainte : 9X1 <=1566 ou X1 <=174
3è contrainte : 12X1 <= 2880 ou X1 <= 240
Si X2=0, la valeur maximale de X1 est 174 et la
valeur de l'objective est:

(350 * 174) + (300 * 0) = 60 900

C’est une solution possible mais est-elle optimale?

Non!
25
Résolution problème PL: approche graphique
n Les contraintes d'un programme linéaire définissent une
zone de solution.

n Le meilleur point dans la zone de solution correspond à la


solution optimale.

n Pour des problèmes à 2 variables, il est facile de tracer la


zone de solution et de trouver la solution optimale
graphiquement.

26
Contraintes linéaires à deux
variables
Une contrainte linéaire à deux variables est de l ’une de ces
cinq formes :
a1x1+a2x2=b Dans ce cas, les solutions sont les points d ’une
droite du plan
a1x1+a2x2£b ou ³b Dans ce cas, les solutions sont les points
d ’un demi plan limité par la droite (droite comprise)
a1x1+a2x2>b ou <b Dans ce cas, les solutions sont les points
d ’un demi plan limité par la droite (droite exclue)

27
La fonction objectif
La fonction économique a pour forme Z= c1x1+c2x2
Il faut la rendre maximum.
Les droites Dk d ’équation c1x1+c2x2=k s ’appellent droites
d ’iso-profit. Elles sont parallèles entre-elles.

28
Principe de la résolution graphique
Etape 1 : On représente graphiquement toutes les contraintes.
Etape 2 : La zone du plan qui respecte les contraintes
correspond à un polygone fermé appelé polygone des solutions
réalisables (ou zone de solution). Si ce domaine est vide le
problème est impossible.
Etape 3 : Parmi toutes les droites d ’iso-profit, on recherche
celle qui donne le profit maximum (celle qui est la plus à droite
en restant dans le polygone des solutions réalisables).

29
Exemple

MAX: 350X1 + 300X2

T.Q.: 1X1 + 1X2 <= 200


9X1 + 6X2 <= 1566
12X1 + 16X2 <= 2880
X1 >= 0
X2 >= 0

30
X2 Tracé de la première contrainte
250

(0, 200)
200

X1 + X2 = 200
150

100

50
(200, 0)
0
0 50 100 150 200 250 X1

31
X2 Tracé de la deuxième contrainte
(0, 261)
250

200 9X1 + 6X2 = 1566

150

100

50

(174, 0)
0
0 50 100 150 200 250 X1

32
X2 Tracé de la troisième contrainte
250
(0, 180)

200

150

12X1 + 16X2 = 2880


100

Zone de solution
50

(240, 0)
0
0 50 100 150 200 250 X1

33
Tracé d’une droite de la fonction objectif
X2

250

200

(0, 116.67) Fonction objectif


150
350X1 + 300X2 = 35000

100

50 (100, 0)

0
0 50 100 150 200 250 X1

34
Un deuxième tracé de la fonction objectif
X2

250

(0, 175) Fonction objectif


200
350X1 + 300X2 = 35000

Fonction objectif
150
350X1 + 300X2 = 52500

100

(150, 0)
50

0
0 50 100 150 200 250 X1

35
X2 Tracé de la solution optimale
250

Fonction objectif
200
350X1 + 300X2 = 35000

150
Solution optimale

100
Fonction objectif
350X1 + 300X2 = 52500
50

0
0 50 100 150 200 250 X1

36
Calcul de la solution optimale
La solution optimale se trouve à l’intersection des
contraintes :
X1 + X2 = 200 (1)
9X1 + 6X2 = 1566 (2)

De (1) nous avons:


X2 = 200 -X1 (3)

En substituant (3) pour X2 dans (2) nous avons:

9X1 + 6 (200 -X1) = 1566


ce qui fait X1 = 122

37
Calcul de la solution optimale
— La solution optimale est :

— X1 = 122
— X2 = 200-X1=78

— Objective = (350*122) + (300*78) = 66 100

38
Solutions obtenues
Dans le cas où une solution existe deux possibilités peuvent se
présenter :
On a une solution unique. Il s ’agit d ’un sommet du polygone
des solutions réalisables.
On a une infinité de solutions. Il s ’agit de tout un coté du
polygone des solutions réalisables. Ce coté est parallèle aux
droites d ’iso-profit.

39
C. Caillouet M213 - POO 40
IBM ILOG CPLEX Optimization
Studio 20.1
— Moyen le plus rapide de créer des modèles d'optimisation
efficaces et des applications de pointe permettant de traiter
les multiples problèmes de planification et
d'ordonnancement.
— Contient :
— environnement de développement intégré,
— langage de modélisation descriptive,
— outils et solveurs avancés, traitant les problèmes de
programmation mathématique et les problèmes de
programmation par contraintes.

— Il prend en charge le processus complet de développement


et de résolution des modèles.

C. Caillouet M213 - POO 41


Algorithmes
— Programmation linéaire
— Simplexe primal
— Simplexe dual
— Simplexe pour les problèmes de flot
— Point intérieur
— Programmation quadratique
— Simplexe primal
— Simplexe dual
— Point intérieur
— Programmation à contraintes quadratiques
— Point intérieur

C. Caillouet M213 - POO 42


Composantes de Cplex
— S’utilise sous différentes manières :
— Mode intéractif
— Cplex Callable library (bilbiothèque en langage C) :
utilise les matrices pour représenter un problème
— Ilog Concert Technology : utilise les objets et les
méthodes pour représenter un problème avec les
langages de programmation Python, C++, Java…
— Avec un langage propre de modélisation tel que OPL,
MPL, AMPL…

C. Caillouet M213 - POO 43


IBM ILOG CPLEX Optimization
Studio 20.1
— Disponible pour toutes les plateformes : Windows,
MacOS, Linux

— A l’IUT : exécutable Windows disponible dans


SupportCours/BUT3

— Pour vos machines personnelles : lien vers les


exécutables depuis le cours Moodle

C. Caillouet M213 - POO 44


Utilisation de l’API Java
— Installation dans
C:\Program Files\IBM\ILOG\CPLEX_Studio201

— Répertoire lib : cplex.jar


— Contient l’ensemble des classes nécessaires à la
construction d’un programme linéaire

— Répertoire bin : solveur cplex.exe


— Solveur qui est appelé pour la résolution

C. Caillouet M213 - POO 45


Dans Eclipse
— Créer un Java Project contenant vos classes

— Mettre à jour le build path : inclure la librairie pour


utiliser les
classes

C. Caillouet M213 - POO 46


Dans la classe
— Pour utiliser les interfaces Java Ilog Cplex, vous devez
importer les 2 packages :
import ilog.concert.*;
import ilog.cplex.*;
https://www.ibm.com/docs/en/icos/22.1.1?to
pic=optimizers-cplex-java-reference-manual

— Création d’une instance d’un objet Cplex :


IloCplex model = new IloCplex();

— Type IloCplex qui implémente l’interface


IloMPModeler et donc IloModeler.
C. Caillouet M213 - POO 47
Les variables
— Elles sont de type :
— IloNumVar : variables continues
— IloIntVar : variables entières (qui hérite de IloNumVar)

— Chacun de ces objets doit ensuite être intégré au modèle


avec ces informations : (borne inf, borne sup, nom)

— Continue
— Entière
— Booléenne

C. Caillouet M213 - POO 48


Les expressions
— C’est une combinaison de variables : somme,
différence, multiplication par des constantes, …

— Une expression est un objet de type IloNumExpr, ou


IloLinearNumExpr

— Pour chaque opération (+, -, *, /, …), il existe une


fonction ui s’applique sur l’objet IloCplex.

C. Caillouet M213 - POO 49


Les expressions
— Exemple
pour écrire 𝑥 + 2𝑦

— Pour exprimer une


expression
linéaire, on peut
utiliser le produit
scalaire

C. Caillouet M213 - POO 50


Les contraintes
— Ce sont des objets de type IloRange

— Une contrainte se définit à partir :


— D’une expression
— D’une borne inférieure et/ou supérieure ou une égalité

— Pour ajouter une contrainte, on applique les fonctions au


modèle :

C. Caillouet M213 - POO 51


La résolution
— La fonction objectif :
— C’est une expression
— On spécifie dans le modèle si on la maximise ou
minimise :
— model.addMaximize(xp);
— model.addMinimize(xp);

— L’appel au solver :
— model.solve();

C. Caillouet M213 - POO 52


A l’exécution
— Ouvrir les configurations

— Ajouter le chemin
jusqu’à cplex.exe du
répertoire bin de Cplex
dans les propriétés de la
VM avec l’option
-Djava.library.path

C. Caillouet M213 - POO 53


Le résultat
— Récupérer la valeur de l’objectif :
— model.getObjValue();

— Récupérer les valeurs des variables :


— model.getValue(v1);
— model.getValues(var);

— Obtenir le statut : model.getStatus();

— Fermer le solveur : model.end();

C. Caillouet M213 - POO 54

Vous aimerez peut-être aussi