AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1:...

32
1 1 MTH 6414 - AMPL CPLEX AMPL CPLEX 8.0 Introduction à l’utilisation de Cplex 8.0 avec l’interface DOS

Transcript of AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1:...

Page 1: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

1

1

MTH 6414 - AMPL CPLEX

AMPL CPLEX 8.0

Introduction à l’utilisation de Cplex 8.0avec l’interface DOS

Page 2: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

2

2

MTH 6414 - AMPL CPLEX

CPLEX 8.0

• ILOG CPLEX est un logiciel d’optimisation robuste et puissant qui permet de résoudre des problèmes linéaires, en nombres entiers ou quadratiques.

Page 3: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

3

3

MTH 6414 - AMPL CPLEX

Spécifier les instructions à CPLEX

• Spécifier CPLEX comme solver:• option solver cplex;

• Spécifier les option de CPLEX• option cplex_options ‘options de résolutions’;• Ex: option cplex_options ‘ crash=0 dual \

feasibility=1.0e-8 scales=1’;

Les options sont obligatoirement entre guillemets, séparées par un espace et les lignes coupées par des \..

Page 4: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

4

4

MTH 6414 - AMPL CPLEX

Problèmes traités par CPLEX

• CPLEX est conçu pour résoudre :– Des problèmes linéaires– Des problèmes en nombres entiers – Des problèmes de réseaux – Des problèmes quadratiques

Voir: AMPL: A Modeling Language for MathematicalProgramming

Page 5: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

5

5

MTH 6414 - AMPL CPLEX

Problèmes traités par CPLEX

• Programmes à termes linéaires par morceaux :– Tous les termes linéaires par morceaux doivent

être convexes dans le cas de minimisation.– Tous les termes linéaires par morceaux doivent

être concaves dans le cas de maximisation.– Tous les termes linéaires par morceaux dans les

contraintes doivent être convexes et à droite de contraintes ≤ ou sinon concaves et à droite de contraintes ≥.

Si les conditions ne sont pas respectées, le problème est converti en un problème en nombres entiers. AMPL effectue la conversion automatiquement, fait la résolution à l’aide de CPLEX et reconvertit la solution dans les variables définies par l’usager. La conversion a pour effet d’ajouter des variables qui correspondent à chaque morceau linéaire.

Page 6: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

6

6

MTH 6414 - AMPL CPLEX

Problèmes traités par CPLEX

• Problèmes quadratiques :minimize ½ xT Q x + cT xsubject to A x ~ b

l ≤ x ≤ u

Q est une matrice des termes quadratiques

Qii: coefficients des termes xi2

Qij Qji: coefficient des termes xixj

CPLEX peut résoudre les problèmes quadratique à l’aide d’un algorithme de Barrier si le problème respecte les conditions suivantes:

1. Toutes les contraintes doivent être linéaires2. L’objectif doit être une somme de termes qui sont soit une expression linéaire

ou un produit de deux expressions linéaires3. Pour toutes les valeurs des variables, la partie quadratique de l’objectif doit

avoir une valeur non négative (si l’on minimise) ou une valeur non positive ( si l’on maximise)

Page 7: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

7

7

MTH 6414 - AMPL CPLEX

Programmation linéaire avec CPLEX

Page 8: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

8

8

MTH 6414 - AMPL CPLEX

Algorithmes de PL de CPLEX

• Algorithme du simplexe primal• Algorithme du simplexe dual• Algorithme du simplexe pour réseaux• Algorithme de Barrier (points intérieurs)

primal-dual

Page 9: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

9

9

MTH 6414 - AMPL CPLEX

Sélection de l’algorithme LP

Choix de la formulation utilisée.

dualtresh=i (defaut 32000)primaldual

Lorsque le nombre de contraintes est plus élevé que le nombre de variables dans le problème primal, le problème dual a une matrice de base plus petite et CPLEX résout le problème plus rapidement.

Les options primal et dual force la formulation du problème.L’option dualtresh fait le choix de la formulation dual si le nombre de contraintes excède le nombre de variables par i.

Page 10: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

10

10

MTH 6414 - AMPL CPLEX

Sélection de l’algorithme LP

CPLEX utilise l’algorithme du simplexe dual par défaut

primaloptdualoptbaroptnetopt=i (defaut 1)relax

La sélection de l’algorithme de résolution n’est pas influencée par la sélection de la formulation vue précédemment.

CPLEX utilise dualopt par défaut.

