présentation de opl studio prise en main de l’outil cours...

46
1 Présentation de OPL Studio Prise en main de l’outil Cours de RO et de PPC ESIL A l’attention des étudiants de l’ESIL INFO Auteur Laurent Henocque

Upload: others

Post on 28-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

1

Présentation de OPL StudioPrise en main de l’outilCours de RO et de PPCESIL

• A l’attention des étudiants de l’ESIL INFO• Auteur Laurent Henocque

Page 2: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

Licence Creative Commons

Cette création est mise à disposition selon le ContratPaternité-Partage des Conditions Initiales àl'Identique 2.0 France disponible en ligne

http://creativecommons.org/licenses/by-sa/2.0/fr/

ou par courrier postal à Creative Commons, 559 NathanAbbott Way, Stanford, California 94305, USA.

Page 3: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

3

Préambule

Ces transparents proposent une présentation trèssuccincte et sommaire de l'outil ILOG OPL Studio utiliséà l'ESIL pour les cours de recherche opérationnelle et deprogrammation par contraintes

ILOG OPL Studio est un outil de la société ILOG,partenaire de l'ESIL

http://www.ilog.fr http://www.esil.univ-mrs.fr

Réalisé par Laurent Henocque - mis à jour le 27/4/2008

Page 4: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

4

OPL Studio

Opl Studio est un outil d’optimisation combinatoire, quicombine sous une interface unique, plusieurs « moteursde contraintes » dont essentiellement:

Un module de programmation linéaire et mixte, issu dulogiciel Cplex

Un module de programmation par contraintes, isolémentappelé Ilog Solver

Un module de calcul de plannings en présence decontraintes de ressources : Ilog Scheduler

Ces outils sont appelés de manière transparente par OplStudio, qui permet de spécifier des problèmesd’optimisation en utilisant un langage unifié

Page 5: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

5

Lancer OPL Studio

Votre compte est normalement paramétré pour permettreun lancement immédiat de ce programme.

Taper la commande « oplst& » pour lancer opl. La console affiche alors différents messages relatifs aux

clés des licences logicielles, puis l’interface utilisateurapparaît.

Il y a de petites différences d’aspect entre les copiesd’écran utilisées dans ce support et l’interface utilisateurque vous utilisez.

Page 6: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

6

Présentation deILOG OPL Studio

• BasesProjetsInformationsVisualisation dynamiqueDébugScripts

Page 7: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

7

Fichiers et projets

OPL studio sépare la spécification du modèle decontraintes (le fichier modèle « .mod ») des données quiservent à l’initialiser (le fichier données « .dat »)

Un fichier projet permet de grouper un fichier modèle etun fichier de données associé

Le même fichier modèle peut être réutilisé par plusieursprojets distincts

Un quatrième type de fichier, les scripts, permetd’automatiser et de combiner des appels aux projets etleur résolution, mais sort du cadre de ce document

Page 8: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

8

ILOG OPL Studio

Fenêtre Source

Fenêtred'explorationdu modèle

Résultats

Page 9: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

9

Créer et sauver des Modèles etFichiers de données

Page 10: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

10

Exemple Simple

Créer un nouveau Modèle

Déclarer deux variablesvar float y;var float x;

Déclarer une équationsolve {x+2*y=1};

Sauver ex1.mod

Page 11: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

11

Exécuter un Modèle

RUN

Page 12: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

12

Solution

Stop

Page 13: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

13

Autre exemple

Système d’équations linéaires :var float x, float y, float z;solve { x = 2*y+z+3; x = y+2*z+2; 2*x = y+z+1;};

SolutionLinear programming solutionx = -0.500000y = -1.500000z = -0.500000

Page 14: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

14

Exemple inconsistant

