101 likes | 303 Views
Concert Technology + CPLEX. Céline Gicquel Réunion du 10 juin 2009. Modeleurs/solveurs au laboratoire. Concert Technogogy. Installation : Installation Visual Studio 2005 Installation CPLEX (répertoire C:ILOG) Vérification licence. Concert Technogogy. Mise en œuvre :
E N D
Concert Technology + CPLEX Céline Gicquel Réunion du 10 juin 2009
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