Concert Technology + CPLEX Solver Céline Gicquel Réunion du 10 juin 2009
Modeleurs/solveurs au laboratoire Remarques Excel Faible performance Xpress-IVE Version étudiante gratuite de Xpress-MP AMPL ILOG CPLEX Solver Version 11.1 OPL Concert Technology Besoin de Visual Studio 2005 COIN-OR : projets FLOPC++ ou GAMSlink COIN-OR : projet CBC Logiciel libre Besoin de Cygwin + Visual Studio 2005
Concert Technogogy Installation : Installation Visual Studio 2005 Installation CPLEX (répertoire C:\ILOG) Vérification licence
Concert Technogogy Mise en œuvre : Création d’un projet Visual Studio 2005 Création d’un fichier source .cpp Modification des propriétés du projet pour le relier aux bibliothèques CPLEX
Concert Technogogy Mise en œuvre : Création d’un projet Visual Studio 2005 Création d’un fichier source .cpp Modification des propriétés du projet pour le relier aux bibliothèques CPLEX
Concert Technogogy Prototype de code source #include <ilcplex/ilocplex.h> void main(){ IloEnv env; IloModel model(env); IloNumVarArray x(env, 3); model.add(IloMaximize(env, x[0] + 2*x[1] + 3*x[2])); model.add( - x[0] + x[1] + x[2] <= 20); model.add( x[0] - 3 * x[1] + x[2] <= 30); IloCplex cplex(model); cplex.solve(); cout << "Z = " <<cplex.getObjValue() << endl; cout << " x0 = " <<cplex.getValue(x[0]) << endl; } // Librairies CPLEX // Environnement // Modèle // Variables // Fonction objectif // Contraintes // Résolution // Affichage résultats
Concert Technogogy Utilisation d’expressions: IloNumVarArray x (env, N+1) ; IloExpr Exemple(env); for (i=0; i<N+1; i++) { Exemple += A[i]*x[i]; } model.add(Exemple<=B); Pour écrire la contrainte Tableau de variables à plusieurs dimensions IloNumVarArray2 x (env, N+1) ; for (i= 0; i <N+1; i++) { x[i]=IloNumVarArray(env,T+1); } Pour définir des variables
ILOG CPLEX Solver Résolution de programmes linéaires Algorithmes : Dual simplex, primal simplex Network optimizer … « Warm start », utilisation d’une base avancée Problèmes numériques Paramètres avec des ordres de grandeurs très différents
ILOG CPLEX Solver Résolution de programmes linéaires mixtes Déclaration des variables en ILOBOOL ou ILOINT Algorithme : Branch & Bound Paramètrage : Stratégie d’exploration de l’arbre de recherche Génération automatique de coupes génériques Possibilité de fournir une solution réalisable connue Possibilité de définir une priorité pour le branchement sur les variables entières Possibilité de définir des coupes « utilisateur »
ILOG CPLEX Solver Résolution de programmes quadratiques Fonction objectif quadratique Contraintes quadratiques Propriétés de convexité nécessaires