Exemplevar float x;var float y;solve { // (deux droites parallèles disjointes) x=2*y+3; x=2*y+4; };

Solution“OPL Studio is idle: no solution found”

Page 15: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

15

Un vrai programme linéaire

Exemple (observez que la matrice de contraintes estintroduite par le mot clé « subject to »)var float x;var float y;maximize (y)subject to { x>=0; y>=0; y=1-x;

};

Solutiony=1

Page 16: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

16

Présentation deILOG OPL Studio

Bases• ProjetsInformationsVisualisation dynamiqueDébugScripts

Page 17: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

17

Projets Un projet combine un modèle et un ou plusieurs fichiers

de données

Page 18: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

18

Créer un projet

Sauver le Modèle courant et le fermer Sélectionner File > New > Project

pour insérer un fichier

Page 19: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

19

Insérer un Modèle dans le projet

Page 20: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

20

Commandes de projetSauver

Insérer un fichier de données

Delete

Options

Fermer

Sauver

Page 21: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

21

Autres commandes

Ouvrir

Fermer

Ouvrir un modèle

Sauver le fichier courant

Sauver tout

Fermer le fichier courant

Page 22: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

22

Présentation deILOG OPL Studio

BasesProjets• InformationsVisualisation dynamiqueDébugScripts

Page 23: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

23

Le projet « Car Sequencing »

Choisir Open > Project dans le menu File Choisir par exemple le projet car.prj dans /usr/local/OPLSt361/examples/opl/*.prj Ce projet met en jeu deux fichiers: le modèle car.mod, et

car.dat qui contient les données Les véhicules ("cars") en production sont placées sur une chaîne

d'assemblage, et se déplacent devant les "slots" pour installer lesdifférentes options

Chaque slot" a une capacité limitée (il peut servir l parmi u"cars")

L'objectif est d'assigner les véhicules aux slots en respectant lescontraintes

Ce n’est pas un programme linéaire! Mais il est utile pourdécouvrir l’outil

Page 24: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

24

Explorer un Projet/examples/opl/car.prj

Explorer les modèles

Précompiler

Page 25: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

25

Explorer un Projet ou un Modèle Cette fenêtre permet de visualiser

les propriétés des éléments dumodèle

Type: les types déclarés Data: les structures de données Variables, constraintes, activités et

ressources

Le curseur se déplace dans lesource par click sur l'élément

Un double click affiche les détails(valeurs)

Le click droit apporte les options devisualisation dynamiques

Page 26: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

26

Double Click

Lancerd'abord

Tout fermer

Page 27: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

27

Docking Windows Ces fenêtres peuvent être :

affichées

agrandiesdéplacéesextraites cachées

Page 28: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

28

Présentation deILOG OPL Studio

BasesProjetsInformations• Visualisation dynamiqueDébugScripts

Page 29: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

29

Visualisation dynamique

Entrer le modèle suivant Ce programme classique tente de placer (sans succès) N

pigeons dans N-1 boites "onValue" est nécessaire pour la visualisation dynamique

Page 30: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

30

Visualisation dynamique

Afficher le modèle Click droit sur la variable appelée « pigeons » Choisir "display domain » Activer les mode débug « Stepping in Model » et

« Display Search Tree » Run

Page 31: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

31

Visualisation dynamique

Page 32: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

32

Visualisation dynamique

La visualisationdynamique ne marcheque pour les programmesénumérés par Solver

Cela ne fonctionne pasquand le programme estlinéaire et que la MIPCPLEX est utilisée

Ce choix d'algorithme estoffert dans le menuOptions > Customize

Page 33: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

33

Présentation deILOG OPL Studio

BasesProjetsInformationsVisualisation dynamique• DébugScripts

Page 34: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

34

Erreurs Détectées par OPL

Syntaxe Exemple: oubli du ';' après une instruction

Sémantique Exemple: erreur de nom Exemple: erreur de type

Exécution Liste d'initialisation trop longue par exemple

Page 35: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

35

Accès direct à l'Erreur

OPL Studio éclaire en rouge la portion du code sourceerronée

Dans la fenêtre de message, le token erroné estmentionné, suivi d'une liste de complétions attendues parla grammaire

Tester: insérer une erreur de syntaxe ou de sémantiquedans le modèle car.mod

Page 36: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

36

Exemple

Page 37: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

37

Erreurs d'Exécution

OPL fournit le numéro de la ligne en erreur

Ouvrir car.dat :

Dans car.dat changer la ligne demand = [1, 1, 2, 2, 2, 2]; en demand = [1, 1, 2, 2, 2, 2, 8];

Run

Page 38: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

38

Erreurs d'Exécution

Page 39: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

39

Erreurs NON Détectées par OPL

Un programme qui s'ecécute normalement peut malgrétout être erronné

Si les contraintes sont trop fortes, des solutionsmanquent :

Pour débugger : appliquer une solution connue en posant descontraintes une à une dans le bloc "search", et exécuter en modestep jusqu'au fail

Si les contraintes sont trop faibles, de fausses solutionssont trouvées:

Pour débugger : analyser les fausses solutions afin de trouverquelles contraintes sont fautives ou manquantes

OPL permet l'exécution step-by-step avec plusieursdegrés de finesse

Page 40: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

40

Modes Step

OPL offre quatre modes d'exécution step-by-step Menu Debug

Stepping in Script (stoppe à chaque instruction de script) Stepping in Model (mode le plus fin) Stop at Solution (utile si Options > All Solutions est sélectionné) Stop at Choice Point (stoppe aux points de choix)

Utilisé avec la visualisation dynamique, l'exécution enmode step permet de comprendre l'impact descontraintes, et l'effet de la stratégie de recherche

Tester avec votre programme de pigeons

Page 41: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

41

Pendant la recherche, les icônes suivantes sont actives:

(abort) stoppe pendant l'exécution

(next) avance à la solution suivante, ou au step suivant

(proceed) liste les solutions restantes

(stop) retourne en mode édition

(step out) sort du bloc courant dans un script

ajoute / supprime breakpoint

Contrôler l' Exécution

Page 42: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

42

Présentation deILOG OPL Studio

BasesProjetsInformationsVisualisation dynamiqueDébug• Scripts

Page 43: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

43

OPL Script

OPL offre un langage de scripts pour contrôler l'exécutionrépétée de programmes avec des données distinctes parexemple, et utiliser des entrées sorties

Page 44: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

44

Exemple : Vellino

Ouvrir examples\scripts\vellino.osc

Ce programme configure des containers (bins) pouvantcontenir différents composants selon leur type (identifiépar une couleur)

L'objectif est un remplissage optimal, étant donné unensemble initial de composants (appelé "demand")

Page 45: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

45

Le Script Vellino

Essayer de l'exécuter Egalement en mode "Debug Script"

Project

Modèle

Loop over solutions

Projet

Modèle

Boucle

Page 46: Présentation de OPL Studio Prise en main de l’outil Cours ...laurent.henocque.com/oldsite/doc/presentation OPL.pdf · 3 Préambule Ces transparents proposent une présentation

46

Conclusion

OPL permet la modélisation d'un problème en termes devariables et de contraintes

OPL utilise des algorithmes complexes pour chercher lessolutions : issus de la RO pour les problèmes linéaires,énumératifs sinon

ILOG OPL Studio est un environnement dedéveloppement intégré permettant :

la gestion de fichiers et de projets la recherche la navigation et l'exploration l'affichage dynamique le debug l'écriture de scripts beaucoup d'autres choses encore .... !!!!