slides ceplex

42
IBM ILOG-CPLEX Concert Technology for C++ users with Microsoft Visual Studio 2010 Med,bouhamed@live,fr

Upload: bouhamed-mohamed

Post on 19-Jul-2015

211 views

Category:

Documents


0 download

TRANSCRIPT

IBM ILOG-CPLEXConcert Technology for C++ users

with Microsoft Visual Studio 2010

Med,bouhamed@live,fr

Plan

[email protected]

1. Fonctionnement de C++ CPLEX 12.5

2. Installation de Microsoft Visual Studio 2010

& CPLEX 12.5

3. Création d’un projet C++ sous Microsoft

Visual Studio 2010

4. Paramétrage de CPLEX 12.5 sous Microsoft

Visual Studio 2010

5. Lecture de l’instance d’un problème

6. Variables et structures propres au modèle

7. Construction du modèle

8. Résolution du modèle avec CPLEX 12.5

9. Récupération de la solution

2

1. Fonctionnement de C++ CPLEX 12.5

[email protected] 3

InstancesLire instance

du problème

Modèle

(fichier .lp)Structures de

données

Données du problème

Variables de décision

Fichier

résultat

Construction

du modèle LP

CPLEX

Résolution

avec CPLEXRécupération

de la solution

2. Installation de M.V.S. 2010 & CPLEX 12.5

[email protected]

Installation de Microsoft Visual 2010

(1) Double cliquer

sur autorun.exe

(2) Appuyer sur

installer

4

2. Installation de M.V.S. 2010 & CPLEX 12.5

[email protected]

Installation de CPLEX 12.5

(3) Installer ce fichier si votre

système Windows est 32 bits

(3) Installer ce fichier si votre

système Windows est 64 bits

5

3. Création d’un projet C++ sous M.V.S. 2010

[email protected]

(1) Lancer M.V.S. 2010 ensuite aller au menu

Fichier Nouveau Projet

6

Création d’un projet

3. Création d’un projet C++ sous M.V.S. 2010

[email protected]

(2) Dans la fenêtre « Nouveau Projet » sélectionner

« Visual C++ » ensuite « Application Console Win32 »

(4) Préciser le

répertoire de

sauvegarde de

votre projet

ensuite appuyer

sur « OK »

(3) Préciser le

nom de votre

projet

2

1

3

4

7

Création d’un projet

3. Création d’un projet C++ sous M.V.S. 2010

[email protected]

(5) Dans la fenêtre «Assistant

Application Win32» appuyer

sur le bouton « Suivant »

(6) Ensuite, dans la nouvelle

fenêtre, cocher «Projet Vide»

puis appuyer sur le bouton

«Terminer»

8

1

2

Création d’un projet

3. Création d’un projet C++ sous M.V.S. 2010

[email protected]

(7) Afin de créer un fichier

