Installation, Configuration et Démarrage
IBM Ilog Optimization Studio
- Introduction
- Installation
- Configuration sous Windows
- Configuration sous Linux
- Tester l’installation
- Démarrer
Introduction
Même un défenseur du logiciel libre doit l’admettre, Il n’existe aucune alternative libre aussi complète que la suite IBM Ilog Optimization Studio. La suite comprend plusieurs solveurs :
- Programmation linéaire (
cplex
) - Programmation Quadratique
- Programmation Par contraintes (
cpoptimizer
) - Ordonnancement sous contraintes (
scheduler
)
Vous pouvez appeler ces solveurs depuis plusieurs langages de programmation Java/C/C++/C#/python. Dans les cours et les TPs, nous utiliserons plutôt le langage OPL
, un langage de modélisation de haut niveau. Ce langage a une syntaxe déclarative proche de la formulation mathématique des modèles. Ilog propose un IDE basé sur Eclipse pour le langage OPL.
Installation
Dans le cas général, vous devez vous inscrire (ou votre professeur) sur le site de l’initiative académique, puis télécharger la version correspondant à votre système d’installation. Pour les étudiants unice, vous pouvez me demander l’installateur.
Attention, la version mac n’embarque pas l’IDE !
Bloqué ici ? voici un catalogue de solveurs libres ou propriétaires.
Configuration sous Windows
À une époque, L’IDE ne marchait pas avec les version de Windows supérieures à 8. Il fallait utiliser le mode de compatibilité.
- Clic droit sur l’icône d’OPLIDE -> choisir « Propriété ».
- Cocher le mode compatibilité et sélectionner Windows 7.
Configuration sous Linux
Pour information, j’ai installé OPLStudio dans /opt
.
- Ajout des exécutables au
PATH
. Je crée un lien symbolique pour lancer l’IDE.cd /usr/local/bin/ sudo ln -s /opt/ibm/ILOG/CPLEX_Studio128/opl/oplide/oplide .
- Création du script local
oplrun
dansusr/local/bin
. La manipulation précédente ne marche pour les outils en ligne de commande (oplrun
etoplrunjava
) à cause d’une sombre histoire deLD_LIBRARY_PATH
. Il faudra refaire la même chose pouroplrunjava
.#!/bin/sh export LD_LIBRARY_PATH=/opt/ibm/ILOG/CPLEX_Studio128/opl/bin/x86-64_linux:$LD_LIBRARY_PATH /opt/ibm/ILOG/CPLEX_Studio128/opl/bin/x86-64_linux/oplrun $*
- Modification d’oplide.ini.
Par défaut, l’IDE insère votre nom d’utilisateur dans les fichiers de modèle et de données. Pour changer ce comportement, ajouter la ligne
-Duser.name=<mon nom>
dans/opt/ibm/ILOG/CPLEX_Studio128/opl/oplide/oplide.ini
- Création d’un lanceur dans le menu applications :
/usr/share/applications/oplide.desktop
.[Desktop Entry] Name=OPL IDE Type=Application Exec=/opt/ibm/ILOG/CPLEX_Studio128/opl/oplide/oplide Terminal=false Icon=/opt/ibm/ILOG/icon-oplide.png Comment=Integrated Development Environment NoDisplay=false Categories=Development;IDE Name[en]=oplide.desktop
- il faut télécharger cette icône créée par Daniel Diaz dans le répertoire
/opt/ibm/ILOG/
pour le lanceur.
Tester l’installation
- Pour tester l’IDE, taper simplement
oplide
dans un terminal.- Importer un des exemples OPL
- Exécuter une des configurations d’exécution
- Pour tester la ligne de commandes :
cd /opt/ibm/ILOG/CPLEX_Studio128/opl/examples/opl/ oplrun -p knapsack ## ou encore cd knapsack oplrun knapsack.mod knapsack.dat
Démarrer
Vous pouvez accéder à la documentation et aux exemples directement depuis l’IDE.
- La racine de la documentation est
/opt/ibm/ILOG/CPLEX_Studio128/doc/html/en-US/documentation.hml
. - La racine des exemples OPL est
/opt/ibm/ILOG/CPLEX_Studio128/opl/examples
.
Dans un premier temps, je vous invite à parcourir les sections suivantes de la documentation :
- Getting Started with the IDE
- A quick start to CPLEX Studio
- OPL: Language and Interfaces Examples
- OPL model library
Production Problem
Pour ceux qui aiment plonger directement dans le grand bain, commencez par le TP gracieusement proposé par IBM à partir de la page 26. Nous allons écrire quatre modèles OPL différents pour ce problème afin d’introduire progressivement les concepts (variables, internal/external data) et structures de données (arrays, sets, tuples). Pour chaque modèle, un exemple simple présente les éléments de syntaxe nécessaires.
- Écrire un modèle dans un seul fichier .mod file utilisant deux variables de décision.
dvar int+ x;
dvar int+ y;
minimize x + y;
subject to {
2*x + 3*y >= 5;
}
- Écrire un deuxième modèle utilisant un fichier .mod et un fichier .dat pour séparer le modèle des données.
dvar int+ x;
dvar int+ y;
int ax = ...;
int ay = ...;
int b = ...;
minimize x + y;
subject to {
ax*x + ay*y >= b;
}
- Écrire un troisième modèle utilisant des tableaux, sommes, et boucles. Chercher dans la documentation la syntaxe des boucles forall.
int n = ...;
range N = 1..n;
dvar int+ x[N];
int a[N] = ...;
int b = ...;
minimize sum(i in N) x[i];
subject to {
sum(i in N) a[i] * x[i] >= b;
}
- Écrire un quatrième modèle utilisant un ensemble de tuples.
tuple MyData {
int coeff;
}
{MyData} Data = ...;
dvar int+ x[Data];
int b = ...;
minimize sum(i in Data) x[i];
subject to {
sum(i in Data) i.coeff * x[i] >= b;
}
DIVERS
NEWS