La résolution netopt utilise des routine du simplexe pour les contraintes de « réseaux purs »

0: n’utilise pas l’algorithme1: identification automatique2: force l’utilisation pour toutes les contraintes

L’option relax ignore les contraintes d’intégralité des variables.

Page 11: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

11

11

MTH 6414 - AMPL CPLEX

Prétraitement

Le prétraitement tend à réduire le nombre d’itérations nécessaires

aggregate=i1 (défaut 1)aggfill=i2 (défaut 10)dependency=i3 (défaut 0)

Lorsque aggregate=1, CPLEX cherche les contraintes qui définissent une variable x en termes d’autres variables.Ex: x = y + b

x = ∑j yj où x apparaît dans au moins i2 autres contraintes

Lorsque i1vaut:-1: nombre de passes automatique0: pas de passe1 et plus…: nombre de passe égale à i (entier)

La grandeur de i2>2 diminue généralement la taille du problème mais augmente le nombre de coefficients de contraintes différents de zéro, ce qui augmene le temps de résolution des itérations du simplexe. 10 semble un bon compromis.

L’option dependency ne recherche les lignes dépendantes de la matrice des coefficients que lorsque i3=1.

Page 12: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

12

12

MTH 6414 - AMPL CPLEX

Prétraitement

predual=i1 (défaut 0)prereduce=i2 (défaut 3)presolve=i3 (défaut 1)prestats=i4 (défaut 0)scale=i5 (défaut 0)

L’option predual décide s’il résout le problème dual ou primal selon le cas le plus rapide.i1= -1: primal

0: automatique1: dual

L’option prereduce détermine quel type de réductions seront faites.i2= 0: pas de réduction

1: primal seulement2: dual seulement3: primal et dual

L’option presolve détermine si le prétraitement est actif ou non.i3= 0: inactif

1: actif

L’option prestats détermine si on affiche ou non les statistiques de de prétraitement.i4= 0: inactif

1: actif

L’option scale permetde mettre à l’échelle la matrice des coefficients.i5= -1: inactif

0: normale1: mise à l’échelle agressive

Page 13: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

13

13

MTH 6414 - AMPL CPLEX

Contrôle de l’algo. du simplexe

Sélection de la variable à inclure dans la basepgradient=i1 (defaut 0)dgradient=i2 (defaut 0)pdswitch=i3 (defaut 0)pricing=i4 (defaut 0)

L’option pgradient choisit l’algorithme de sélection des variable entrants dans la base pour l’algorithme du simplexe primal.

i1 -1: Reduce-cost pricing (petit problème ou très dense – 20 à 30 coefficient non zéro par colonne)

0: Hybrid reduced-cost/devex pricing1: Devex pricing (problème de Phase I long)2: Steepest-edge pricing (réduit le nombre d’itération pour les problèmes très

complexes)3: Steepest-edge pricing with slack initial norms (peu d’itération ou itération rapide)4: Full reduced-cost pricing (calcule le coût réduit de toutes les variables)

L’option dgradient choisit l’algorithme de sélection des variables sortant de la base pour l’algorithme du simplexe dual.

i1 0: Détermination automatique1: Standard dual pricing2: Steepest-edge pricing3: Steepest-edge pricing in slack space4: Steepest-edge pricing with unit initial norms

L’option pdswitch élimine les perturbations lors de la résolution du simplexe primal et dual en passant de l’un à l’autre.

i3= -1: pas de switch0: automatique1: utile lorsque le cycle automatique est souvent appelé

L’option pricing contrôle la taille du sous-ensemble de variable à entrer dans la baseI4=0: automatique

>0: taille manuelle

Page 14: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

14

14

MTH 6414 - AMPL CPLEX

Contrôle de l’algo. du simplexe

Autres options :advance=i1 (défaut 1)crash=i2 (défaut 1)refactor=i3 (défaut 0)netfinf=i4 (défaut 1)

L’option advance oblige l’utilisation de base déjà existante pour débuter l’optimisation. (0/1)

L’option crash fait choisir la base initiale.i2= :-1,1 2 heuristiques de sélection

:0 ne tient pas compte de l’objectif pour choisir la base

L’option refactor détermine le nombre d’itération avant la refactorisation de la matrice de base. i3=0 est automatique.

L’option netfind contrôle l’optimiseur de réseau.i4= 1: natural scaling

2: reflective scaling3: reflective scaling and general scaling

Page 15: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

15