source (exemple

"main.cpp« ), cliquer par le

bouton droit sur votre projet,

ensuite « Ajouter », ensuite

« Nouvel élément »

2

1

3

9

Création d’un fichier

code source C++

3. Création d’un projet C++ sous M.V.S. 2010

[email protected]

(8) Sélectionner « Fichier

C++ »

(9) Préciser le nom de

votre fichier source

ensuite appuyer sur

« Ajouter »2

1

3

10

Création d’un fichier

code source C++

3. Création d’un projet C++ sous M.V.S. 2010

[email protected]

(10) Cliquer sue Win32 en

suite «Gestionnaire de

Configuration»

Effectuer les étapes 10, 11 et 12

uniquement si votre Windows est en 64bits

(il faut transformer votre projet en 64 bits)

11

3. Création d’un projet C++ sous M.V.S. 2010

[email protected]

(11) Dans la fenêtre

« Gestionnaire de

configuration » cliquer sur

« Win32 » ensuite

«Nouveau »

(12) Dans la fenêtre

« Nouvelle plateforme de

projet » cliquer sur

« Itanium» ensuite «X64»

puis appuyer sur « OK »

2

1

3

12

Effectuer les étapes 10, 11 et 12

uniquement si votre Windows est

en 64bits (il faut transformer votre

projet en 64 bits)

3. Création d’un projet C++ sous M.V.S. 2010

[email protected]

Fichier code source C++

Edition du code source C++

Enfin vous aurez votre projet crée pour

éditer votre code source

X64 si votre Windows est en

64 bits

13

4. Paramétrage de CPLEX 12.5 sous M.V.S. 2010

[email protected] 14

Pour accéder au paramétrage

CPLEX avec le projet C++

crée, cliquer par le bouton

droit sur le nom du projet

ensuite « Propriétés »

2

1

4. Paramétrage de CPLEX 12.5 sous M.V.S. 2010

[email protected] 15

(1) Dans la page de

propriétés du projet,

cliquer sur « C/C++ »,

ensuite « Général ».

2

1

(2) Dans « Autres répertoires

Include », appuyer sur

« Modifier »

3

Désignation des chemins « Include »

4. Paramétrage de CPLEX 12.5 sous M.V.S. 2010

[email protected] 16

1

(3) Dans la fenêtre « Autres répertoires Include », Appuyer

sur l’icône et donner les deux chemins include de

cplex et de concert.

Vous devez avoir les deux chemins désignés dans la zone

de texte correspondante. Ensuite Apuyer sur « OK »

Désignation des chemins « Include »

2

4. Paramétrage de CPLEX 12.5 sous M.V.S. 2010

[email protected] 17

(4) Dans la page de

propriétés du projet, cliquer

sur « C/C++ », ensuite

« Préprocesseur ».

1

2

(5) Dans « Définition de

préprocesseur », appuyer sur

« Modifier »

Préprocesseur

4. Paramétrage de CPLEX 12.5 sous M.V.S. 2010

[email protected] 18

(6) Dans la fenêtre

« Définition de

préprocesseur », ajouter

dans la zone de texte les

deux lignes encadrées en

rouge. Ensuite cliquer sur

« OK ».

Préprocesseur

1

2

4. Paramétrage de CPLEX 12.5 sous M.V.S. 2010

[email protected] 19

(7) Dans la page de

propriétés du projet, cliquer

sur «Editeur de liens»,

ensuite « Général ».

2

1

(8) Dans « Répertoires des bibliothèques

supplémentaires », appuyer sur « Modifier »

3

Désignation des chemins « Include »

4. Paramétrage de CPLEX 12.5 sous M.V.S. 2010

[email protected] 20

1

(9) Dans la fenêtre « Répertoires de bibliothèques

supplémentaires », Appuyer sur l’icône et donner les

deux chemins lib de cplex et de concert.

Vous devez avoir les deux chemins désignés dans la zone

de texte correspondante. Ensuite appuyer sur « OK »

Désignation des chemins « Include »

2

4. Paramétrage de CPLEX 12.5 sous M.V.S. 2010

[email protected] 21

(10) Dans la page de

propriétés du projet, cliquer

sur « Editeur de liens »,

ensuite « Entrée ».

1

2

(11) Dans « Dépendances

supplémentaires», appuyer

sur « Modifier »

Entrées librairies (lib)

4. Paramétrage de CPLEX 12.5 sous M.V.S. 2010

[email protected] 22

(12) Dans la fenêtre

« Dépendances

supplémentaires», ajouter

dans la zone de texte les

trois lignes encadrées en

rouge. Ensuite cliquer sur

« OK ».

Entrées librairies (lib)

1

2

5. Lecture de l’instance du problème

[email protected] 23

Knapsack Problem with Setup KSP

5. Lecture de l’instance du problème

[email protected] 24

Knapsack Problem with Setup KSP

5. Lecture de l’instance du problème

[email protected] 25

Knapsack Problem with Setup KSPD

on

née

sV

aria

ble

s d

e

décis

ion

5. Lecture de l’instance du problème

[email protected] 26

Modèle du KPS

5. Lecture de l’instance du problème

[email protected] 27

Instance du KPS

test3x10-SC(0).txt

test3x10-SC(1).txt

..

..

..test3x10-SC(n).txt

5. Lecture de l’instance du problème

[email protected] 28

Structures de données pour les données du KPS

5. Lecture de l’instance du problème

[email protected] 29

Lecture d’une instance KPS

5. Lecture de l’instance du problème

[email protected] 30

Lecture d’une instance KPS

5. Lecture de l’instance du problème

[email protected] 31

Lecture d’une instance KPS

6. Variables et structures propres au modèle

[email protected] 32

Tableaux des variables de décision

IloNumVarArray : tableau des variables de décision à un seul indice

Déclaration : IloNumVarArray NOMVAR(ENV, N, BINF, BSUP, TYPE);

• NOMVAR: Nom du tableau des variables de décision

• ENV: Environnement CPLEX ouvert

• N: Taille du tableau (nombre des variable

• BINF: Borne inferieure des valeurs des variables

• BSUP: Borne supérieure des valeurs des variables

• TYPE: Type des variable des décision (Réels, Entières, Booléennes)

Déclaration : IloNumVarArray Y(env, N, 0, 1, IloNumVar::Int);

6. Variables et structures propres au modèle

[email protected] 33

Ouverture de l’environnement CPLEX

Obligatoire pour utiliser les

fonctionnalités CPLEX!

6. Variables et structures propres au modèle

[email protected] 34

Tableaux des variables de décision

typedef IloArray<IloNumVarArray> IloNumVarArray2;

IloNumVarArray2 : tableau des variables de décision à deux indices

Exemple :

Remarque : On peut définir des variables à 3, 4, 5, … indices. Il suffit de

procéder avec la même manière qu’à deux indices.

6. Variables et structures propres au modèle

[email protected] 35

Tableaux des solutions

IloNumArray : tableau où récupérer les valeurs des variables de décision à un seul

indice

Déclaration : IloNumArray NOMVAL(ENV, N);

• NOMVAL: Nom du tableau des valeurs des variables de décision

• ENV: Environnement CPLEX ouvert

• N: Taille du tableau (nombre des variable

Déclaration : IloNumArray VALX(env, N);

6. Variables et structures propres au modèle

[email protected] 36

Tableaux des solutions

typedef IloArray<IloNumArray2> IloNumArray3;

IloNumVarArray3: tableau de valeurs des variables de décision à trois indices

Remarque : On peut définir des types de tableaux de valeurs à 3, 4, 5, …

dimensions. Il suffit de procéder avec la même manière qu’à trois indices.

La dimension 2 est prédéfinie pour les tableau à valeurs.

6. Variables et structures propres au modèle

[email protected] 37

Personnalisation des noms des variables

7. Création du modèle

[email protected] 38

Déclaration du modèle

Obligatoire pour construire le modèle

7. Création du modèle

[email protected] 39

Principe: Pareil pour la fonction objectif et les

contraintes (sauf pour (3))

(1) Déclaration d’une expressionIloExpr NOM(env);

(2) Construction de l’expression Concaténation des multiplications des données par les

variables de décision: NOM+=X[i]*a[i]

(3) Ajout de l’expression au modèlePour le FO: model.add(IloMaximize(env, NOM));

Pour les conbtraintes: model.add(NOM <= CTE);

(4) Ecriture du fichier ".lp"IloCplex cplex (model);

cplex.exportModel("ksp.lp");

8. Résolution du modèle avec CPLEX 12.5

[email protected] 40

9. Récupération de la solution

[email protected] 41