SlideShare a Scribd company logo
1 of 2
Download to read offline
Université Abdelhamid Ibn Badis - Mostaganem 2022/2023
1ère
années Master ISI/ReSys Matière : Recherche Opérationnelle
. 1/2 N.Bahnes
dvar float x1;
dvar float x2;
maximize 60*x1+40*x2;
subject to {
x1+2*x2<=70;
x1+x2<=40;
3*x1+x2<=90;
}
Fiche TP 1
Présentation de CPLEX
De nombreux logiciels d’optimisation sont disponibles sur internet et beaucoup d’entre eux
sont gratuits. Parmi ces logiciels, il y a « CPLEX » qui est l’un des plus utilisés.
Voici d’autres références gratuites de logiciels de programmation linéaire :
« IpSolve »: https://sourceforge.net/projects/lpsolve/
« LINDO »: https://www.lindo.com/
« chocoSolver » http://www.choco-solver.org/
CPLEX est un outil information d'optimisation (solveur) permettant de résoudre des
problèmes d'optimisation linéaire. Il est composé d'un exécutable (CPLEX interactif) et
d'une bibliothèque de fonctions pouvant s'interfacer avec différents langages de
programmation dont les langages C, C++ et Java.
Objectif de TP
Ce TP a pour objectif de vous faire appréhender la résolution de programmes linéaires (PL) à
l’aide de CPLEX sous l’environnement Java et de mieux comprendre la méthode du simplexe.
Prérequis
 Connaissances de bases en langage Java et de l’environnement EDI Java (eclipse,
Netbeans...).
 Connaissances de bases de la structure d’un problème de modèle linéaire.
Travail demandé
1.Utiliser «CPLEX via IDE Cplex Studio» pour résoudre les problèmes (TP1- problèmes à modéliser).
Il consiste à créer un projet OPL dans Cplex Studio IDE qui contient au minimum un fichier
"modèle" et un fichier de "configuration d'exécution".
En effet, chaque projet est constitué de plusieurs types de fichiers :
 Un fichier modèle (.mod) qui contient le modèle à résoudre,
 Un fichier de données (.dat) (facultatif) qui contient les données pour un modèle,
 Un fichier de paramètres (.ops) (facultatif) qui permet de paramétrer le solveur CPLEX,
 Un fichier de configuration d'exécution (.oplproject) qui indique à l'IDE ce qu'il doit