15

MTH 6414 - AMPL CPLEX

Contrôle de l’algo. de Barrier

baralg=i1 (défaut 0)bargrowth=r1 (défaut 1e+6)barcorr=i2 (défaut -1)barobjrange=r2 (défaut 1e+5)barstart=i3 (défaut 1)barvarup=r3 (défaut 1e+20)

L’option baralg sélectionne l’algorithme de barrière à utliser.i1= 0: sélection automatique

1: infesability-estimate start2: infeasability-constant start3: standard barrier algo.

L’option bargrowth détermine si la face optimale n’est pas limitée. Plus la valeur est élevée, moins l’algorithme aura tendance à conclure à une face non limitée.

L’option barcorr détermine s’il faut effectuer une correction de centrage. I2=-1 fait une estimation automatique du nombre de correction par itération.

L’option barobjrange détermine la valeur maximum de la fonction objectif. Permet de détecter un problème non limité.

L’option barstart contrôle le point de départ de la méthode de Barrier. Valeur possible (1,2,3,4)

L’option barvarup limite la valeur maximum de toutes les variables limitées à l’infini. Toutes valeurs inférieures à 1e+20.

Page 16: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

16

16

MTH 6414 - AMPL CPLEX

Contrôle de l’algo. de Barrier

comptol=r1 (défaut 1e-8)crossover=i1 (défaut 1)densecol=i2 (défaut 0)ordering=i3 (défaut 0)

L’option comptol spécifie la tolérance utilisée par l’algorithme de Barrier pour tester une convergence à l’optimal. r1=toute valeur plus grande que 1e-10.

L’option crossover permet de choisir l’algorithme d’initialisation du « crossovers » pour convertir la solution de Barrier en une solution de base.i1= 0: inactif

1: primal simplex2: dual simplex

L’option densecol permet de distinguer les colonne dense de la matrice des contraintes. Les colonnes denses traitées séparément permettent d’accélérer le temps de résolution. i2= 0 détermine le nombre de coefficients non nuls par colonne pour être dense. i2>0 est le nombre de coefficients non nuls par colonne pour être dense.

L’option ordering permet de choisir la méthode utilisée pour permuter les lignes de contraintes afin de réduire le remplissage du facteur de Cholesky.i3= 0: automatique

1: approximate minimum degree2: approximate minimum fill3: nested distinction

Page 17: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

17

17

MTH 6414 - AMPL CPLEX

Amélioration de la stabilité

CPLEX est très robuste et est conçu pour éviter les problèmes de blocage dus à la dégénérescence et à l’imprécision numérique.

dopertub=i1 (défaut 0)perturbation=r1 (défaut 1.0e-6)perturblimit=i2 (défaut 0)feasibility=r2 (défaut 1.0e-6)markowitz=r3 (défaut 0.01)optimality=r4 (défaut 1.0e-6)

L’option dopertub choisit la stratégie de perturbation des solution dégénérées pour éviter les blocage.i1= 0: automatique

1: perturber au commencement

L’option perturbation détermine le niveau de perturbation. Si CPLEX indique plusieurs perturbations, c’est que r1 est trop élevé.

L’option perturblimit détermine le nombre d’itérations bloquées avant de perturber le problème. i2=0 détermine automatiquement ce nombre, sinon on peut le définir manuellement.

L’option feasability permet de déterminer le niveau jusqu’où un problème linéaire peut violer les limites de ses variables. r1=[1e-9 - 0.1] Si r1 est trop petit, CPLEX retourne de fausses infaisabilités.

L’option markowitz influence l’ordre d’élimination des variables lors de la factorisation de la base. r2=[0.0001 – 0.9999]

L’option optimality permet de définir la tolérance à laquelle la solution doit se trouver pour conclure à l’optimalité.

Page 18: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

18

18

MTH 6414 - AMPL CPLEX

Arrêt et départ des procédures

Normalement CPLEX itère jusqu’à l’optimalité.« CTRL-C » arrêt manueltimelimit=r1 (défaut 1.0e+75)lpiterlimit=i1 (défaut 2.1 e+9 ou plus)bariterlimit=i2 (défaut automatique)lowerobj=r2 (défaut -1.0e+75)upperobj=r3 (défaut +1.0e+75)singularity=i3 (défaut 10)

Lorsque CPLEX arrête avant d’avoir trouver la solution optimale, il retourne la meilleure solution trouvée.

L’option timelimit détermine le temps maximal en secondes durant lequel CPLEX doit itérer.

L’option lpiterlimit détermine le nombre maximal d’itération du simplexe que CPLEX exécute avant d’arrêter.

L’option bariterlimit détermine le nombre maximal d’itération de la méthode de Barrier que CPLEX exécute avant d’arrêter.

Les option lowerobj et upperobj limite la valeur que peut prendre la fonction objectif.

L’option singularity limite le nombre de fois que CPLEX réparera la matrice de base lors de singularité.

Page 19: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

19

19

MTH 6414 - AMPL CPLEX

Contrôle de l’affichage

Solve > filenamelpdisplay=i1 (défaut 0)bardisplay=i2 (défaut 0)timing=i3 (défaut 0)version

La commande solve retourne quelques lignes sur les performance de CPLEX. Ces lignes peuvent peuvent être sauvées dans un fichier ascii.

L’option lpdisplay permet d’afficher les information sur l’algorithme du simplexe.i1= 0: minimal

1: information critique (refactorisation, infaisabilité, information sur les réseaux)2: affiche chaque itération

L’option bardisplay permet d’afficher les informations sur l’algorithme de Barrieri2= 0: minimal

1: infaisabilité, objectif primal et dual, nombre d’itérations2: information supplémentaire

L’option timing permet d’afficher le temps de résolution nécessairei3= 0: aucune

1: temps standard2: erreur standard3: 1 et 2

L’option version permet d’afficher la version de CPLEX utilisée.

Page 20: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

20

20

MTH 6414 - AMPL CPLEX

Programmationen nombres entiers avec

CPLEX

Page 21: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

21

21

MTH 6414 - AMPL CPLEX

Prétraitement

Coupes disponibles:cliquecuts=i1 (défaut 0)covercuts=i2 (défaut 0)disjcuts=i3 (défaut 0)flowcuts=i4 (défaut 0)flowpathcuts=i5 (défaut 0)fraccuts=i6 (défaut 0)gubcuts=i7 (défaut 0)impliedcuts=i8 (défaut 0)mircuts=i9 (défaut 0)

Le temps de résolution des programmes en nombres entiers peut souvent être amélioré par l’utilisation de nouvelles contraintes (ou coupes) basés sur des propriétés polyédriques. Ces contraintes réduisent le sous-ensemble de solutions possibles en réduisant le nombre de variables fractionnelles à choisir quand CPLEX requière la sélection d’une variable de branchement.ix= -1: off

0: mode automatique1: mode modéré2: mode agressif

Page 22: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

22

22

MTH 6414 - AMPL CPLEX

Prétraitement

aggcutlim=i1 (défaut 3)boundstr=i2 (défaut -1)coeffreduce=i3 (défaut 2)cutpass=i4 (défaut 0)cutsfactor=r1 (défaut 4.0)fraccand=i5 (défaut 200)fracpass=i6 (défaut 0)

L’option aggcut permet de contrôler le nombre de contraintes qui peuvent être agrégées pour générer des coupes «flow cover» et «mixed integer rounding». Si zéros, aucune agrégation.

L’option boundstr ressert les limites des variables des MIP. Cette option permet à CPLEX de fixer et retirer une variable du problème durant le branchement.i2= -1: automatique

0: off1: on

L’option coeffreduce permet de réduire le temps de résolution des sous-problèmes LP lors de la génération de l’arbre. Cependant cela peut rendre les problèmes plus complexes. i3= 0: off

1: réduit seulement les coefficient à des valeurs entières2: réduction lorsque possible

L’option cutpass permet de définir le nombre de passes que CPLEX effectue pour générer les coupes.i4= -1: off

0: automatique>0: nombre de passe

L’option cutsfactor permet de contrôler le nombre de coupes additionnelles générées par CPLEX. CPLEX ne génère pas plus que r1 fois le nombre de lignes.

L’option fraccand limite le nombre de variables candidates que CPLEX examine pour générer les coupes.

L’option fracpass contrôle le nombre de passes de CPLEX quand il génère les coupes fractionnelles sur les modèle MIP. 0 est un mode automatique.

Page 23: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

23

23

MTH 6414 - AMPL CPLEX

Prétraitement

mipstartstatus=i1 (défaut 1)mipstartvalue=i2 (défaut 1)prerelax=i3 (défaut 0)presolvenode=i4 (défaut 0)probe=i5 (défaut 0)