faire quand l'utilisateur demande l'exécution du projet. C-à-d quel est le modèle à
résoudre et quels sont les paramètres et les données (s'il y en a).
Exemple : Résolution d’un PL avec 2variables et 3 contraintes Fichier modèle (.mod)
0
2
,
0
1
90
2
1
3
40
2
1
70
2
2
1
.
.
2
40
1
60
Z










x
x
x
x
x
x
x
x
c
s
x
x
Max
2. Préparer l’environnement de développement :
Université Abdelhamid Ibn Badis - Mostaganem 2022/2023
1ère
années Master ISI/ReSys Matière : Recherche Opérationnelle
. 2/2 N.Bahnes
 En installant l’EDI « eclipse » que vous allez utiliser ainsi que le JDK s’ils ne sont
pas déjà installés.
 En installant le logiciel « CPLEX optimizer » s’il n’est pas installé.
 Configurer la bibliothèque « cplex.jar ».
3.En important ‘ ilog.concert.*’ et ‘ilog.cplex.*’, Ecrire les programmes Java qui
résolvent les problèmes (TP1- problèmes à modéliser).
exoTP.java
F
CCCHH
import ilog.concert.*;
import ilog.cplex.*;
public class exoTP {
public static void main(String[] args) {
calcul ();
}
public static void calcul (){
try {
IloCplex simplexe = new IloCplex ();
// déclaration des Variables de décision de type reel
IloNumVar var_decis [][] = new IloNumVar [2][1];
for (int i=0;i<2;i++){
var_decis[i][0]= simplexe.numVar(0, Double.MAX_VALUE);
}
// declaration de la fonction objectif
IloLinearNumExpr objectif = simplexe.linearNumExpr();
// Définition des coefficients de la fonction objectif
objectif.addTerm(60, var_decis[0][0]);
objectif.addTerm(40, var_decis[1][0]);
// Définir le type d'otimisation de la fonction (max ou min )
simplexe.addMaximize(objectif);
// contrainte 1 : 1*X1 + 2*X2 <= 70
IloLinearNumExpr contrainte_1 = simplexe.linearNumExpr();
contrainte_1.addTerm(1, var_decis[0][0]);
contrainte_1.addTerm(2, var_decis[1][0]);
simplexe.addLe(contrainte_1, 70);
// la meme chose pour les autres contraintes
//deuxième contrainte
IloLinearNumExpr contrainte_2 = simplexe.linearNumExpr();
contrainte_2.addTerm(1, var_decis[0][0]);
contrainte_2.addTerm(1, var_decis[1][0]);
simplexe.addLe(contrainte_2, 40);
//troisième contrainte
IloLinearNumExpr contrainte_3 = simplexe.linearNumExpr();
contrainte_3.addTerm(3, var_decis[0][0]);
contrainte_3.addTerm(1, var_decis[1][0]);
simplexe.addLe(contrainte_3, 90);
simplexe.solve(); // lancer la resolution
// Afficher des résultat
System.out.println("Voici la valeur de la fonction objectif "+ simplexe.getObjValue());
System.out.println(" Voici les valeurs des variables de décision: ") ;
for (int i=0;i<2;i++)
System.out.println( "X"+i+ " = "+ simplexe.getValue(var_decis[i][0]));
} catch (IloException e){
System.out.print("Exception levée " + e);
}
}
}

More Related Content

Similar to TP1_RO2023 (1).pdf

Slides ceplex
Slides ceplexSlides ceplex
Slides ceplex
TECOS
 
Informix User Group France - 30/11/2010 - Optim Development Studio
Informix User Group France - 30/11/2010 - Optim Development StudioInformix User Group France - 30/11/2010 - Optim Development Studio
Informix User Group France - 30/11/2010 - Optim Development Studio
Nicolas Desachy
 
UGIF 12 2010 - informix - user group - optim dev studio 2.2.1
UGIF 12 2010 - informix - user group  - optim dev studio 2.2.1UGIF 12 2010 - informix - user group  - optim dev studio 2.2.1
UGIF 12 2010 - informix - user group - optim dev studio 2.2.1
UGIF
 
Cours android
Cours androidCours android
Cours android
Ad Hafsa
 

Similar to TP1_RO2023 (1).pdf (20)

Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Cours de C++, en français, 2002 - Cours 3.1
Cours de C++, en français, 2002 - Cours 3.1Cours de C++, en français, 2002 - Cours 3.1
Cours de C++, en français, 2002 - Cours 3.1
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
openFrameworks
openFrameworksopenFrameworks
openFrameworks
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En Java
 
Windev
WindevWindev
Windev
 
1_IntroductionInformatique.pdf
1_IntroductionInformatique.pdf1_IntroductionInformatique.pdf
1_IntroductionInformatique.pdf
 
Meetup sencha
Meetup senchaMeetup sencha
Meetup sencha
 
Slides ceplex
Slides ceplexSlides ceplex
Slides ceplex
 
Chap android
Chap androidChap android
Chap android
 
CV_Bilel CHAOUADI
CV_Bilel CHAOUADICV_Bilel CHAOUADI
CV_Bilel CHAOUADI
 
Serveur node red
Serveur node redServeur node red
Serveur node red
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 
Eclipse Impress
Eclipse ImpressEclipse Impress
Eclipse Impress
 
Tp1 - Eclipse
Tp1 - EclipseTp1 - Eclipse
Tp1 - Eclipse
 
Informix User Group France - 30/11/2010 - Optim Development Studio
Informix User Group France - 30/11/2010 - Optim Development StudioInformix User Group France - 30/11/2010 - Optim Development Studio
Informix User Group France - 30/11/2010 - Optim Development Studio
 
UGIF 12 2010 - informix - user group - optim dev studio 2.2.1
UGIF 12 2010 - informix - user group  - optim dev studio 2.2.1UGIF 12 2010 - informix - user group  - optim dev studio 2.2.1
UGIF 12 2010 - informix - user group - optim dev studio 2.2.1
 
Cours android
Cours androidCours android
Cours android
 
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
 
React xp
React xpReact xp
React xp
 

TP1_RO2023 (1).pdf

  • 1. Université Abdelhamid Ibn Badis - Mostaganem 2022/2023 1ère années Master ISI/ReSys Matière : Recherche Opérationnelle . 1/2 N.Bahnes dvar float x1; dvar float x2; maximize 60*x1+40*x2; subject to { x1+2*x2<=70; x1+x2<=40; 3*x1+x2<=90; } Fiche TP 1 Présentation de CPLEX De nombreux logiciels d’optimisation sont disponibles sur internet et beaucoup d’entre eux sont gratuits. Parmi ces logiciels, il y a « CPLEX » qui est l’un des plus utilisés. Voici d’autres références gratuites de logiciels de programmation linéaire : « IpSolve »: https://sourceforge.net/projects/lpsolve/ « LINDO »: https://www.lindo.com/ « chocoSolver » http://www.choco-solver.org/ CPLEX est un outil information d'optimisation (solveur) permettant de résoudre des problèmes d'optimisation linéaire. Il est composé d'un exécutable (CPLEX interactif) et d'une bibliothèque de fonctions pouvant s'interfacer avec différents langages de programmation dont les langages C, C++ et Java. Objectif de TP Ce TP a pour objectif de vous faire appréhender la résolution de programmes linéaires (PL) à l’aide de CPLEX sous l’environnement Java et de mieux comprendre la méthode du simplexe. Prérequis  Connaissances de bases en langage Java et de l’environnement EDI Java (eclipse, Netbeans...).  Connaissances de bases de la structure d’un problème de modèle linéaire. Travail demandé 1.Utiliser «CPLEX via IDE Cplex Studio» pour résoudre les problèmes (TP1- problèmes à modéliser). Il consiste à créer un projet OPL dans Cplex Studio IDE qui contient au minimum un fichier "modèle" et un fichier de "configuration d'exécution". En effet, chaque projet est constitué de plusieurs types de fichiers :  Un fichier modèle (.mod) qui contient le modèle à résoudre,  Un fichier de données (.dat) (facultatif) qui contient les données pour un modèle,  Un fichier de paramètres (.ops) (facultatif) qui permet de paramétrer le solveur CPLEX,  Un fichier de configuration d'exécution (.oplproject) qui indique à l'IDE ce qu'il doit faire quand l'utilisateur demande l'exécution du projet. C-à-d quel est le modèle à résoudre et quels sont les paramètres et les données (s'il y en a). Exemple : Résolution d’un PL avec 2variables et 3 contraintes Fichier modèle (.mod) 0 2 , 0 1 90 2 1 3 40 2 1 70 2 2 1 . . 2 40 1 60 Z           x x x x x x x x c s x x Max 2. Préparer l’environnement de développement :
  • 2. Université Abdelhamid Ibn Badis - Mostaganem 2022/2023 1ère années Master ISI/ReSys Matière : Recherche Opérationnelle . 2/2 N.Bahnes  En installant l’EDI « eclipse » que vous allez utiliser ainsi que le JDK s’ils ne sont pas déjà installés.  En installant le logiciel « CPLEX optimizer » s’il n’est pas installé.  Configurer la bibliothèque « cplex.jar ». 3.En important ‘ ilog.concert.*’ et ‘ilog.cplex.*’, Ecrire les programmes Java qui résolvent les problèmes (TP1- problèmes à modéliser). exoTP.java F CCCHH import ilog.concert.*; import ilog.cplex.*; public class exoTP { public static void main(String[] args) { calcul (); } public static void calcul (){ try { IloCplex simplexe = new IloCplex (); // déclaration des Variables de décision de type reel IloNumVar var_decis [][] = new IloNumVar [2][1]; for (int i=0;i<2;i++){ var_decis[i][0]= simplexe.numVar(0, Double.MAX_VALUE); } // declaration de la fonction objectif IloLinearNumExpr objectif = simplexe.linearNumExpr(); // Définition des coefficients de la fonction objectif objectif.addTerm(60, var_decis[0][0]); objectif.addTerm(40, var_decis[1][0]); // Définir le type d'otimisation de la fonction (max ou min ) simplexe.addMaximize(objectif); // contrainte 1 : 1*X1 + 2*X2 <= 70 IloLinearNumExpr contrainte_1 = simplexe.linearNumExpr(); contrainte_1.addTerm(1, var_decis[0][0]); contrainte_1.addTerm(2, var_decis[1][0]); simplexe.addLe(contrainte_1, 70); // la meme chose pour les autres contraintes //deuxième contrainte IloLinearNumExpr contrainte_2 = simplexe.linearNumExpr(); contrainte_2.addTerm(1, var_decis[0][0]); contrainte_2.addTerm(1, var_decis[1][0]); simplexe.addLe(contrainte_2, 40); //troisième contrainte IloLinearNumExpr contrainte_3 = simplexe.linearNumExpr(); contrainte_3.addTerm(3, var_decis[0][0]); contrainte_3.addTerm(1, var_decis[1][0]); simplexe.addLe(contrainte_3, 90); simplexe.solve(); // lancer la resolution // Afficher des résultat System.out.println("Voici la valeur de la fonction objectif "+ simplexe.getObjValue()); System.out.println(" Voici les valeurs des variables de décision: ") ; for (int i=0;i<2;i++) System.out.println( "X"+i+ " = "+ simplexe.getValue(var_decis[i][0])); } catch (IloException e){ System.out.print("Exception levée " + e); } } }