L’option mipstartstatus indique à CPLEX comment utiliser les solution MIP existantes. i1=0 indique d’ignorer ces solutions.

L’option mipstartvalue indique à CPLEX de vérifier si la solution en nombres entiers est faisable avant d’optimiser. Si la solution est faisable alors l’objectif est utilisé comme cutoff lors du branchement. i2=0 ignore ces valeurs.

L’option prerelax appelle la fonction presolve de CPLEX pour le PL associé avec la relaxation du MIP. i3= actif.

L’option presolvenode détermine comment CPLEX applique le prétraitement au PL du sousproblème des nœud de l’arbre.i4= -1: inactif

0: automatique1: prétraitement forcé

L’option probe contrôle s’il faut effectuer un sondage avant d’effectuer la résolution MIP. Cette fonction peut réduire de façon importante la taille du MIP mais prendre plus de temps.i5= -1: off

0: automatique1,2,3: niveau de sondage

Page 24: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

24

24

MTH 6414 - AMPL CPLEX

Contrôle de l’algorithme

CPLEX utilise des réglages par défaut permettant de résoudre une grande variété de MIP efficacement. Changer les options peut permettre de réduire le temps de résolution.

backtrack=r1 (défaut 0.01)bbinterval=i1 (défaut 7)nodeselect=i2 (défaut 1)branch=i3 (défaut 0)heuristicfreq=i4 (défaut 0)

L’option backtrack compare la valeur de la solution d’un nœud avec celle du nœud parent et détermine s’il faut aller plus profondément dans l’arbre ou s’il est mieux de changer de nœud parent. La valeur de r1 est entre 0 et 1. Lorsque r1 tend vers 0, l’exploration est de type «breadthfirst» et de type «deepth first» lorsque r tend vers 1.

L’option nodeselect défini le critère utilisé pour choisir le prochain nœud à évaluer lors d’un backtrack.i2= 0: recherche deepth first

1: la valeur du nœud est la limite de l’optimal en nombres entiers du sous problème du PL.

2-3: la valeur du nœud est un estimé du meilleur objectif qui peut être obtenu en branchant à partir du nœud (pseudocost)

L’option bbinterval utilisée avec la meilleure estimation de sélection de nœud i2=2 contrôle l’intervalle pour choisir la meilleure limite du nœud. Réduire lorsque l’estimation trouve une bonne solution mais progresse lentement, augmenter lorsque l’estimation ne trouve pas de meilleure solution entière.

L’option branch détermine la direction que CPLEX utilise pour le branchement sur les variables fractionnelles. i3= -1: down branching

0: automatique1: up branching

L’option heuristicfre détermine la fréquence à laquelle une heuristique d’arrondissement à d’autre nœud que le nœud de base. Permet de trouver des solutions qui seraient ignorées autrement.i4= -1: heuristique inactif

0: automatique>0: fréquence spécifiée

Page 25: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

25

25

MTH 6414 - AMPL CPLEX

Contrôle de l’algorithme

mipalgorithm=i (défaut 2)0: Simplexe dual pour nb d’itérations limité puis

Simplexe primal1: Simplexe primal2: Simplexe dual, Simplexe primal si dual échoue3: Network sur la partie réseau puis Simplexe dual 4: Algo. de Barrier5: Simplexe dual pour nb itérations limité puis Barrier6: Algo. Barrier sans «crossover»

L’option mipalgoritm détermine l’algorithme utilisé par CPLEX pour résoudre le sous-problème à chaque nœud.

Page 26: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

26

26

MTH 6414 - AMPL CPLEX

Contrôle de l’algorithme

mipcrossover=i1 (défaut 1)mipemphasis=i2 (défaut 0)ordertype=i3 (défaut 0)

L’option mipcrossover détermine l’algorithme utilisé pour le crossover de la méthode de Barrier.i1= 1: Primal simplex

2: Dual simplex

L’option mipemphasis détermine si CPLEX recherche premièrement une solution optimale ou une bonne solution rapidement.i2= 0: optimal

1: bonne solution

L’option ordertype détermine l’ordre de priorité de sélection des variables de branchement.i3= 0: inactif

1: variables avec grand coût premièrement2: variables avec petit coût premièrement3: améliore les problèmes de recouvrement

Page 27: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

27

27

MTH 6414 - AMPL CPLEX

Contrôle de l’algorithme

startalgorithm=i (défaut 2)1: Simplexe primal2: Simplexe dual 3: Network-simplex puis Simplexe dual 4: Algo. de Barrier5: Simplexe dual pour nb itération limité puis

algo. de Barrier6: Algo. de Barrier sans crossover

L’option startalgorithm permet de choisir l’algorithme de résolution de la relaxation du PL initial.

Page 28: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

28

28

MTH 6414 - AMPL CPLEX

Contrôle de l’algorithme

strongcand=i1 (défaut 10)strongit=i2 (défaut 0)

varselect=i3 (défaut 0)

L’option strongcand permet de déterminer la grandeur de l’ensemble des candidats pour le branchement fort.

L’option strongit permet de limiter le nombre d’itération pour le branchement fort. i2=0 est automatique.

L’option varselect détermine comment CPLEX choisit les valeurs des variables fractionnelles.i3= -1: minimum infeasability rule, choisit la variable avec la plus petite part

fractionnelle.0: automatique1: maximum infeasability rule, choisit la variable avec la plus grande

part fractionnelle.2: pseudocost rule, estime la pire dégradation de l’objectif qui

résulterait du forçage des variables fractionnelles et l’utilise pour choisir le branchement.

3: strong branching, considère plusieurs différents branchements et choisit la variable qui donne le meilleur résultat.

Page 29: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

29

29

MTH 6414 - AMPL CPLEX

Relaxation de l’optimalité

Permet de trouver une bonne solution plutôt que l’optimalité pour les problèmes complexes

absmipgap=r1 (défaut 0.0)

| best node – best integer | < r1

mipgap=r2 (défaut 1.0e-4)

| best node – best integer | ( 1.0 + | best node | ) < r2

integrality=r3 (défaut 1.0e-5)

L’option integrality permet de considérer comme entières les variables qui ont moins de r d’écart d’une valeur entière. r doit être au moins 1e-9.

Page 30: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

30

30

MTH 6414 - AMPL CPLEX

Relaxation de l’optimalité

lowercutoff=r1 (défaut –1.0e75)uppercutoff=r2 (défaut 1.0e75)

objdifference=r3 (défaut 0.0)relobjdiff=r4 (défaut 0.0)

Les option lowercuoff et uppercutoff permettent de couper un nœud dont l’objectif du sous-problème n’est pas entre ces deux valeurs.

L’option objdifference permet, lorsque supérieur à 0, de couper les nœud qui ne permettent pas une amélioration de la solution du sous-problème d’au moins r1.

L’option relobjdiff permet, lorsque r1=0, d’ajuster la fonction objectif durant l’optimisation. Lors de maximisation, r2 fois la valeur absolue de la fonction objectif est ajouté à la meilleure solution trouvée à ce moment. Une soustraction est faite lors de minimisation. Les nœuds subséquents sont ignorés si la solution n’est pas améliorée.

Page 31: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

31

31

MTH 6414 - AMPL CPLEX

Arrêt et reprise de recherche

Arrêt de recherche :nodelim=i1 (défaut 2.1e9)solutionlim=i2 (défaut 2.1e9)timelimit=r1 (défaut 1.0e75)

Sauvegarde de l’arbre pour reprise ultérieure :endtree=f1

starttree=f2

L’option nodelim permet d’arrêter la recherche après la résolution de i1 sous problèmes linéaires.

L’option solutionlim permet d’arrêter la recherche après que i2 solutions réalisables qui satisfont les contraintes d’intégralité soient trouvées.

L’option timelimit permet d’arrêter la recherche après r1 secondes de recherche.

L’option endtree permet de sauver l’arbre de recherche dans le fichier f1.Ex: endtree=mulmip.tre

L’option starttree permet de récupérer l’arbre de recherche dans le fichier f2 afin de poursuivre la recherche.Ex: starttree=mulmip.tre

Page 32: AMPL CPLEX 8.0drmdh.free.fr/stad/cour_info/RO/RechercheOperationne/automne2004/cours... · 1: primal simplex 2: dual simplex L’option densecol permet de distinguer les colonne dense

32

32

MTH 6414 - AMPL CPLEX

Contrôle de l’affichage des données

mipinterval=i1 (défaut 1)mipdisplay=i2 (défaut 0)

0: Affichage minimal1: Affichage pour chaque solution en nombres entiers

trouvée.2: Affichage pour chaque solution en nombres entiers

trouvée et à toutes les i1 itérations.3: 2 plus les coupes et prétraitement.4: 3 plus les «root node».5: 4 plus tous les sous-problèmes.